웹서버 (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 지원 |
가격이 비쌈 ,윈도우 서버에서만 동작 |
현재 주 시장점유는 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 |