Sun Java System Web Proxy Server 4.0.4 관리 설명서

보안 기본 설정

인증서를 만든 후, 서버의 보안 작업을 시작할 수 있습니다. Sun Java System Web Proxy Server는 이 절에서 설명하는 여러 보안 요소를 제공합니다.

암호화는 정보를 변환하여 의도된 수신자 외에 아무도 알아볼 수 없도록 하는 프로세스입니다. 복호화는 암호화된 정보를 변환하여 다시 알아볼 수 있도록 하는 프로세스입니다. Proxy Server는 SSL(Secure Sockets Layer) 및 TLS(Transport Layer Security) 암호화 프로토콜을 지원합니다.

암호는 암호화 또는 복호화에 사용되는 암호화 알고리즘(수학 함수)입니다. SSL 및 TLS 프로토콜에는 다양한 암호 제품군이 포함됩니다. 보안의 안전성과 강도는 암호마다 다릅니다. 일반적으로 암호가 사용하는 비트의 수가 많을수록 데이터를 해독하는 것이 어렵습니다.

양방향 암호화 프로세스에서 양쪽에는 반드시 동일한 암호가 있어야 합니다. 다양한 암호를 사용할 수 있으므로 서버를 가장 공통적으로 사용되는 암호용으로 활성화해야 합니다.

보안 연결에서 클라이언트와 서버는 양쪽이 통신에 사용할 수 있는 가장 강력한 암호화를 사용하도록 동의합니다. SSL 2.0, SSL 3.0 및 TLS 프로토콜에서 암호를 선택할 수 있습니다.


주 –

SSL 버전 2.0 이후 보안과 성능이 향상되었으므로 SSL 3.0을 사용할 수 있는 클라이언트가 아닌 경우에는 SSL 2.0을 사용하면 안 됩니다. 클라이언트 인증서가 SSL 2.0 암호와 작동되도록 보장되지 않습니다.


암호화 프로세스 그 자체로는 서버의 비밀 정보를 보안하는 데 충분하지 않습니다. 실제의 암호화 결과를 생성하거나 이전에 암호화된 정보를 해독하려면 키를 암호화 암호와 함께 사용해야 합니다. 이를 위해서 암호화 프로세스에는두 가지 키(공용 키와 개인 키)가 사용됩니다. 공용 키로 암호화된 정보는 오직 연결된 개인 키로만 해독할 수 있습니다. 공용 키는 인증서의 일부로 게시됩니다. 연결된 개인 키만 보호할 수 있습니다.

다양한 암호 제품군에 대한 설명과 키 및 인증서에 대한 자세한 내용은 SSL 개요를 참조하십시오.

서버에서 사용할 수 있는 암호를 지정할 수 있습니다. 암호화 성능이 최적인 암호를 활성화하려면 특정 암호를 사용하면 안 되는 충분한 이유가 있지 않는 한,모두 선택해야 합니다.


주의 – 주의 –

Enable No Encryption, Only MD5 Authentication을 선택하지 마십시오. 클라이언트 측에 사용 가능한 다른 암호가 없는 경우 서버는 이 설정을 기본값으로 사용하며 암호화가 수행되지 않습니다.


이 절에서는 다음 항목에 대해 설명합니다.

SSL 및 TLS 프로토콜

프록시 서버는 암호화 통신에 SSL 및 TLS 프로토콜을 지원합니다. SSL 및 TLS는 응용 프로그램에 독립적이며 더 높은 수준의 프로토콜과 함께 투명하게 계층을 이룰 수 있습니다.

SSL과 TLS 프로토콜은 서버와 클라이언트가 서로를 인증하고, 인증서를 전송하며 세션 키를 설정하는 등의 작업에 사용되는 다양한 암호를 지원합니다. 클라이언트와 서버는 지원하는 프로토콜, 암호화 정도에 대한 회사 정책, 암호화된 소프트웨어의 수출에 대한 정부 규제 등, 다양한 요인에 따라 지원하는 암호 제품군이 달라집니다. 다른 기능 중 SSL과 TLS 핸드셰이크 프로토콜에 따라 서버와 클라이언트가 통신에 사용할 암호 제품군을 선택하는 방식을 결정됩니다.

SSL을 사용하여 LDAP와 통신

Administration Server는 SSL을 사용하여 LDAP와 통신하도록 해야 합니다.


주 –

이 경우 Proxy Server는 SSL 클라이언트 역할을 하며 SSL 서버 LDAP 인증서를 서명한 루트 CA 인증서를 가져와야 합니다. LDAP에 대한 SSL 인증서가 잘 알려진 CA에서 발행되지 않은 경우 사용된 CA 루트 키를 Proxy Server 키 저장소로 가져와야 합니다.


