목차
서버 정보 확인
다른 사람이 운영중인 서버의 정보는 의외로 쉽게 알 수도 있다.
Txxxxcafe와 Cxxxxclub이라는 사이트의 정보를 알고 싶은 상황이라면 아래의 명령어를 입력해준다.
$ curl -I txxxxcafe.com
HTTP/1.1 301 Moved Permanently
Date: Fri, 12 Mar 2021 16:17:16 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Server: Apache
X-Powered-By: PHP/7.4.12
Set-Cookie: PHPSESSID=g3nai0aiu7hpekr5egrvgb2gie; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Location: https://txxxxcafe.com/
$ curl -I cxxxx.club
HTTP/1.1 301 Moved Permanently
Date: Fri, 12 Mar 2021 16:26:17 GMT
Server: Apache/2.4.25 (Debian)
Location: https://cxxxx.club/
Content-Type: text/html; charset=iso-8859-1
Txxxxcafe에서는 아파치와 php7.4.12를 사용하고 Cxxxxclub 에서는 데비안 우분투에서 아파치 2.4.25를 사용하는 것을 명령어 한 번으로 알 수 있다.
이렇게 공개된 정보들을 악용해 침입하려는 사람이 있을 수도 있으니 정보를 숨겨주는 것이 좋다.
nginx 설정
우선 curl 명령어로 nginx의 정보를 알아내는 것을 방지하기 위해 아래의 명령어로 nginx.conf 파일을 열어 수정한다.
나노 에디터로 내용 중 # server_tokens off; 앞에 주석 처리를 하는 #를 지워주면 nginx의 버젼을 숨길 수 있다.
$ sudo nano /etc/nginx/nginx.conf
OS 정보와 PHP 정보를 숨기기 위해선 아래의 명령어로 Headers More 모듈을 설치한다.
우분투나 데비안이 아니라면 링크에서 설치 방법을 확인한다.
$ apt-get install nginx-plus-module-headers-more
설치 후에 nginx의 default 파일에 아래와 같이 추가해준다.
more_set_headers 'Server: Example1';
more_set_headers 'X-Powered-By: Example2';
저 내용을 추가하고 다시 curl 명령어로 txxxxcafe의 정보를 확인해보면 아래와 같이 뜰 것이다.
$ curl -I txxxxcafe.com
HTTP/1.1 301 Moved Permanently
Date: Fri, 12 Mar 2021 16:17:16 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Server: Example1
X-Powered-By: Example2
Set-Cookie: PHPSESSID=g3nai0aiu7hpekr5egrvgb2gie; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Location: https://txxxxcafe.com/
curl 명령어로 확인 가능한 웹 서버의 정보와 PHP의 버전 정보를 모두 숨길 수 있다.
php 설정
서버에서 오류가 발생하면 로그가 남게 된다.
이 로그를 이용해서 서버의 취약점을 알아낼 수도 있으니 숨겨주는 것이 좋다.
php.ini 파일에서 Ctrl+W로 display_errors를 찾아 off로 바꿔준다.
display_errors가 On일 경우 오류 발생 시 디렉토리의 경로를 모두 보여준다.
...
display_errors = Off
...
phpinfo() 함수를 통해 php, http, mysql 과 관련한 모든 정보를 확인할 수 있으니 아래 내용을 추가해서 막아둔다.
disable_functions = phpinfo()
파일 업로드 기능이 필요하지 않을 경우 php.ini에서 file_uploads를 찾아 Off로 바꿔준다.
...
file_uploads = Off
...