본문 바로가기

74 취약점 서버정보 숨기기 - Nginx

74.1 서버버전 노출 확인 - curl

서버버전이 노출되면 해당 취약점으로 인해 공격자에게는 서버의 정보수집이 가능하며 2차 공격 가능성이 높아 집니다.

서버버전이 표시되는지는 curl을 이용하거나 크롬 개발자 도구(F12)를 통해 확인할 수 있습니다.

curl -X GET https://pythonblog.co.kr -H "Host:" --head

74.2 Nginx 서버 정보 수정 - nginx.conf

Nginx의 기본 설정 파일 /etc/nginx/nginx.conf을 아래와 같이 수정하면 버전 정보를 숨길 수 있습니다.

vi /etc/nginx/nginx.conf


http {
       ...      
        server_tokens off;
       ...
}

74.3 Nginx 서버 반영 확인

변경한 nginx.conf 을 서버에 적용 후 크롬(F12) 개발자모드에서 사라진 버전정보를 확인 할 수 있습니다.

nginx -t
service nginx restart

Server헤더 NGINX의 버전을 숨깁니다 .

74.4 nginx 헤더 숨기기 - ngx_security_headers

74.3에서 서버버전은 사라졌지만 nginx 표시까지 숨기기 위해서는
ngx_security_headers 모듈을 이용해야 합니다.

nginx에 configure 파일이 없으면
brotli 설치때와 같이 동일한 버전의 nginx를 다운받아 컴파일하도록 하겠습니다.

nginx 컴파일 에러시 라이브러리 설치 참고(71.5): 71 Nginx 서버 성능 개선 - Google Brotli

/usr/local/src# git clone https://github.com/GetPageSpeed/ngx_security_headers.git

/usr/local/src/nginx-1.18.0# ./configure --with-compat --add-dynamic-module=/usr/local/src/ngx_security_headers

git로 ngx_security_headers 소스를 내려받고

configure로 컴파일을 진행합니다.

74.5 make module - security_headers_module

컴파일이 성공하면 컴파일된 모듈이 objs 디렉토리로 내보내집니다
objs 폴더를 확인 하시면 확장자가 c인 파일만 있을겁니다.

make modules 명령을 실행하면 위 스샷과 같이
추가로 확장자가 ngx_http_security_headers_module.so인 파일이 생성됩니다.

make modules

생성된 so 파일을 nginx 모듈 디렉토리에 복사해 줍니다.

cp ./ngx_http_security_headers_module.so /usr/lib/nginx/modules

74.6 ngx_http_security_headers_module.so

실제 구동중인 nginx 서버 위치의 nginx.conf 파일을 수정합니다.

root@oc-webwas:/etc/nginx# vi nginx.conf

load_module 와 hide_server_tokens on 을 추가합니다.

### security_header module
load_module modules/ngx_http_security_headers_module.so;


hide_server_tokens on;

nginx -t 명령어로 변경한 설정 파일이 정상적으로 변경 적용되는지 확인 합니다.

nginx -t

이상이 없다면 서버를 재시작 합니다.

service nginx stop
service nginx start

74.7 적용 확인하기 - 응답헤더

응답헤더에서 서버정보가 안보이는 것을 확인합니다.

잘 적용되었습니다.

현재글 : 74 취약점 서버정보 숨기기 - Nginx
Comments
Login:

Copyright © PythonBlog 2021 - 2022 All rights reserved
Mail : PYTHONBLOG