원문출처 : https://m.blog.naver.com/godgodmin/221851224176
불필요한 파일 삭제 DocumentRoot 폴더는 웹문서가 위치하는 디렉토리로 불필요한 파일이 있을시에 삭제 ...
불필요한 파일 삭제
DocumentRoot 폴더는 웹문서가 위치하는 디렉토리로 불필요한 파일이 있을시에 삭제 하는 것이 좋다. 따라서 DocumentRoot 디렉토리의 경로에 있는 파일들을 삭제해주자. (rm -rf)
또한 Apache 설치시 기본적으로 설치되는 CGI 스크립트를 제거한다. CGI 스크립트는 해킹에 이용될 수 있기때문이다.
/var/www/manual 또는 /var/www/cgi_bin은 삭제해주자.
리눅스 웹서버 정보 숨기기
1. ServerTokens
브라우저가 보낸 요청에 아파치 서버는 응답 패킷을 보내는데 이때 패킷의 Header에는 서버의 정보가 나타난다. 이는 서버 버전별 해킹을 시도할 수 있는 단서를 줄 수 있기 때문에 서버정보를 숨겨야한다.
서버정보는 httpd.conf파일에서 ServerToken 값을 변경해준다.
먼저 [curl -I 웹서버주소]로 응답 헤더의 매세지를 살펴보자. 현재 서버와 OS의 정보를 알려주어 보안에 취약한 상태이다. (현재 상태는 ServerToken이 기본값인 OS 상태이다.)

이를 해결하기 위해 httpd.conf에 있는 ServerTokens 값을 변경해주어야 한다.
ServerTokens 값에 따라 노출되는 정보를 선택할 수 있다.
ServerTokens 값 |
정보 |
Prod |
웹서버의 이름만 알려준다. Apache |
Major |
웹서버의 이름과 Major 버전만 알려준다. Apache2 |
Minor |
웹서버의 이름과 Minor 버전까지 알려준다. Apache2.2 |
Min |
웹서버 이름과 Minimum버전까지 알려준다. Apache2.2.2 |
OS |
웹서버 이름, 버전 운영체제까지 알려준다.(기본값) |
Full |
모든 정보를 알려준다. |
httpd.conf 파일에서 ServerTokens 값을 가장 낮은 단계의 값인 Prod로 변경해주자.

이후 Apache 웹 서버를 restart해주고 헤더값을 다시 확인한다. 아래의 그림과 같이 서버 정보가 Apache만 나오는 것을 확인 할 수 있다.

2. ServerSignature
Apache 웹서버에 접속할 때 오류가 발생하면 404, 403 에러가 발생한다. 이때 아파치의 버전 정보와 포트가 나오게 되는데 해커가 악용할 수 있기 때문에 보안상으로 위험하다. 이러한 오류에 관여하는 설정은 httpd.conf 에 ServerSignature이다. 현재는 ServerSignature 값이 Off인 상태이다.

이러한 정보노출을 방지하기 위해 ServerSignature를 Off로 변경하여야한다.

이후 Apache 웹 서버를 restart해주고 헤더값을 다시 확인한다. 아래의 그림과 같이 서버 정보와 Port 정보가 나오지 않는 것을 확인할 수 있다..

디렉토리 리스팅
웹서버의 DocumentRoot 폴더에 가장 메인이 되는 index.html(설정에 따라 달라질 수 있다.)이 없는 경우 DocumentRoot 폴더에 있는 파일들을 탐색기 형태로 보여준다. 이는 소스코드, 스크립트 파일이
유출될 수 있으므로 점검해야 한다.

디렉토리 리스팅을 막기 위해 아래의 그림에 있는 Indexes를 제거 해야한다.

심볼릭 링크 차단
심볼릭 링크란 PC의 바로가기와 동일하다. 바로가기를 클릭하면 원본데이터를 불러와 사용할 수 있게 해주는 것 처럼 웹서버에서도 심볼릭 링크를 통해 파일 시스템에 있는 디렉토리에 접근할 수 있게 된다.
디렉토리 리스팅 처럼 디렉토리가 보이는 경우 심볼릭 링크를 root 디렉토리에 설정하면 누구나 파일시스템에 접근 가능하게 되는 것이다.
이를 차단하기 위해 httpd.conf에 FollowSymLinks 옵션을 삭제한다.

위의 그림에 나와있는 FollowSymLinks 옵션을 지우고 웹서버를 재시작 하면 심볼릭 링크를 이용하여 파일시스템에 접근 할 수 없게 된다.