반응형
아파치 톰캣 Apache Tomcat 보안 조치 가이드
계정 설정
유추 가능한 취약한 문자열 사용을 제한하여 계정 및 패스워드 추측 공격을 방어
Default 계정, 패스워드는 제거하고 유추하기 어려운 계정, 패스워드를 설정 한다.
- 취약 계정 : admin, administrator, manager, guest, test, scott, tomcat, root, user, operator, anonymous 등
- 취약 패스워드 : Abcd, aaaa, 1234, 1111, test, password, public, blank 패스워드, ID와 동일한 패스워드 등
파일 : tomcat-users.xml
# rolename or username, password, roles 를 추가/변경 등 설정
< ?xml version=’1.0′ encoding=’utf-8′?>
< tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1″/>
<role rolename="standard"/>
<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1″/>
<user username="dlfqjsrhksflwk1" password="VotmdnjemQhrwkq%%@!" roles="role1″/> # 예시
</tomcat-users>
관리자 페이지(manager/html ) 비활성화
Tomcat은 보안상 기본 설정이 비활성화 상태로 설치됨
tomcat-users.xml 파일과 context.xml 파일에서 권한 및 접근 설정이 되어 있을 경우에 manager가 활성화 된다.
비활성화를 하고 싶다면 tomcat-users.xml, context.xml 파일의 설정을 기본값 또는 설정 내용을 주석 처리한다.
인가 IP만 접근 가능하도록 IP 접근 제어 설정
설정 변경 후 서비스 재시작 필요
파일 : server.xml
<Context path="" docBase="/" reloadable="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.0\.\d" /> # 192.168.0 대역 IP 허용, allow 부분에 IP 인가 IP 지정.
</Context>
# 접근을 제한하는 경우
<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="<제한 IP>"/>
--------------- or ---------------
파일 : context.xml
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.0\.\d" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
--------------- or ---------------
파일 : manager.xml
<?xml version="1.0" encoding="UTF-8"?>
<context antiresourcelocking="false" privileged="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.0\.\d+|127\.0\.0\.1" />
</context>
버전 정보 숨기기
공격자는 버전 정보를 통해 특정 버전 취약점을 이용한 공격을 할 수 있다.
server.xml 파일에서 <connector> 태그의 server 정보 추가/수정 후 서비스 재시작
<Connector port="8080" protocol="HTTP/1.1" server="AAAname">
디렉토리 인덱싱 (diractory indexing)
디렉토리 인덱싱(diractory indexing)은 서버의 모든 디렉토리, 파일을 볼 수 있는 취약점이다.
web.xml 파일 내용 중 servlet(서블릿) 부분 listings의 값이 false로 설정되어 있는지 확인한다.
파일 : web.xml
<servlet>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
Apache 디렉토리 리스팅 제거
디렉토리 리스팅 기능 설정 시 외부사용자에게 디렉토리의 모든 파일을 노출되게 된다.
즉, 해당 디렉토리 구조 및 파일정보까지 보여지기 때문에 해커들에게 중요 설정 정보들이 공개되는 것이다.
Apache conf 디렉토리로 이동하면, httpd.conf 웹서버 환경파일이 존재한다.
<Directory "DocumentRoot"> # Options 항목에 Indexes를 제거하면 된다.
<Directory "/home/apache/test">
Options Indexes
</Directory>
Apache 불필요한 파일 제거
Apache 설치 시 디폴트로 매뉴얼과 디폴트 정보 파일들이 설치가 된다
설치된 해당 파일들은 버전정보랑 각종 유용한 정보들이 포함되어 있기 때문에 외부 시스템으로부터 정보들을 노출될 수 있다.
Apache 기본 디렉토리로 이동하면, cgi-bin 디렉토리가 보일 것이다.
cgi-bin디렉토리 안에 모든 파일들을 제거 해줌으로써 해킹으로부터 안전해질 수 있다.
# 예
/home/apache/cgi-bin
반응형
'IT 보안' 카테고리의 다른 글
D-Link HNAP 취약점 분석 자료 (0) | 2024.08.29 |
---|---|
IOC와 TTP 차이점 (0) | 2024.08.29 |
PHP File Access Bruteforce Attempts 공격 패턴 (0) | 2024.08.29 |
Typosquatting (타이포스쿼팅) 설명 (0) | 2024.08.29 |
Credential Stuffing Brute-force Attack 공격과 비교 설명 (0) | 2024.08.29 |