Apache(httpd)의 'logjam' 취약점을 수정하는 방법

Apache(httpd)의 'logjam' 취약점을 수정하는 방법

최근 비공식적으로 'logjam'이라고 불리는 Diffie-Hellman의 새로운 취약점이 공개되었습니다.이 페이지취약점에 대응하는 방법을 제안하는 내용은 다음과 같습니다.

TLS용 Diffie-Hellman을 올바르게 배포하기 위한 세 가지 권장 사항이 있습니다.

  1. 암호화 제품군 내보내기를 비활성화합니다.최신 브라우저는 더 이상 내보내기 제품군을 지원하지 않지만 FREAK 및 Logjam 공격을 통해 중간자 공격자가 브라우저를 속여 내보내기 등급 암호화를 사용하도록 한 다음 TLS 연결을 해독할 수 있습니다. 수출 암호는 강력한 암호화 프로토콜이 미국에서 수출되는 것을 막았던 1990년대 정책의 잔재입니다. 최신 클라이언트는 내보내기 제품군에 의존하지 않으며 이를 비활성화해도 단점이 거의 없습니다.
  2. (임시) 타원 곡선 Diffie-Hellman(ECDHE)을 배포합니다.ECDH(Elliptic-Curve Diffie-Hellman) 키 교환은 알려진 모든 가능한 암호화 공격을 방지하며, 최신 웹 브라우저는 이제 원래의 유한 필드인 Diffie-Hellman보다 ECDHE를 선호합니다. 표준 Diffie-Hellman 그룹을 공격하는 데 사용한 이산 로그 알고리즘은 사전 계산에서 이점을 얻지 못하며 개별 서버는 고유한 타원 곡선을 생성할 필요가 없습니다.
  3. 강력하고 독특한 Diffie Hellman 그룹 생성. 몇 개의 고정 그룹은 수백만 대의 서버에서 사용되므로 사전 계산 및 잠재적인 도청을 위한 최적의 대상이 됩니다. 관리자는 각 웹 사이트 또는 서버에 대해 "안전한" 소수를 사용하여 고유한 2048비트 이상의 Diffie-Hellman 그룹을 생성해야 합니다.

위의 권장 사항에 따라 서버를 보호하기 위해 취해야 할 모범 사례 단계는 무엇입니까?

답변1

로부터당신이 링크한 기사, 이 취약점으로부터 자신을 보호하기 위해 권장되는 세 가지 단계가 있습니다. 원칙적으로 이러한 단계는 SSL/TLS와 함께 사용할 수 있는 모든 소프트웨어에 적용되지만 여기서는 해당 소프트웨어인 Apache(httpd)에 적용하는 구체적인 단계를 다루겠습니다.

  1. 내보내기 암호화 제품군 비활성화

아래 2.에서 수행할 구성 변경 사항을 처리합니다( !EXPORT줄 끝 부분에 SSLCipherSuite내보내기 암호화 제품군을 비활성화하는 방법이 나와 있습니다).

  1. 배포(임시) 타원 곡선 Diffie-Hellman(ECDHE)

이를 위해서는 Apache 구성 파일에서 몇 가지 설정, 즉 "모범 사례" 설정을 편집 해야 SSLProtocol합니다 . 다음과 같은 것으로 충분합니다.SSLCipherSuiteSSLHonorCipherOrder

SSLProtocol             all -SSLv2 -SSLv3

SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

SSLHonorCipherOrder     on

참고: SSLCipherSuite사용할 설정은 항상 변경되므로 다음과 같은 리소스를 참조하는 것이 좋습니다.이 하나최신 권장 구성을 확인하세요.

3. 강력하고 독특한 Diffie Hellman 그룹 생성

그렇게 하려면 다음을 실행할 수 있습니다.

openssl dhparam -out dhparams.pem 2048.

scp이렇게 하면 매개변수가 생성되는 동안 서버에 상당한 로드가 발생합니다. 다른 시스템에서 매개변수를 생성하고 사용하기 위해 이를 문제의 서버로 전송하는 등의 방법을 사용하면 언제든지 이 잠재적인 문제를 해결할 수 있습니다 .

dhparamsApache에서 새로 생성된 이들을 사용하려면아파치 문서:

