Information Security

36-1 WEB 본문

Linux

36-1 WEB

leeeeye321 2017. 11. 3. 02:54

WEB

웹 브라우저로부터 웹 서버에 대해 요청(request)을 하면

웹 서버는 그 요청을 처리하고 결과를 웹 브라우저에게 응답(response)한다.

 

아파치 HTTP 서버 설치

아파치 패키지 설치

 

기본 설정

웹 서버에서 중요한 관련 디렉터리 & 파일

/etc/httpd

-설정 파일이 위치하는 디렉터리

-ServerRoot 디렉터리라고 부른다.

-서버가 인식하는 최상위 디렉터리이다.

 

/etc/httpd/conf/httpd.conf

주 설정 파일

 

/etc/httpd/conf.d/*.conf

-보조 설정 파일

-주 설정 파일(conf/httpd.conf)에서 보조 설정 파일(conf.d/*.conf)을 include하고 있다.

 

/var/www/html

-DocumentRoot 디렉터리라고 부른다.

-웹 서버에서 사용할 html 파일들이 위치하는 디렉터리이다.

 

주 설정 파일 수정

-> 없던 설정은 추가하고 기존에 있는 설정은 확인하기

 

아파치 서버가 사용할 설정 파일들이 저장될 디렉터리 지정

 

네트워크 인터페이스가 여러 개 있는 경우 클라이언트가 접속할 IP 주소 지정

 

문제가 발생할 경우 아파치 서버가 이메일을 보낼 주소 입력

 

-아파치 서버가 사용할 이름과 포트 설정

-DNS 서버가 동작하지 않으면 도메인 대신 IP 주소를 입력해야 한다.

 

서버의 웹 페이지들이 위치하는 디렉터리

 

클라이언트가 웹 서버 접속 시 초기 화면으로 보여줄 파일 지정

 

-아파치 서버에서 에러가 발생했을 때 기록할 로그 파일 지정

-절대경로는 /etc/httpd/logs/error_log 

 

497에 설정되어 있는 combind 형식으로 아파치 서버의 접속 정보를 기록할 로그 파일 지정

 

아파치 서버 서비스 시작

-주 설정 파일을 저장한 후 httpd 데몬을 시작한다.

-아파치 서버 서비스 시작

 

아파치 서버의 버전 정보 확인

 

-lsof 명령어는 사용중인 파일과 프로세스의 정보를 출력한다.

-TCP 80번을 사용하는 httpd 데몬이 http 서비스를 제공하고 있음을 알 수 있다.

-DNS 서버가 동작을 잘하고 있다면 NAME 필드에 도메인 주소(www.yyy.com)가 출력된다.

 

-부모 프로세스 root 계정(PID:2169)이 자식 프로세스 8개(PPID:2169)를 생성한 것을 확인할 수 있다.

-자식 프로세스들은 모두 클라이언트의 요청을 받아서 처리한다.

-클라이언트 요청은 굉장히 많으므로 자식 프로세스도 여러 개 생성해야 한다.

 

주 설정 파일에 웹 서버 서비스가 시작되면(데몬 기동) 자식 프로세스를 몇 개 생성할 것인지 설정되어 있다. 

 

접속

-GUI 환경에서 root 계정으로 접속하고 firefox 브라우저를 실행한다.

 

-주소창에 도메인 혹은 IP 주소를 입력하여 연결을 시도한다. -> Apache 2 Test Page 출력

-이 페이지는 index.html이 아니고 주 설정 파일의  설정으로 conf.d/welcome.conf 파일에 명시된 ErrorDocument 403 /error/noindex.html 설정으로 인하여 출력된 화면이다.

 

-보조 설정 파일 목록 확인

 

-welcome.conf 파일의 내용 확인

-ErrorDocument 403 /error/noindex.html 설정 확인

-> 403 에러 발생시 /error/noindex.html 파일을 실행한다.

 

/var/www/error/noindex.html 파일 확인

 

파일 내용을 보면

 

이 화면이 html 언어로 작성되어 있는 것을 확인할 수 있다.

 

-이번엔 welcome.conf 파일을 열고 403 에러 발생 시 /error/noindex.html 파일이 실행되지 않도록 주석 처리를 한다.

-파일을 저장한 후 데몬을 재시작하여 설정을 적용한다.(#service httpd restart)

 

firefox 브라우저에 다시 도메인으로 접속을 시도한다. -> Forbidden 403 에러 메시지가 출력된다.

 

noindex.html 파일을 /var/www/html 디렉터리(웹 서버에서 사용할 html 파일들이 위치)로 index.html 이름으로 변경하며 복사한다.

 

또 firefox에서 도메인으로 연결을 시도한다. -> 다시 Test Page가 출력된다.

 

/var/www 디렉터리로 이동하여 html 디렉터리의 권한을 확인한다. (755)

 

권한을 700으로 변경한 후 다시 접속을 시도한다.

 

403 에러 메시지가 출력된다.

 

index 페이지 실행과 403 에러 메시지 발생 과정

(1) 클라이언트가 웹 서버에 접속을 시도하면 httpd 데몬은 httpd.conf 파일의 설정을 확인한다.

 

(2) DocumentRoot 디렉터리(/var/www/html)에 index.html 혹은 index.php 파일이 있는지 확인한다.

 

(3) 파일이 있다면 권한을 확인한 후에 접근이 가능하면 클라이언트에게 요청한 페이지를 출력한다.

접근 권한이 없다면 403 에러 메시지가 발생한다.

 

(4) 파일이 없거나 권한이 없다면 httpd.conf 파일에 설정된 곳()에서 보조 설정 파일을 확인한다.

 

(5) conf.d 디렉터리의 welcome.conf 파일의 설정(ErrorDocument 403 /error/noindex.html)으로 noindex.html 파일이 실행된다.

 

(6) noindex.html 파일도 없으면 403 에러코드 메시지가 출력된다.

 

HTTP 상태 코드 (Status/Response Code)

-서버에서 클라이언트의 요청이 정상적으로 처리되었는지 아니면 에러가 발생했는지 등의 정보를 알려주는 것

 

응답 코드 

의미 

5XX 

Server error (서버 에러)

4XX 

Client Error (클라이언트 에러)

3XX 

Redirection (리다이렉션) 

2XX

Success (성공)

1XX

Information(정보)

 

 주요 상태 코드

 의미

 200 

 오류 없이 전송 성공

 301 (Moved Permanently)

 영구 이동됨

 403 (Forbidden)

 접근 금지 (권한이 없음)

 404 (Not Found)

 요청한 페이지가 없음

 500 (Internal Server Error)

 서버 내부 오류

 503 (Service Unavailable)

 서비스 사용 불가

'Linux' 카테고리의 다른 글

37-1 Apache 인증  (0) 2017.11.04
36-2 PHP(Hypertext Preprocessor)  (0) 2017.11.03
35 KICKSTART  (0) 2017.11.02
34 KICKSTART  (0) 2017.11.01
32-1 NFS(Network File System)  (0) 2017.10.31