ProcedureAdministration Server에서 SSL 연결로 LDAP를 활성화하는 방법

  1. Administration Server에 액세스하고 Global Settings 탭을 누릅니다.

  2. Configure Directory Service 링크를 누릅니다.

  3. 나타나는 표에서 디렉토리 서비스에 대한 링크를 누릅니다.

    Configure Directory Service 페이지가 표시됩니다. LDAP 기반 디렉토리 서비스를 아직 만들지 않은 경우 Create New Service of Type 드롭다운 목록에서 LDAP Server를 선택한 다음 New를 눌러 디렉토리 서비스를 구성합니다. LDAP 기반 디렉토리 서비스에 대해 표시되는 특정 필드에 대한 자세한 내용은 온라인 도움말을 참조하십시오.

  4. 연결에 SSL을 사용하도록 Yes를 선택한 다음 Save Changes를 누릅니다.

Proxy Server를 통해 SSL 터널링

Proxy Server(프록시)를 정방향으로 실행할 때 클라이언트가 프록시를 통해 보안 서버에 대한 SSL 연결을 요청하면, 프록시는 보안 서버에 대한 연결을 연 다음 보안 트랜잭션에 관여하지 않고 양방향으로 데이터를 복사합니다. 이 프로세스를 SSL 터널링이라고 하며 아래 그림에서 설명합니다.

그림 5–1 SSL 연결

클라이언트에서 프록시 서버를 통해 보안 서버로 가는 SSL 연결을 보여 주는 그림

HTTPS URL에 SSL 터널링을 사용하려면 클라이언트는 SSL과 HTTPS를 모두 지원해야 합니다. HTTPS는 일반 HTTP에 SSL을 사용하여 구현됩니다. HTTPS 지원이 없는 클라이언트도 Proxy Server의 HTTPS 프록싱 기능을 사용하여 HTTPS 문서에 액세스할 수 있습니다.

SSL 터널링은 응용 프로그램 수준(HTTPS)에 영향을 미치지 않는 더 낮은 수준의 작동입니다. SSL 터널링은 프록싱이 없는 SSL만큼 안전합니다. 사이에 프록시가 있어도 보안이 손상되거나 SSL 기능이 저하되지 않습니다.

SSL을 통해 데이터 스트림이 암호화되므로 프록시가 실제 트랜잭션에 액세스할 수 없습니다. 따라서 액세스 로그가 원격 서버에서 수신된 상태 코드나 헤더 길이를 나열할 수 없습니다. 또한 이 프로세스를 통해 프록시 또는 다른 제 3자가 트랜잭션을 도청하는 것을 방지할 수 있습니다.

프록시는 데이터를 볼 수 없으므로 클라이언트와 원격 서버 사이에 사용되는 프로토콜이 SSL인지 확인할 수 없습니다. 따라서 프록시도 다른 프로토콜이 통과되는 것을 차단할 수 없습니다. IANA(Assigned Numbers AuthorityIANA)에 의해 할당된 HTTPS용 포트 443 및 SNEWS용 포트 563과 같이 잘 알려진 SSL 포트로만 SSL 연결을 제한해야 합니다. 다른 포트에서 보안 서버를 실행하는 사이트가 있는 경우 connect://.* 자원을 사용하여 명시적으로 예외를 지정하여 특정 호스트에 있는 다른 포트에 대한 연결을 허용할 수 있습니다.

SSL 터널링 기능은 실제로 프로토콜에 독립적인 일반 SOCKS의 기능과 유사하기 때문에 다른 서비스에도 이 기능을 사용할 수 있습니다. 프록시 서버는 HTTPS 및 SNEWS 프로토콜뿐만 아니라 SSL을 지원하는 모든 응용 프로그램에 대한 SSL 터널링을 처리할 수 있습니다.

SSL 터널링 구성

다음 절차에서는 SSL을 터널링하도록 Proxy Server를 구성하는 방법에 대해 설명합니다.

ProcedureSSL 터널링 구성 방법

  1. 서버 인스턴스에 대해 Server Manager에 액세스하고 Routing 탭을 누릅니다.

  2. Enable/Disable Proxying 링크를 누릅니다.

  3. 드롭다운 목록에서 connect://.*.443 자원을 선택합니다.

    connect:// 메소드는 내부 프록시 표기법으로 프록시의 외부에는 존재하지 않습니다. connect에 대한 자세한 내용은 SSL 터널링에 대한 기술적 세부 정보를 참조하십시오.

    다른 포트에 대한 연결을 허용하려면 템플리트에 비슷한 URL 패턴을 사용합니다. 템플리트에 대한 자세한 내용은 16 장, 템플리트 및 자원 관리을 참조하십시오.

  4. Enable Proxying Of This Resource를 선택하고 OK를 누릅니다.


    주의 – 주의 –

    프록시가 잘못 구성되면 이 프록시를 사용하여 telnet 연결이 실제 연결하는 호스트가 아닌 프록시 호스트에서 들어오는 것처럼 나타나게 할 수 있습니다. 따라서 절대적으로 필요하지 않은 포트는 허용하지 말고 프록시에서 액세스 제어를 사용하여 클라이언트 호스트를 제한해야 합니다.


