웹 서버 보안

Ryu·2021년 12월 4일
0

정보보안기사

목록 보기
15/16

테스트 환경 = CentOS 7 - Apache/2.4.6 (CentOS)

  • 웹 서버는 공개 소프트웨어로 누구나 쉽게 설치해서 사용
  • 웹 브라우저와 세션을 관리하고 웹브라우저에서 전송하는 HTTP Request 메시지를 해석하고 실행한 후 HTML 형태로 HTTP Response를 보내는 것


Apache Deamon 프로세스 실행

  • 웹 서버가 80번 포트를 사용하기 때문에 httpd는 하나만 root 소유자의 권한으로 기동
  • 부모 프로세스 하나만 root로 사용자로 실행되고 나머지는 apache 사용자로 실행
  • httpd는 fork 함수를 사용해서 자식 프로세스를 생성하는 방식으로 실행


웹 서버 설정

설정 파일 위치 = /etc/httpd/conf/httpd.conf


주요 디렉터리 및 파일 접근 권한

ServerRoot 접근 권한
chown 0 . bin conf logs
chgrp 0 . bin conf logs
chmod 755 . bin conf logs

실행 파일 권한 변경
chmod 511 /usr/local/httpd/bin/httpd

불필요한 파일 삭제

아파치 설치 시 기본적으로 설치되는 cgi-bin은 공격에 이용될 수 있으므로 삭제
매뉴얼 파일은 시스템에 대한 정보를 제공할 수 있어서 공격에 도움이 될 수 있으므로 삭제

/var/www/manual 및 /var/www/cgi_bin 삭제

Directory Listing

index.html이 없거나 Listing을 보여주는 옵션이 indexes에 설정되어 있는 경우 웹 페이지의 디렉터리가 보임

Indexes 제거 후 확인


심볼릭 링크를 이용해서 파일 시스템에 접근하여 Root 권한을 획득할 수 있으므로 FollowSymLink를 제거

etc에 심볼릭링크 설정

FollowSymLinks 제거 후 확인


Directory indexes

우선순위를 결정


ServerTokens

웹 서버 정보를 얼마나 보여주는지를 설정

- Prod : 웹서버의 이름만 알려준다. (Apache)
- Major : 웹서버의 이름과 Major 버전번호만 알려준다. (Apache2)
- Minor : 웹서버의 이름과 Minor 버전까지 알려준다. (Apache2.4)
- Min : 웹서버 이름과 Minimum 버전까지 알려준다. (Apache2.4.6)
- OS : 웹서버의 이름과 버전, OS 정보를 알려준다. (Apache2.4.6 (Unix)) 
- Full : 최대한의 정보를 모두 알려준다. (Apache2.4.6 (Unix) Resin/4.x.x)


ServerSignature

웹서버의 버전정보를 웹 브라우저에 노출 여부를 정의

권장
ServerTokens Prod
ServerSignature off


접근 제어

Order : Deny와 Allow 의 순서 지정
(Allow,Deny 또는 Deny,Allow)


기타

Listen 8080
- 포트 지정

Servername newwar.com:8080
- 서버의 도메인 지정

DocumentRoot "/var/www/html"
- 웹 문서가 위치하는 디렉토리 지정

SeverAdmin me@gmail.com
- 서버 관리자 이메일 입력


Session 관리

timeout 300

  • 클라이언트와 서버 간에 300초(5분) 동안 아무런 메시지가 발생하지 않으면 타임아웃을 시키고 연결 종료

Keepalive On

  • 특정 클라이언트의 지속적인 요청 작업들을 계속해서 처리하도록 허용할 것 인가 아닌가에 대한 여부

maxkeepaliverequest 100

  • Keepalive 값이 On인 경우
    클라이언트와 연결된 작업의 최대 개수를 100개로 제한
    해당 회수를 초과하면 현재 프로세스는 종료되고 다른 프로세스 처리

Can Do It
brb

profile
Let me start

0개의 댓글