JBOSS - EAP 6.x Windows new service
Configure JBoss EAP 6 as a Service in Windows
httpd.conf 파일 수정
#GET, POST를 제외한 메소드 제한
<Directory />
Options FollowSymLinks
AllowOverride None
<LimitExcept GET POST>
Order allow,deny
Deny from all
</LimitExcept>
</Directory>
보통 디렉토리 속성안에 넣어서 사용하지만 디렉토리 속성을 안사용할경우 로케이션을 사용.
<Location "/*">
<LimitExcept GET POST>
Order allow,deny
Deny from all
</LimitExcept>
</Location>
다른 방안으로 rewrite 사용하는 방법도 있다.
LoadModule rewrite_module modules/mod_rewrite.so
<IfModule mod_rewrite.c>
RewriteEngine On
# GET, POST를 제외하고 모두 405 페이지로 이동
RewriteCond %{REQUEST_METHOD} !^(GET|POST)
RewriteRule .* - [R=405,L]
</IfModule>
메소드 차단 테스트로는 해당 메소드 파일을 만들어서 요청하는 방법도 있지만, 간단하게 telnet으로 테스트 가능.
$telnet {domain_address} 80
OPTIONS http://{domain_address}/ HTTP/1.0
OPTIONS http://google.com/ HTTP/1.0
Enter Enter
#모든 메소드 허용의 경우
HTTP/1.1 200 OK
Date: Wed, 04 Jul 2018 01:44:40 GMT
Allow: GET,HEAD,POST,OPTIONS
Content-Length: 0
Connection: close
Content-Type: text/html
#메소드가 차단된 경우
HTTP/1.0 405 Method Not Allowed
Allow: GET, HEAD
#
HTTP/1.1 403 Forbidden
Allow: GET, HEAD
위와 같은 방법으로 안대는 경우
web.xml에 secutity-constraint 속성으로 해당 메소드 제한
#web.xml 아래와 같이 메소드 제한 설정
<security-constraint>
<web-resource-collection>
<web-resource-name></web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>HEAD</http-method>
<http-method>DELETE</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
</web-resource-collection>
</security-constraint>
#jboss-web.xml에 context-root 잡아주기
#jboss-web.xml 파일 없으면 생성
*.war/WEB-INF
[root@localhost WEB-INF]# vi jboss-web.xml
vi jboss-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/</context-root>
</jboss-web>
domain.xml && standalone.xml
../configuration/domain.xml
vi domain.xml
#domain의 경우 범위 확인 필요 (default, ha, full, full-ha)
.
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="false">
<alias name="localhost"/>
<alias name="example.com"/>
</virtual-server>
</subsystem>
.