SSL 터널링에 대한 기술적 세부 정보

내부적으로 SSL 터널링은 CONNECT 메소드를 사용하고 대상 호스트 이름과 포트 번호를 매개 변수로 지정한 다음 빈 행을 추가합니다.

CONNECT energy.example.com:443 HTTP/1.0

Proxy Server의 성공적인 응답은 다음과 같으며 뒤에 빈 줄이 옵니다.

HTTP/1.0 200 Connection establishedProxy-agent: Sun-Java-System-Web-Proxy-Server/4.0

그러면 클라이언트와 원격 서버 사이에 연결이 설정됩니다. 한 쪽 연결이 닫히기 전까지 데이터를 양방향으로 전송할 수 있습니다.

내부적으로는 URL 패턴에 따라 일반적인 구성 메커니즘을 활용하려면 다음과 같이 호스트 이름 및 포트 번호를 자동으로 URL에 매핑해야 합니다.

connect://energy.example.com:443

connect://는 구성을 용이하게 하고 다른 URL 패턴과 일치하도록 Proxy Server에서 사용하는 내부 표기법입니다. Proxy Server 외부에는 connect URL이 존재하지 않습니다. Proxy Server가 네트워크에서 이런 URL을 수신하면 URL을 유효하지 않은 것으로 표시하고 해당 요청에 대한 서비스를 거부합니다.

청취 소켓용 보안 사용 설정

다음을 수행하여 서버의 청취 소켓을 보안할 수 있습니다.


주 –

보안은 역방향 프록시 모드에서만 활성화할 수 있고 정방향 프록시 모드에서는 활성화할 수 없습니다.


보안 기능 사용

청취 소켓용으로 다른 보안 설정을 구성하기 전에 반드시 보안을 사용하도록 설정해야 합니다. 새 청취 소켓을 만들거나 기존 청취 소켓을 편집할 때 보안을 사용하도록 설정할 수 있습니다.

Procedure청취 소켓을 만들 때 보안을 사용하도록 설정하는 방법

  1. Administration Server 또는 Server Manager에 액세스하고 Preferences 탭을 누릅니다.

  2. Add Listen Socket 링크를 누릅니다.

  3. 필요한 정보를 입력합니다.


    주 –

    청취 소켓을 만든 후 보안 설정을 구성하려면 Edit Listen Sockets 링크를 사용합니다.


  4. 보안을 사용하도록 설정하려면 Security 드롭다운 목록에서 Enabled를 선택한 다음 OK를 누릅니다.

    서버 인증서가 설치되지 않은 경우에는 Disabled만 선택할 수 있습니다. 특정 설정에 대한 자세한 내용은 온라인 도움말을 참조하십시오.

Procedure청취 소켓을 편집할 때 보안을 사용하도록 설정하는 방법

  1. Administration Server 또는 Server Manager에 액세스하고 Preferences 탭을 누릅니다.

  2. Edit Listen Sockets 링크를 누릅니다.

  3. 편집할 청취 소켓에 대한 링크를 누릅니다.

  4. Security 드롭다운 목록에서 Enabled를 선택한 다음 OK를 누릅니다.

    서버 인증서가 설치되지 않은 경우에는 Disabled만 선택할 수 있습니다.

청취 소켓용 서버 인증서 선택

Administration Server나 Server Manager에서 청취 소켓을 구성하여 요청 및 설치한 서버 인증서를 사용할 수 있습니다.


주 –

인증서를 한 개 이상 설치해야 합니다.


Procedure청취 소켓용 서버 인증서를 선택하는 방법

  1. Administration Server 또는 Server Manager에 액세스하고 Preferences 탭을 누릅니다.

  2. Edit Listen Sockets 링크를 누릅니다.

  3. 편집할 청취 소켓에 대한 링크를 누릅니다.

  4. Security 드롭다운 목록에서 Enabled를 선택한 다음 OK를 누릅니다.

    서버 인증서가 설치되지 않은 경우에는 Disabled만 선택할 수 있습니다.

  5. Server Certificate Name 드롭다운 목록에서 해당 청취 소켓의 서버 인증서를 선택하고 OK를 누릅니다.

암호 선택

Proxy Server의 보안을 보호하려면 SSL을 활성화해야 합니다. SSL 2.0, SSL 3.0, 및 TLS 암호화 프로토콜을 활성화하고 다양한 암호 제품군을 선택할 수 있습니다. SSL 및 TLS 프로토콜은 Administration Server용 청취 소켓에서 활성화할 수 있습니다. Server Manager용 청취 소켓에서 SSL 및 TLS를 활성화하면 특정 서버 인스턴스에 대한 해당 보안 기본 설정이 지정됩니다. 인증서를 한 개 이상 설치해야 합니다.


