일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- No tests found for given includes
- mac os git error
- java 11
- error
- AWS CLI
- OpenFeign
- LeetCode
- java 여러개 버전
- aws
- java version
- springboottest
- log error
- ssl프로토콜확인
- java 버전 변경
- springboot
- yum install java
- parse
- ssl이란?
- JUnit
- Java 1.8
- tls프로토콜확인
- statement.executequery() cannot issue statements that do not produce result sets.
- 스프링부트테스트
- xcrun: error: invalid active developer path
- Medium
- mysql executequery error
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
- easy
- java
- java 1.8 11
- Today
- Total
쩨이엠 개발 블로그
Response Header에서 Server 노출여부 변경하기 본문
서버의 정보를 노출하는 것도 해킹의 위험이 있다
그래서 보안 취약점으로 자주 걸리는 노출된 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
'개발 > 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 |