Apache에서 ‘logjam’취약점을 해결하는 방법 (httpd) 프로토콜이 미국에서 수출되는 것을 막는 1990 년대

최근에 비공식적으로 ‘logjam’이라고하는 Diffie-Hellman의 새로운 취약점이 발표되었으며, 이 페이지 에서 취약점을 해결하는 방법을 제안합니다.

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

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

위 권장 사항에 따라 서버를 보호하기 위해 수행해야 할 가장 좋은 단계는 무엇입니까?



답변

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

  1. 내보내기 암호 스위트 비활성화

아래 2에서 구성 변경 사항 !EXPORT을 처리하십시오 ( SSLCipherSuite줄 끝 부분은 내보내기 암호 제품군을 비활성화하는 방법입니다)

  1. ECDHE (Ephemeral) Elliptic-Curve Diffie-Hellman 배포

이를 위해, 당신은 당신의 아파치 설정 파일에 몇 가지 설정을 편집해야합니다 – 즉 SSLProtocol, SSLCipherSuite, SSLHonorCipherOrder는 “모범 사례”설정을 할 수 있습니다. 다음과 같은 것으로 충분합니다.

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이를 사용하여 해당 서버로 전송 하여 사용하여이 잠재적 문제를 항상 해결할 수 있습니다.

Apache 설명서dhparams 에서 Apache에서 새로 생성 된 것을 사용하려면 다음 을 수행하십시오 .

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

(강조 광산)

그런 다음 표준 1024 비트 DH 매개 변수가 이어집니다. 이를 통해 맞춤형 생성 된 DH 매개 변수가 해당 관련 항목 SSLCertificateFile에 추가 될 수 있음을 알 수 있습니다 .

이렇게하려면 다음과 유사한 것을 실행하십시오.

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

또는 원래 링크 한 기사 의 Apache 하위 섹션 에 따라 인증서 파일 자체를 변경하지 않으려는 경우 작성한 사용자 정의 dhparams 파일을 지정할 수도 있습니다.

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

Apache 구성이 특정 SSL / TLS 구현과 관련 이 있는 conf.d/ssl.conf경우 ( 일반적으로 또는 conf.d/vhosts.conf아파치 구성에 따라 다름)

이에 따라, 그 주목할 가치가 이 링크 ,

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 및 이 특정 취약성 관련 기사 에서 테스트를 실행하여 구성이 원하는지 확인해야 합니다.


답변

: Winni Neessen의 패치를 바탕으로 나는 (우분투에 아마 또한 사용 가능한 데비안 위지) 아파치 / 2.2.22에 대한 수정 발표 한 https://flo.sh/debian-wheezy-apache2-logjam-fix/ – 들으 . 귀하의 의견에.


답변

위의 ‘해킹’의 복잡한 경로를 사용하는 대신 캐싱이나 프록시가 아닌 기본 웹 서버 소프트웨어 로 nginx전환하는 것을 고려 하십시오. 분명히 기존 아파치 엔진보다 보안 측면에서 현재 표준에 더 가깝습니다. nginx 저장소를 사용하면 아파치보다 안정적인 최신 웹 서버 엔진을 제공합니다.

나는 완전히 전환했다. 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