본문 바로가기

정보보안/애플리케이션 보안

[웹 서버 취약점] 보안서버(Security Server) 구축

① 개념

  • 보안서버 : 인터넷상에서 정보를 암호화하여 송수신하는 기능이 구축된 웹서버
  • 독립적인 하드웨어를 따로 설치하는 것이 아니라, 이미 사용하고 있는 웹서버에 SSL/TLS 인증서나 암호화 소프트웨어를 설치하여 암호통신을 지원하는 것을 의미

 

② 보안서버 구축의 필요성

  1. (기밀성 보장) 정보유출 방지
    • 암호 통신을 통한 기밀성 보장
  2. (인증) 위조/가짜 사이트 방지
    • SSL/TLS가 진짜 사이트임을 증명하므로 이를 식별해 피싱에 의한 피해를 줄일 수 있음.
  3. (신뢰) 기업 신뢰도 향상
    • 보안서버를 웹 사이트에 적용함으로써 사용자에게 정보보호의 신뢰성을 보여줄 수 있다.

 

③ 보안서버 구축의 법적 근거

  1. [개인정보보호법] 관련 개인정보보호위원회 고시 [개인정보의 안정성확보 조치 기준]
    1. 제7조(개인정보의 암호화)
      • 개인정보처리자는 비밀번호, 생체인식정보 등 인증정보를 저장/정보통신망을 통한 송,수신 경우에 이를 안전한 암호 알고리즘으로 암호화하여야 한다.
      • 개인정보처리자는 개인정보를 정보통신망을 통하여 인터넷망 구간으로 송,수신 하는 경우에는 이를 안전한 암호 알고리즘으로 암호화하여야 한다.

 

④ SSL/TLS 관련 보안가이드

  1. SSL/TLS 서버 인증서 생성 시 보안 가이드
    1. 키쌍(공개키/개인키) 생성 시 2048-Bit이상의 키를 사용하고 서버 개인키에대한 접근은 최소화하며 안전하게 관리한다.
    2. 인증서 발급 시 인증서 서명 알고리즘을 SHA-2(256-Bit) 이상으로 설정한다.
      • (SHA-1의 경우 2016년도부터 단계적으로 지원 중단)
    3. 인증서 발급 시 주체/소유자의 CN(Common name)을 서브 도메인까지 정확하게 명시한다.
      • (*.example.com 과 같은것 금지 -> img.example.com과 같이 악용 가능. 사용자가 입력한 URl 상의 도메인과 서버 인증서의 주체 CN이 일치하지 않을 경우, 웹브라우저에서 경고 메시지를 표시한다.)
      • 주체/소유자의 CN이 반드시 도메인만 가능한 것은 아니다. 만약 사설 인증서를 이용한다면, 인증서 발급 시 주체 CN을 IP 주소로 명시하여 IP 주소 기반으로 접속할 수 있다. 다만 서버 IP 주소가 바뀌면 인증서를 재발급해야한다.
    4. 신뢰할 수 있는 인증기관을 통해 인증서를 발급한다.
      • 신뢰할 수 있는 인증기관에서 발급한 인증서가 아니라면 웹브라우저에서 경고 메시지를 표시한다.

 

⑤ OpenSSL 라이브러리 보안 가이드

  1. (버전 업데이트) 취약점이 발견된 OpenSSl 라이브러리 버전을 사용할 경우 보안 업데이트를 수행한다. 
    • OpenSSL: SSL/TLS 프로토콜을 구현한 오픈소스 라이브러리. 다양한 암호화 도구,인증서 생성 도구 등 포함
    • 버전 확인법 : openssl version/openssl version -a 를 통해 상세 정보 확인

 

(Apache) SSL/TLS 웹서버 설정 보안 가이드

  1. 취약한 암호화 통신 방법으로 알려진 SSL2.0, SSL3.0프로토콜을 비활성화 하고 TLS1.0 ~ TLS1.2 프로토콜 사용
    • httpd-ssl.conf,ssl.conf파일 내 SSLProtocol all -SSLv2 -SSLv3 추가 또는,
    • httpd-ssl.conf,ssl.conf파일 내 SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2 추가
    • SSLProtocol 지시자 : 서버에서 지원할 SSL/TLS 버전 지정하는 지시자.
      • SSLProtocol all -SSLv2 -SSLv3 : 모든 SSL/TLS 프로토콜(all) 중에서 SSL2.0, SSL3.0프로토콜을 비활성화(-)
      •  SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2  : 모든 SSL/TLS 프로토콜을 비활성화하고(-all)  TLS1.0 ~ TLS1.2 프로토콜만 활성화(+) 한다.
  2. 취약한 암호 알고리즘을 사용하는 암호도구목록(Cipher Suite)을 제거한다.
    • SSLCipherSuite 지시자 : 암호도구목록을 지정하기 위한 지시자. Cipher Suite을 직접 명시하거나 다양한 태그를 이용하여 설정할 수 있으며 콜론(:)을 구분자로 사용한다.
    • SSL CipherSuite ALL : !aNULL : !eNULL : !EXP : !ADH : !DES : !RC4 : !MD5
      • ALL : 지원 가능한 모든 Cipher Suite 사용
      • !aNULL : 인증하지 않는 Cipher Suite 제거 (a=authentication)
      • !eNULL : 암호화하지 않는 Cipher Suite 제거 (e=encryption)
      • !EXP : 약한 암호키를 사용하는 수출용(EXPORT) Cipher Suite 제거
        • 수출용(EXPORT) Cipher suite은 90년대 미국의 암호시스템 수출 제한 정책에 따라 만들어진 약한 암호키의 Cipher Suite으로 암호강도가 낮아서 제거해야 한다.
      • !ADH : ADH(Anonymous Diffie-Hellman) Cipher Suite 제거
        • SSL/TLS 협상(Handshake) 과정에서 키교환 시 익명 디피 헬만(ADH:Anonymous Diffie-Hellman)을 사용하면 서버 Diffie-Hellman 파라미터 교환 과정에서 인증하지 않는 취약점이 있으므로 제거가 필요. 임시 디피 헬만(EDH:Ephemeral Diffe-Hellman)의 경우 키 교환 과정에서 서버 Diffie-Hellman 파라미터를 RSA,DSA 등의 서명 알고리즘으로 인증하므로 사용 권장.
      • !DES : !RC4 : !MD5 : 취약한 DES, RC4 암호화 알고리즘 및 MD5 해시 알고리즘을 사용하는 Cipher Suite 제거