X Powered By JBoss

기본적인 보안 요건으로 운영 중인 JBoss 버전 정보 제거

보안상의 문제로 사용하고 있는 서버의 종류를 알리는 것을 꺼리는 곳이 많아지고 있습니다.

공격자들은 서버의 종류와 버전을 알면 알려진 이슈들을 이용하여 서버를 공격하기 쉬워지기 때문일 것 입니다.

JBoss에서는 아래와 같이 X-Powered-By 헤더를 사용하여 버전 정보를 표시하고 있습니다.

Chrome의 막강한 디버깅 도구 F12를 사용하여 확인하면, Response Header에 “X-Powered-By: JSP/2.2″라고 버전 정보를 출력하고 있습니다.

또 “Server: Apache-Coyote/1.1″로 서버의 종류를 표시하고 있습니다.

이 정보를 변경하여 서버 종류를 알지 못하도록 변경해 보겠습니다.

JBoss 의 Http Header 에서 버전 정보 확인

chrome에서 제공하는 개발자 도구를 통하여 X-Powered-By 정보를 확인할수있습니다.

개발자도구를 이용하는 방법은 chrome창을 실행하여 F12버튼을 이용하면 하단에 개발자도구가 나타납니다.

chrome 개발자 도구를 통하여 아래의 그림과 같이 여러가지 정보를 확인할 수 있습니다.

JBoss 에서 X-Powered-By 버전 정보 제거 하기
[jboss@khan02 test12]$ ./jboss-cli.sh 

=============================================================
   KHAN [provisioning]              http://www.opennaru.com/ 
   JBoss EAP 6.2.0                  service@opennaru.com
-------------------------------------------------------------
JBOSS_HOME=/svc/test/was/jboss-eap-6.2
DOMAIN_BASE=/svc/test/was/domains
SERVER_NAME=test12
CONFIG_FILE=standalone-ha.xml
BIND_ADDR=192.168.0.55
PORT_OFFSET=200
MULTICAST_ADDR=230.10.1.1
CONTROLLER=192.168.0.55:10199
CONSOLE=http://192.168.0.55:10190
=============================================================

[standalone@192.168.0.55:10199 /] /subsystem=web/configuration=jsp-configuration/:write-attribute(name=x-powered-by,value=false)
{
    "outcome" => "success",
    "response-headers" => {
        "operation-requires-reload" => true,
        "process-state" => "reload-required"
    }
}

[standalone@192.168.0.55:10199 /]

위와 같이 CLI를 실행하면 XML 설정파일에는 아래와 같이 적용됩니다.

        <subsystem xmlns="urn:jboss:domain:web:1.5" default-virtual-server="default-host" instance-id="${jboss.node.name}" native="true">
            <configuration>
                <jsp-configuration x-powered-by="false"></jsp-configuration>
            </configuration>

참고로 이 설정은 JSP가 컴파일될 때 적용되기 때문에, 이미 컴파일이 된 JSP 파일에 적용하려면 tmp 디렉터리를 삭제하시거나 JSP 파일의 Timestamp가 변경되도록 touch 해 주시면 됩니다.

Http Response Header 서버명 변경하기

다음과 같은 옵션으로 서버의 이름도 마음대로 변경하실 수 있습니다.

Java 에서 System Property를 전달하는 -D 옵션으로 -Dorg.apache.coyote.http11.Http11Protocol.SERVER=”KHAN” 와 같이 지정하시면 서버이름이 변경됩니다.

KHAN [provisioning] 설치 버전의 경우엔 env.properties 파일에 다음과 지정하시면 됩니다.

env.properties

org.apache.coyote.http11.Http11Protocol.SERVER="KHAN"

다시 Chrome의 F12로 헤더를 살펴보면 다음과 같이 X-Powered-By가 제거되었고, Server의 이름이 변경된 것을 확인하실 수 있습니다.

X-Powered-By JBoss

본 내용은  “거침없이 배우는 JBoss EAP6”  중 일부를 발췌한 내용입니다.

거침없이 배우는 JBoss10점
전준식 엮음/지&선(지앤선)