본문 바로가기
모의해킹 침해대응 과정/Liunx 관리

Apache web server / day 17

by 알거음슴 2021. 4. 20.

웹서버 (web server)

웹 브라우저를 이용하여 world wide web을 사용하는 클라이언트에게 미리 저장된 하이퍼 텍스트를 제공하는 서비스를 지칭

 

용어 정리

 웹 브라우저 : web 서버들을 접속할 수 있는 프로그램.

주요 )internet explore, firefox, chrome ...

 웹 서버 : 웹서버+웹 에플리케이션을 같이 지칭하기도함, 주로 정적 서비스들을 제공함. 

주요 )Apache, IIS, Tmaxsoft webToB Nginx ...

 웹 에플리케이션 : 미들웨어, DB 와 웹 서버의 사이에 존재하는 동적 컨텐츠를 제공, was 라고 지칭됨

주요 ) Tomcat, TmaxSoft Zeus, JBOSS, Oracle

 

web server 특징

web server 장점 단점
아파치 (Apache) 오픈소스, 다양한 모듈
강력한 커뮤니티, 확장성과 보안수준 좋음
많은 기능으로 인해 느림, 오버해드가 발생
엔진엑스 (Nginx) 오픈소스, 아파치에 비해 가벼움
프록시 기능이 뛰어남

커뮤니티의 자료가 부족함확장 모듈이 아파치에 비해 적음

microsoft IIS

MS에서 지원함 ASP/MS-SQL 등과 같은 MS 서비스와 쉽게 통합됨, 간단한 GUI 지원

가격이 비쌈 ,윈도우 서버에서만 동작
아파치 & Nginx 비해 느림

현재 주 시장점유는 Apache, Nginx

 

웹 페이지 구성 

-------------------------------------------------

 program : httpd, mod_ssl

* httpd : HTTPS를 지원하는 패키지

