[WAF] 웹 서버 응답 "Server" 제거
사내 WAF 로그 모니터링 중 웹서버 버전 정보가 담긴 로그가 보여 조치가 필요하다고 생각했다.
보고서 작성을 위해 외부에서 테스트를 해보니 웹 서버 버전 정보가 담긴 Server 헤더가 보이지 않았다.
이유를 찾던 중에 WAF에서 웹 서버 헤더를 필터링 할 수 있다는 것을 알게되어 실습을 해보았다.
● 취약점 정보
- Apache 웹 서버를 사용할 때 설정을 잘못하면 외부에 불필요한 정보가 노출될 수 있다.
- 아래 그림에서 보면 서버는 우분투 OS에 Apache 2.4.41 버전을 사용중인 것을 알 수 있다.
● 조치 방법
- 우분투 20.04의 기준 /etc/apache2/conf-enabled/security.conf 파일에서 설정
- 설정 파일을 보면 ServerTokens 라는 필드가 존재
- ServerTokens 필드 값에 따라 서버에 노출되는 정보가 결정된다.
1. Prod : 웹서버의 이름만 알려준다. (Apache)
2. Major : 웹서버의 이름과 Major 버전번호만 알려준다. (Apache2)
3. Minor : 웹서버의 이름과 Minor 버전까지 알려준다. (Apache2.4)
4. Min : 웹서버 이름과 Minimum 버전까지 알려준다. (Apache2.4.6)
5. OS : 웹서버의 이름과 버전, OS 정보를 알려준다. (Apache2.4.6 (Unix))
6. Full : 최대한의 정보를 모두 알려준다. (Apache2.4.6 (Unix) Resin/4.x.x)
출처 - https://travelc.tistory.com/80
- 해당 필드의 값을 Prod로 변경하면 Apache 라는 값만 반환한다. KISA의 "주요정보통신기반시설 기술적 취약점 분석ㆍ평가 방법 상세가이드"에서도 해당 값을 Prod로 설정하도록 권고한다. (추가로 서버 OS 정보에 대한 설정인 ServerSignature도 존재한다.)
● WAF를 통해 Server 응답값 제거
- 회사 시스템은 Server 필드가 존재하지 않았지만 내 자그마한 WAF(ModSecurity)는 Server 필드는 남기고 Apache라는 값만 제거해보았다.
- 설정을 위해 "/etc/modsecurity/modsecurity.conf"파일에 다음 구문을 추가했다.
* SecRuleEngine 필드 값을 on으로 해도 되지만, 웹 서버 접근이 차단될 수 있으니 참고하자
<IfModule security2_module>
SecRuleEngine DetectionOnly
ServerTokens Min
SecServerSignature " "
</IfModule>
- 설정을 바꾸고 apache를 다시 시작하면 다음과 같이 Server 필드는 "SecServerSignature"에서 작성한 내용만 존재한다.
- 외부에서는 Server 필드의 값이 지워졌지만, 내부 WAF 로그에서는 아래처럼 Server 필드가 그대로 나타나서 취약점이 있다고 오해했었다.
● 결론
- WAF로 웹서버 응답 헤더를 제어할 수 있다.
'내 웹 서버 > 기타' 카테고리의 다른 글
[구축] pfsense IP 세팅 (0) | 2023.03.11 |
---|---|
[구축] GNS3에 pfsense 추가하기 (0) | 2023.03.09 |
[에러][Django] venv 환경에서 pip UnicodeDecodeError 해결 (0) | 2023.01.21 |
[에러] GNS3에서 VMnet8 인터넷 연결 문제 (0) | 2022.04.01 |
[에러] Virtualbox e_fail (0x80004005) 에러 발생 (0) | 2021.12.15 |