/
Web/WAS 서비스 구축시 보안 유의사항

Web/WAS 서비스 구축시 보안 유의사항

 

Web /WAS 기반의 서비스 구축시 보안에 유의해야할 사항 정리

 

SELinux

Linux 계열의 OS 를 사용한다면 SELinux 를 꼭 켜야 합니다(기본적으로 켜져 있습니다). SELinux 는 zero-day attack 이나 기타 보안 취약점으로 인해 서버가 공격받았을 경우 MAC(mandatory Access Control) 기반의 강력한 보호를 통해 2차 피해를 최소화해 해줍니다.

특히 SELinux 는 Web Server 에 대해 잘 설계된 policy 와 context 를 적용하고 있으므로 웹서버를 통해 해킹당했을 경우 피해를 최소화 합니다.

SElinux 를 켜려면 다음 절차를 따르세요.

 

  1. sestatus 후 아래처럼 enforcing mode 인지 확인

    SELinux status: enabled
    SELinuxfs mount: /selinux
    Current mode: enforcing
    Mode from config file: enforcing
    Policy version: 24
    Policy from config file: targeted

  2. vi /etc/sysconfig/selinux 후 SELINUX=enforcing 로 변경
  3. reboot
  4. sestatus 로 설정 확인

Apache Web Server

Web Server information hide

apache web server 는 browser에게 HTTP header에 다음과 같이 서버의 정보와 버전, 모듈등의 정보를 보냅니다.

HTTP/1.1 200 OK
Date: Sun, 10 Feb 2012 07:24:47 GMT
Server: Apache/2.2.17 (Win32) PHP/5.2.17
Vary: Accept-Encoding,Cookie

 

이런 정보는 공격자에게 유용한 정보이므로 숨겨야 합니다. httpd.conf 에 다음 설정을 수정합니다.

ServerTokens ProductOnly
ServerSignature Off

 

위 설정을 적용하고 나면 다음과 같이 HTTP header 가 보내집니다.

HTTP/1.1 200 OK
Date: Sun, 10 Feb 2012 07:24:47 GMT
Server: Apache
Vary: Accept-Encoding,Cookie

 

참고 자료 How to hide apache information with ServerTokens and ServerSignature directives

민감한 resource가 있는 Location 제한

web 과 was 가 한 서버에 있는데 실수로 was 의 WEB-INF 를 DocumentRoot 에 설정했거나 tomcat 의 host-manager context 를 기본 암호로 설정하고 enable 했을시등 심각한 보안문제가 발생할수 있습니다.

apache web 에서 다음 설정으로 보안 문제를 해결할 수 있습니다.

tomcat manager를 지정한 IP 에서만 연결가능

 

## Deny tomcat manager url

 

<Location /manager>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 192.168.0.0/24
</Location>

 

 

 

tomcat

  1. tomcat 은 root 가 아닌 일반 사용자로 구동합니다.

  2. Context deploy 를 위해 host-manager Context 를 사용할 경우 default Context name(manager) 을 변경하고 암호를 새로 설정해 사용합니다. 기본 암호가 설정되어 있고 3번 접근 IP 제한이 안 걸려 있을 경우 외부에서 악성코드를 war 에 담아서 deploy 할 우려가 있습니다.

    공격예

    82.117.233.102 - - [03/Apr/2013:13:30:38 +0900] "PUT /manager/deploy?path=/ApacheLoader HTTP/1.1" 200 57
    82.117.233.102 - - [03/Apr/2013:13:30:43 +0900] "GET /manager/undeploy?path=/ApacheLoader HTTP/1.1" 200 59


 
설정

username 에 tomcat 같이 유추가 쉬운 id 사용하지 않기

host manager 암호 설정
<role rolename="manager"/>
<user username="darren" password="ReallyComplexPassword" roles="manager"/>

 

  1. host manager 와 manager 는 특정 IP 나 내부에서만 연결 가능하게 설정합니다. 다음 설정은 톰캣이 구동된 서버 또는 192.168.152. 대역 서버와 localhost 에서만 연결 가능합니다.
    conf/Catalina/localhost/manager.xml

     

    conf/Catalina/localhost/manager.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <Context antiResourceLocking="false" privileged="true">
        <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.152\.\d+|127\.0\.0\.1"/>
    </Context>

     

     

  2. tomcat 셧다운은 Server 가 사용하는 포트(기본 8005)만 알면 로컬 시스템에 계정이 있다면 누구나 종료 시킬수 있습니다. 다음과 같이 telnet 으로 포트를 열고 종료 명령어를 보내봅시다.

    $ telnet localhost 8005
    Connected to localhost.
    Escape character is '^]'.

     연결됐다는 프롬프트가 보이면 SHUTDOWN  을 입력하고 엔터를 치면 톰캣이 종료됩니다.

     

    이제 임의의 계정이 tomcat shutdown 을 못 하도록 다음과 같이 shutdown 암호를 설정합니다. (Optional)

     

    <Server port="8005" shutdown="goingdown">

    이제 톰캣을 종료하려면 telnet 으로 서버 포트를 열어서 goingdown 를 입력해야 종료가 됩니다. 변경된 shutdown인 goingdown 은 유출되지 않게 주의해야 합니다. 다른 방법으로는 Server Port 를 사용하지 않는 방법도 있습니다. 다음과 같이 설정하면 서버 포트를 사용하지 않으므로 톰캣 종료시 kill 명령어를 사용해야 합니다.

    <Server port="-1" shutdown="goingdown">

참고 자료Best Practices for Securing Apache Tomcat 7

 

같이 보기

 

Related content

SELinux
More like this
보안 정책 관리
보안 정책 관리
More like this
SELinux Boolean
SELinux Boolean
More like this
아키텍처
More like this
SELinux 끄기, SELinux 끄는 방법
SELinux 끄기, SELinux 끄는 방법
More like this
RHEL/CentOS 7 httpd SELinux policy 변경
RHEL/CentOS 7 httpd SELinux policy 변경
More like this