쩨이엠 개발 블로그

Response Header에서 Server 노출여부 변경하기 본문

개발/ETC

Response Header에서 Server 노출여부 변경하기

쩨이엠 2020. 7. 2. 10:22
728x90
반응형

 

서버의 정보를 노출하는 것도 해킹의 위험이 있다

그래서 보안 취약점으로 자주 걸리는 노출된 Server 정보를 숨기기로 한다

 
 $ curl -i http://172.21.106.144:8080
 
 HTTP/1.1 200 200
 Date: Tue, 30 Jun 2020 08:51:33 GMT
 Server: Apache/2.4.5 (Unix)
 Set-Cookie: JSESSIONID=5B89ADE63BCD4E73EFD835B.Tomcat; Path=/; HttpOnly
 Content-Language: ko-KR
 Content-Length: 570
 Vary: Accept-Encoding
 Content-Type: text/html;charset=UTF-8
  

curl을 날렸을 때 받는 Response에 Server 정보가 노출되어있다

이 정보를 변경하기 위해서는 2가지 방법이 있다

 

1. Tomcat의 server.xml을 수정한다

tomcat의 server.xml을 보면 

 
 ...
 <Connector port="8019" protocol="AJP/1.3"
               maxThreads="500" minSpareThreads="100"
               connectionTimeout="20000"
               acceptCount="10"
               maxPostSize="-1"
               URIEncoding="UTF-8"
               useBodyEncodingForURI="true" 
               redirectPort="9443"
               enableLookups="false" />
 ...
 

이런 부분이 있다

내 경우는 port가 8019로 되어있지만 8080도 있을거고 뭐 등등 있을 텐데 Connector의 xml을 찾아서

server="Server" 이런식으로 대체하고 싶은 단어로 추가해준다

 

 
 ...
 <Connector port="8019" protocol="AJP/1.3" server="Server"
               maxThreads="500" minSpareThreads="100"
               connectionTimeout="20000"
               acceptCount="10"
               maxPostSize="-1"
               URIEncoding="UTF-8"
               useBodyEncodingForURI="true" 
               redirectPort="9443"
               enableLookups="false" />
 ...
 

그리고 Tomcat 재기동후 다시 curl을 날려보면

 
 $ curl -i http://172.21.106.144:8080

 HTTP/1.1 200 200
 Date: Tue, 30 Jun 2020 08:51:33 GMT
 Server: Server
 Set-Cookie: JSESSIONID=5B89ADE63BCD4E73EFD835B.Tomcat; Path=/; HttpOnly
 Content-Language: ko-KR
 Content-Length: 570
 Vary: Accept-Encoding
 Content-Type: text/html;charset=UTF-8
 

변경된 것을 확인할 수 있다

 

2. Apache의 httpd.conf를 수정한다

tomcat의 server.xml은 어디있는지 알겠는데 httpd.conf는 어디있는지 모르니 일단 찾아본다

 
 $ ps -aux | grep httpd
 daemon   29153  0.0  0.1 860612  6256 ?        Sl   19:10   0:00 /app/apache/bin/httpd -f /app/apache/conf/httpd.conf -k start
 daemon   29154  0.0  0.1 860612  6256 ?        Sl   19:10   0:00 /app/apache/bin/httpd -f /app/apache/conf/httpd.conf -k start
 tomcat   31304  0.0  0.0 103328   980 pts/1    S+   20:01   0:00 grep --color=auto httpd
 

 

 /app/apache/conf 에 있는것을 확인했으니 조회해본다

 

여기에 추가해야할 것은 두줄이다

ServerTokens Prod

ServerSignature Off 

 

여기서 주의할 점은 httpd.conf 내에 

 
 Include conf/extra/httpd-default.conf
  

이 httpd-default.conf에 관한 정보가 있는지 확인해 볼 것

httpd.conf에 저 두가지가 없다면 httpd-default.conf에 있을 확률이 더 높다

 

 

ServerTokens 뒤에 있는 Prod는 등급으로 총 6가지가 있다

등급 노출 정보 예시
Prod 웹서버의 이름 Apache
Major 웹서버의 이름 + Major 버전정보 Apache/2
Minor 웹서버의 이름 + Major.Minor 버전정보 Apache/2.4
Min 웹서버의 이름 + Major.Minor.Minimum 버전정보 Apache/2.4.5
OS (default) 웹서버의 이름 + 버전 + 운영체제 Apache/2.4.5 (Unix)
Full 모두 알려준다 Apache/2.4.5 (Unix) OpenSSL/1.0.1e-fips mod_jk/1.2.40

ServerSignature On/Off 있는데 브라우저상에서 아파치 서버 정보를 노출한다/안한다를 결정한다

 

즉 이번에 추가할 저 두 줄은 Server: Apache 이렇게 보여주겠다는 뜻이다

 

httpd.conf 혹은 httpd-default.conf에 추가한 후 아파치를 재기동한다

 
 $ apachectl restart
 

그 후 curl을 날려보면 바뀐것을 확인할 수 있다

 
 $ curl -i http://172.21.106.144:8080

 HTTP/1.1 200 200
 Date: Tue, 30 Jun 2020 08:51:33 GMT
 Server: Apache
 Set-Cookie: JSESSIONID=5B89ADE63BCD4E73EFD835B.Tomcat; Path=/; HttpOnly
 Content-Language: ko-KR
 Content-Length: 570
 Vary: Accept-Encoding
 Content-Type: text/html;charset=UTF-8
 
728x90
반응형

'개발 > ETC' 카테고리의 다른 글

[ node ] certificate has expired 오류  (0) 2020.07.10
[ Apache ] 아파치 start/stop/restart 명령어  (0) 2020.07.04
XML Tree 형으로 format  (0) 2020.06.09
[ git ] 삭제된 파일 commit  (0) 2020.05.21
[EXCEL] 텍스트 합치기  (0) 2020.04.24
Comments