사용자 정의 DH 매개변수를 생성하려면 openssl dhparam 명령을 사용하십시오. 또는 다음을 수행할 수 있습니다.다음을 추가하세요RFC 2409, 섹션 6.2의 표준 1024비트 DH 매개변수해당 SSLCertificateFile 파일에:

(강조는 내 것)

그 다음에는 표준 1024비트 DH 매개변수가 옵니다. 이를 통해 우리는 맞춤 생성된 DH 매개변수가 SSLCertificateFile문제의 관련 항목에 간단히 추가될 수 있음을 추론할 수 있습니다.

그렇게 하려면 다음과 유사한 명령을 실행하십시오.

cat /path/to/custom/dhparam >> /path/to/sslcertfile

또는 다음과 같이아파치 하위 섹션원래 링크한 기사에서 인증서 파일 자체를 변경하지 않으려면 생성한 사용자 정의 dhparams 파일을 지정할 수도 있습니다.

SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"

특정 SSL/TLS 구현과 관련된 Apache 구성이 무엇이든 상관 없습니다. 일반적으로 conf.d/ssl.conf또는 conf.d/vhosts.confApache 구성 방법에 따라 다릅니다.

다음과 같이 주목할 가치가 있습니다.이 링크,

Apache 2.4.7 이전에는 DH 매개변수가 항상 1024비트로 설정되었으며 사용자가 구성할 수 없습니다. 이 문제는 Red Hat이 httpd-2.2.15-32.el6을 사용하여 RHEL 6 Apache 2.2 배포판으로 백포트한 mod_ssl 2.4.7에서 수정되었습니다.

Debian Wheezy에서 apache2를 2.2.22-13+deb7u4 이상으로 업그레이드하고 openssl을 1.0.1e-2+deb7u17로 업그레이드하세요. 위의 SSLCipherSuite는 완벽하게 작동하지 않습니다. 대신 다음을 사용하십시오.이 블로그:

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES128-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-CAMELLIA128-SHA:!DHE-RSA-CAMELLIA256-SHA

배포판에 따라 Apache 버전이 이 버전 번호보다 최신인지 확인하고, 그렇지 않은 경우 가능하면 업데이트해야 합니다.

위 단계를 수행하여 구성을 업데이트하고 Apache 서비스를 다시 시작하여 변경 사항을 적용한 후에는 테스트를 실행하여 구성이 원하는 대로 이루어졌는지 확인해야 합니다.SSLLabs그리고 계속기사이 특정 취약점과 관련이 있습니다.

답변2

Winni Neessen 패치를 기반으로 Apache/2.2.22(Debian Wheezy, Ubuntu에서도 사용할 수 있음)에 대한 수정 사항을 게시했습니다.https://flo.sh/debian-wheezy-apache2-logjam-fix/- 고마워. 귀하의 피드백을 위해.

답변3

위의 '해킹'의 복잡한 경로를 진행하는 대신 다음을 고려하세요.nginx로 전환(단지 캐싱이나 프록시가 아닌) 기본 웹 서버 소프트웨어로 사용됩니다. 확실히 기존 아파치 엔진보다 보안 측면에서 현재 표준에 더 부합하는 것 같습니다. nginx 저장소를 사용하면 Apache보다 더 안정적인 최신 웹 서버 엔진을 제공할 수 있습니다.

나는 완전히 전환했습니다. TLS와 관련하여 많은 시간이 소요되는 문제 해결을 절약했으며, 구성의 경우 동시에 많은 RAM을 확보했습니다. 사실, 나는 익숙해진 httpd/apache의 수많은 구성 복잡성에 비해 nginx를 사용하는 것이 매우 간단하고 간단하다는 것을 알았습니다. 취향의 문제일 수도 있지만, 저는 전환하기 전에 httpd/apache rewrite/config/maintenance에 꽤 능숙해졌고, 걱정했던 것보다 쉬웠습니다. 온라인에서 사용할 수 있는 nginx 구성에 대한 적절한 최신 정보가 있으며 사용자 기반은 거대하고 매우 활동적이며 지원 친화적입니다. https://news.netcraft.com/wp-content/uploads/2018/11/wpid-wss-top-1m-share.png

관련 정보