본문 바로가기

정보보안/애플리케이션 보안

[웹 서버 취약점] 웹 서버 설정파일 주요 지시자

아파치 설정파일(httpd.conf) 기준으로 작성

 일반설정
ServerRoot "경로"
: 웹서버가 설치된 최상위 데릭터리 경로 지정. 해당 경로에는 설정파일, 로그파일, 모듈 등이 위치

Listen 포트
: 클라이언트가 접속할 웹서버의 리스닝(Listening) 포트 지정

USER 사용자
GROUP 그룹명
 : 서비스를 제공하는 서버 프로세스를 실행할 사용자와 그룹 지정
 - 설정된 사용자/그룹명 권한으로 프로그램이 실행되므로 Root는 절대 쓰지말고, nobody와 같은 새로운 계정을 만들어 로그인 쉘 설정을 "/sbin/nologin"으로 지정해 로그인 수 없는 계정으로 실행하게 한다.

ServerToken 레벨
 : HTTP 응답 시 헤더의 Server 필드를 통해 제공할 웹서버, OS, 모듈 등의 정보 레벨 지정. 최소한의 정보만 제공하는 Prod로 설정할 것을 권장

ServerSignature 옵션
 : 웹서버에서 직접 생성하는 에러메시지(http 에러 메시지), 디렉터리 리스팅 메시지 등에 웹서버, OS, 모듈 등의 정보를 제공할 지 지정. 보안상 정보를 제공하지 않는 Off 설정 권장

ServerAdmin 이메일주소
 : 클라이언트에게 전달되는 에러 메시지에 포함될 관리자 메일 주소 설정

DocumentRoot "경로명"
 : 웹 애플리케이션 자원들이 위치하는 최상위디렉터리 설정. 클라이언트 요청 URL 상에 명시되는 최상위 디렉터리

DirectoryIndex 페이지명 페이지명 ..
 : 클라이언트가 디렉터리만 명시하여 요청한 경우 이를 처리할 자원 목록을 지정. 명시한 순서대로 해당 자원을 검색하고 최종적으로 해당 자원이 없으면 파일 목록을 반환하거나 에러메시지를 반환한다. 

 

타임아웃 관련 설정
Timeout 지정초
 : 클라이언트의 요청으로 서버와 연결된 후 클라이언트와 서버 간에 아무런 메시지가 발생하지 않을 동안의 대기 시간. 초단위지정

KeepAlive 옵션
 : 클라이언트와 서버 프로세스 간의 연결을 일정 조건에 따라 지속시켜 동일한 연결을 통해 클라이언트의 다수요청을 처리하는 기능(On: 사용, Off: 사용 안함)
 - 일반적으로 매번 클라이언트 요청에 대해 연결을 설정하고 응답 이후에 종료하는 방식에 비해 웹서버의 TCP 연결 설정에 대한 부하를 줄이고 효율적으로 통신할 수 있는 장점이 있으므로 기능을 활성화 (On) 한다.

MaxKeepAliveRequests 요청건수
 : KeepAlive 기능 사용 시, 클라이언트와 서버 프로세스 간에 연결을 지속시키는 동안에 허용할 최대 요청 건수

KeepAliveTimeout
 : KeepAlive 기능 사용 시, 클라이언트와 서버 프로세스 간에 연결을 지속시키는 동안에 클라이언트의 마지막 요청 이후 다음 요청을 대기하는 시간. 해당 시간동안 클라이언트의 추가 요청이 발생하지 않으면 연결 종료

RequestReadTimeout 인수(header=5 body=10)
 : 클라이언트로부터 요청 메시지의 헤더부와 바디부를 모두 수신하는 시간에 대한 타임아웃(초단위)을 지정
 - 지정한 시간 동안에 요청 메시지의 헤더부와 바디부를 모두 수신하지 못한 경우 408(RequestTimeout) 에러메시지 반환
 - 클라이언트 요청에 대한 세부적인 제한을 설정하기 위한 목적의 지시자. 
 - Slow 계열의 HTTP 도스 공격에 효과적으로 대응

 

로그 관련 설정
ErrorLog 로그파일경로
 : 에러 로그파일의 경로 지정. 에러 로그파일에선 웹서버 구동 중 발생하는 에러 및 디버깅 메시지가 남으며 상대경로는 웹서버 설치 최상위 디렉터리(ServerRoot) 를 지준으로 한 경로를 의미

CustomLog 로그파일 경로 combined
 : 접속기록을 저장하기 위한 로그파일의 경로를 지정.