* mod_ssl : Apache HTTPS 모듈 패키지

 Daemon & Port & Protocol : httpd, 80/tcp, 443/tcp

 configuration files : /etc/httpd/conf/httpd.conf

 Sub Configuration files: /etc/httpd/conf.d/*.conf

 service : httpd.service

-------------------------------------------------

 

[참고] 웹 페이지를 확인하는 여려방법.

 1) GUI 웹브라우저를 사용하는 방법  (EX: firefox)

 2) TUI 웹브라우저를 사용하는 방법  (EX: curl http://www.example.com)

 3) telnet 명령어를 사용하는 방법  (EX: telnet www.example.com 80 )

 

* 클라이언트 쪽에서 확인하는 방법들.

 1) ping 192.168.10.30 -c 1 

 2) nmap -p 80,443 192.168.10.30  

 3) firefox http://192.168.10.30 

 4) firefox http://www.example.com  

 

 

Apache 주요 파일 분석

 /etc/httpd/conf/httpd.conf 파일

2가지 섹션으로 구분되고 있고, 1번섹션은 전역설정(Global environment) 2번섹션은 서버 설정 이다, (server configuration) 2번섹션같은 경우 하나의 웹 서버의 대한 설정임으로 여러가지 설정이 서버마다 존재 할 수 있다.

파일들은 모두 특정 지시자들로 설정을 할 수 있다 

 * 각 섹션별 주요 지시자

(Section 1) 중요한 지시자(Directive)
ServerRoot "/etc/httpd" 서버 설정 파일의 최상위 디렉토리 (메인폴더)
Listen 80 웹서버 listen 포트 지정 (포트 추가 가능)
Include conf.modules.d/*.conf 모듈(기능) 설정 파일들 지정
User apachehttpd  데몬을 실행하는 사용자
Group apachehttpd  데몬을 실행하는 그룹
(Section 2) 중요한 지시자(Directive)
ServerAdmin root@localhost 관리자 이메일 주소 지정
ServerName www.example.com:80 웹서버 이름과 포트
DocumentRoot "/var/www/html" 웹서비스 소스 디렉토리
<Directory "/path/to/somedir"> </Directory> 서비스 디렉토리 설정
CustomLog "logs/access_log" common Log file locations and formats
Alias /user01 /home/user01/public_html 웹디렉토리 엘리어스 설정
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 스크립트 엘리어스 설정
TypesConfig /etc/mime.types MIME type definitions and handlers

 

CGI vs WAS

 CGI (Common Gateway Interface)

웹 서버와 클라이언트간에 필요한 정보교환을 가능하게 해주는 일종의 웹 인터페이스, 동적 HTML, 데이터베이스 질의 처리 등을 진행, 웹 클라이언트가 요청한 URL 주소가 웹 서버의 스크립트 또는 프로그램 참조하면 웹 서버가 이를 대신 실행시켜주고 웹 서버는 그 수행 결과를 웹 클라이언트쪽으로 응답, 전송하게 된다.

 * 주요 제작도구 -> C, Perl, Python, Shell 등

 

(WAS 사용) Client(요청) ---> 웹서버(요청) ---> WAS --> 외부 프로그램 실행(WAS에서 동작)

(CGI 사용) Client(요청) ---> 웹서버/CGI -> 외부 프로그램 실행(웹서버에서 동작)

CGI 방식은 웹서버와 외부 프고그램을 직접 연결시켜 웹서버 위에서 외부 프로그램이 실행되는 방식이고, WAS 방식은 외부 프로그램을 웹서버와 분리시키고 WAS라는 별개의 서버 위에서 실행이 된다. 즉 CGI 의 보안적인 문제를 개선해서 나온 방식이다.

 

 

웹쉘 (WebShell)

서버의 업로드 취약점을 이용하여 시스템에 며명령을 내릴 수 있는 파일입니다. 관리자의 권한을 탈취하고 사용자에게 받은 지시를 해석하여 하드웨어 지시어로 바꿈으로써 운영체제의 커널과 사용자 사이를 이어주는 것

one line webshell 

한줄 코드로 웹쉘을 띄우는 명령어

.htaccess

웹 에서 요구하는 페이지가 있을경우 반드시 인증해야 디렉토리 내 페이지를 보이게 설정할 수 있다. 역시나 httpd 설정파일 중 지시자로 관리 할 수 있다.

AllowOverride 지시자

어떻게 접근을 허락할 것인가의 대한 설정이다. 특정 디렉토리에 대한 방문자들의 접근 방식을 어떤 방식으로 인증할 것인가를 결정한다. AllowOverride 항목은 설정하는 값들을 중복하여 설정할 수 있고, 설정값은 항상 최신의 것이 우선한다.

주요 지시자

None : AccessFile의 지정된 파일을 엑세스 인증 파일로 인식하지 않는다. 제한적인 접근을 허용할때 활용

AuthCOnfig : AccessFile의 명시한 파일에 대하여 클라이언트 인증을 받아야 허용한다, 접근을 제어할때 사용하며 주로 활용된다 해당 파일내 들어가는 값으로는 몇가지가 있다.

 AuthType : 인증 타입은 Basic, Digest가 있지만현재 Basic만 지원한다.
 AuthName : 인증 영역에 대한 이름을 지정하는 지시자. 클라이언트의 웹 브라우저에 전달 되어 유저 인증 윈도우 내의 영역에 표시되며 주의할 점은 영역 이름을 기입할 때 스페이스가 들어가서는 안된다.
 AuthUserFile : 인증 사용자와 패스워드를 가진 패스워드 파일을 지정하는 지시자.
 require valid-user : 패스워드 인증이 올바르게 된 사용들만 접근을 허용한다.

* 정리하자면 설정파일내 AllowOverride 지시자를 선언 -> .htaccess 파일을 제한하길 희망하는곳에 생성 -> 파일 내 적합한 들어가는 값들을 설정 -> htpasswd -c /etc/httpd/conf/mypasswd CMD 등을 활용하여 ID 와 passwd 를 설정 -> httpd를 재기동 해주면된다.

 

 

 

 

 

[실습] 아파치 웹 구조 확인

[실습] 관리자 기본 홈페이지 구성

[실습] 웹 클라이언트 요청 툴

[실습] 사용자 기본 홈페이지 구성

[실습] 사용자 기본 홈페이지 구성 2

[실습] CGI 설정

[실습] Perl 설정 ( /var/www/perl/test.pl)

[실습] webshell

[실습] .htaccess 파일을 이용한 웹 보호

 

 

 

'모의해킹 침해대응 과정 > Liunx 관리' 카테고리의 다른 글

Mail / day 19  (0) 2021.04.21
FTP server / day18  (0) 2021.04.20
리눅스 DNS(domain name system) /day 16  (0) 2021.04.16
리눅스 방화벽(Firewalld) / day 15  (0) 2021.04.16
리눅스 SELinux /day 15  (0) 2021.04.15