주 –

청취 소켓에서 SSL를 활성화하는 것은 Proxy Server가 역방향 프록싱을 수행하도록 구성된 경우에만 적용됩니다.


기본 설정의 경우 가장 많이 사용되는 암호를 허용합니다. 특정 암호 제품군을 사용하면 안 되는 충분한 이유가 있지 않는 한, 모두 선택해야 합니다.

TLS Rollback에 대한 기본 및 권장 설정은 Enabled입니다.이 설정은 “중간개입자(man-in-the-middle) 버전 롤백” 공격 시도를 감지하도록 서버를 구성합니다. TLS 사양을 잘못 구현한 일부 클라이언트와의 상호 운영성을 위해 TLS Rollback을 Disabled로 설정해야 할 수 있습니다.

TLS Rollback을 비활성화하면 연결이 버전 롤백 공격에 취약해집니다. 버전 롤백 공격은 클라이언트와 서버가 SSL 2.0과 같이 보안이 약한 이전 프로토콜을 사용하도록 제 3자가 강제로 조정할 수 있는 메커니즘입니다. SSL 2.0 프로토콜에는 알려진 결함이 있으므로 "버전 롤백" 공격을 감지하지 못하면 제 3자가 더 쉽게 암호화된 연결을 가로채어 해독할 수 있습니다.

ProcedureSSL 및 TLS 활성화 방법

  1. Administration Server 또는 Server Manager에 액세스하고 Preferences 탭을 누릅니다.

  2. Edit Listen Sockets 링크를 누른 다음 편집할 청취 소켓의 링크를 누릅니다.

    보안 청취 소켓의 경우 사용 가능한 암호 설정이 표시됩니다.

    청취 소켓에서 보안을 활성화하지 않은 경우 SSL 및 TLS 정보가 나열되지 않습니다. 암호를 사용하려면 선택한 청취 소켓에서 보안이 사용되도록 설정해야 합니다. 자세한 내용은 청취 소켓용 보안 사용 설정를 참조하십시오.

  3. 필요한 암호화 설정에 해당하는 확인란을 선택하고 OK를 누릅니다.

  4. Netscape Navigator 6.0의 경우 TLS 및 SSL 3.0을 모두 선택합니다. TLS Rollback의 경우에는 TLS를 선택하고 SSL 3.0 및 SSL 2.0을 모두 비활성화해야 합니다.

    서버에서 SSL을 활성화하면 URL은 http가 아닌 https를 사용합니다. SSL 사용 서버의 문서를 가리키는 URL의 형식은 다음과 같습니다. https://servername.domain .dom: port 예: https://admin.example.com:443

    기본 보안 HTTP 포트(443)를 사용하는 경우 URL에 포트 번호를 입력하지 않아도 됩니다.

전역적 보안 구성

SSL 사용 서버를 설치하면 magnus.conf 파일(서버의 기본 구성 파일)에전역 보안 매개 변수용 지시문 항목이 만들어집니다.

SSLSessionTimeout

SSLSessionTimeout 지시문은 SSL 2.0 세션 캐시를 제어합니다. 구문:

SSLSessionTimeout seconds

여기서 seconds는 캐시된 SSL 세션의 유효 시간(초)입니다. 기본값은 100입니다. SSLSessionTimeout 지시문이 지정되면 초 단위 값은 자동으로 5에서 100초로 제한됩니다.

SSLCacheEntries

캐시할 수 있는 SSL 세션의 수를 지정합니다.

SSL3SessionTimeout

SSL3SessionTimeout 지시문은 3.0 및 TLS 세션 캐시를 제어합니다. 구문:

SSL3SessionTimeout seconds

여기서 seconds는 캐시된 SSL 3.0 세션의 유효한 시간(초)입니다. 기본값은 86400(24시간)입니다. SSL3SessionTimeout 지시문이 지정되면 초 단위 값은 자동으로 5초에서 86400초 사이로 제한됩니다.

ProcedureSSL 구성 파일 지시문에 대한 값을 설정하는 방법

  1. 서버 인스턴스에 대한 Sever Manager에 액세스합니다.

  2. 구성하려는 청취 소켓에서 보안을 사용하는지 확인하십시오.

    자세한 내용은 청취 소켓용 보안 사용 설정를 참조하십시오.

  3. magnus.conf 파일을 수동으로 편집하여 다음 설정에 대한 값을 제공합니다.

    • SSLSessionTimeout

    • SSLCacheEntries

    • SSL3SessionTimeout

    magnus.conf에 대한 자세한 내용은 Sun Java System Web Proxy Server 4.0.4 Configuration File Reference 를 참조하십시오.