Published 2021. 6. 8. 14:33

1. 1. 디렉토리 인덱싱 제거

디렉토리 인덱싱 제거 설정을 하지 않으면 웹브라우저 상에서 서버 디렉토리 내의 모든 파일을 열람할 수 있다.

하위 디렉토리, 상위 디렉토리로도 접근할 수 있기 때문에 디렉토리 인덱싱 제거 설정을 해야한다.

 

# vi httpd.conf

 

Options Indexes FollowSymLinks 에서 Indexes 제거

<Directory />
     #Options Indexes FollowSymLinks
     Options FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow from all
</Directory>


브라우저에서 403에러 출력시 성공.

 

 

 

2. 2. 심볼릭 링크 비활성화

만약 root 디렉토리(/)를 심볼릭 링크 걸게되면 /etc/password 같은 민감한 파일까지 누구나 열람이 가능하여 보안 문제를 일으킨다. 그렇기 때문에 심볼릭 링크 기능을 비활성화하여 서버 보안을 유지해야한다.

 

# vi httpd.conf

Options FollowSymLinks을 주석처리하고
Options None 추가

<Directory />
     #Options FollowSymLinks
     Options None
     AllowOverride None
     Order allow,deny
     Allow from all
</Directory>

 

 

 

3. 3. HTTP Method 제한

HTTP Method에는 여러가지 종류가 존재한다.
서버 정보를 알 수 있는 HEAD, 서버에서 지원하는 메소드를 확인할 수 있는 OPTION 등 있지만 
GET, POST를 제외한 Method는 웹 서버에서 사용할 수 없게 제한을 두는 것이 좋다.

 

vi /톰캣설치폴더/conf/web.xml

<servlet>
	<!-- 전략 -->
	<init-param>
		<param-name>dispatchOptionsRequest</param-name>
		<param-value>true</param-value>
	</init-param>
	<!-- 후략 -->
</servlet>
<!-- HTTP Method 제한 -->
<security-constraint>
	<display-name>Forbidden</display-name>
	<web-resource-collection>
		<web-resource-name>Protected Context</web-resource-name>
		<url-pattern>/*</url-pattern>
		<http-method>HEAD</http-method>
		<http-method>PUT</http-method>
		<http-method>DELETE</http-method>
		<http-method>TRACE</http-method>
		<http-method>OPTIONS</http-method>
		<http-method>PATCH</http-method>
	</web-resource-collection>
	<auth-constraint>
		<role-name></role-name>
	</auth-constraint>
</security-constraint>

 

Method 결과 확인

# curl -I -X OPTIONS www.example.com/   결과 : HTTP/1.1 403
# curl -I -X DELETE www.example.com/   결과 : HTTP/1.1 403
# curl -I -X PATCH www.example.com/  결과 : HTTP/1.1 403
# curl -I -X TRACE www.example.com/ 결과 : HTTP/1.1 403
# curl -I -X HEAD www.example.com/  결과 : HTTP/1.1 403
# curl -I -X PUT www.example.com/  결과 : HTTP/1.1 403

# curl -I -X POST www.example.com/   결과 : HTTP/1.1 200
# curl -I -X GET www.example.com/  결과 : HTTP/1.1 200 

 

 

 

4. 서버 버전 정보 숨기기

Apache Tomcat에서는 Error를 유발했더니 서버 버전 정보가 노출되었다.
Error 페이지에서 출력되는 버전 정보를 숨기는 방법은 아래와 같다.

vi /톰캣설치폴더/conf/server.xml

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" ... /> 
태그 아래에 아래 코드 추가

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" ... /> 

<!-- =============== Error 페이지 서버 정보 숨기기 =============== -->
<Valve className="org.apache.catalina.valves.ErrorReportValve" 
       showReport="false"
       showServerInfo="false" />

 

 

복사했습니다!