웹사이트 검색

Logjam 공격으로부터 데비안 또는 우분투 서버를 보호하는 방법


이 자습서에서는 최근에 감지된 Logjam 공격으로부터 Ubuntu 또는 Debian Linux 서버를 보호하기 위해 수행해야 하는 단계를 설명합니다. Logjam은 HTTPS, TLS, SMTPS, SSH 등과 같은 대중적인 암호화 프로토콜에서 사용되는 Diffie-Hellman 키 교환에 대한 공격입니다. 자세한 설명은 https://weakdh.org/에서 찾을 수 있습니다.

이 자습서는 Debian 및 Ubuntu의 ISPConfig 3 설정과 호환됩니다.

다음 단계는 셸에서 루트 사용자로 실행해야 합니다.

고유한 DH 그룹 생성

서버 보안을 위한 첫 번째 단계는 openssl 명령을 사용하여 고유한 DH 그룹을 생성하는 것입니다. /etc/ssl/private/ 디렉토리에 파일을 생성하겠습니다. 서버에 이 디렉터리가 없으면 다음 명령을 사용하여 만듭니다.

mkdir -p /etc/ssl/private
chmod 710 /etc/ssl/private

이제 dhparams.pem 파일을 만들고 보안 권한을 설정하겠습니다.

cd /etc/ssl/private
openssl dhparam -out dhparams.pem 2048
chmod 600 dhparams.pem

아파치

먼저 weakdh.org의 권장 사항을 기반으로 보안 암호 제품군을 추가하겠습니다. 편집기로 /etc/apache2/mods-available/ssl.conf 파일을 엽니다.

nano /etc/apache2/mods-available/ssl.conf

다음 줄을 변경하거나 추가하십시오.

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

SSLCipherSuide는 하나의 긴 줄이므로 줄 바꿈을 추가하지 마십시오!

두 번째 부분은 아파치에서 DH 그룹을 설정하는 것입니다. SSLOpenSSLConfCmd 구성 옵션은 apache 2.4.8 이상에서만 사용할 수 있으며 openssl 1.0.2 이상이 필요하므로 apache 및 openssl 버전이 지원하는지 먼저 테스트해야 합니다.

apache2 -v

내 Debian 7 서버의 출력은 다음과 같습니다.

:/etc/apache2# apache2 -v
Server version: Apache/2.2.22 (Debian)
Server built: Dec 23 2014 22:48:29

이제 openssl을 테스트하겠습니다.

openssl version

내 시스템의 출력은 다음과 같습니다.

:/# openssl version
OpenSSL 1.0.1e 11 Feb 2013

따라서 이 서버에서 DH 그룹을 설정할 수 없습니다. 첫 번째 부분과 두 번째 부분은 서로 독립적이며 첫 번째 부분은 서버를 보호하기 위해 이미 약한 암호를 비활성화했으며 DH 그룹 없이도 작동합니다. 최신 OpenSSL 양식 소스를 설치하려면 이 가이드를 확인하세요. Apache 버전이 > 2.4.8이고 OpenSSL > 1.0.2인 경우 /etc/apache2/mods-available/ssl.conf 파일을 다시 편집합니다.

nano /etc/apache2/mods-available/ssl.conf

다음 행을 추가하십시오.

SSLOpenSSLConfCmd DHParameters "/etc/ssl/private/dhparams.pem"

아파치를 다시 시작하십시오.

service apache2 restart

엔진엑스

Nginx 구성 파일 편집 /etc/nginx/nginx.conf

nano /etc/nginx/nginx.conf

httpd { .... } 섹션 내에서 다음 설정을 추가하거나 바꿉니다.

ssl_ciphers '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';
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/private/dhparams.pem;

그리고 Nginx를 다시 시작합니다.

service nginx restart

접미사

보안 암호화 제품군 및 DH 그룹을 설정하려면 다음 명령을 실행하십시오.

postconf -e "smtpd_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA"
postconf -e "smtpd_tls_dh1024_param_file = /etc/ssl/private/dhparams.pem"

그리고 접미사를 다시 시작하십시오.

service postfix restart

비둘기장

dovecot 구성 파일 편집 /etc/dovecot/dovecot.conf

nano /etc/dovecot/dovecot.conf

다음 줄을 추가합니다.

ssl_cipher_list=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

ssl_protocols 줄 바로 뒤에 있습니다.

다른 매개변수의 경우 dovecot 버전을 알아야 합니다. 쉘에서 dovecot 버전 정보를 얻으려면 다음 명령을 실행하십시오.

dovecot --version

버전이 2.2.6 이상인 경우 다음 행을 추가하십시오.

ssl_prefer_server_ciphers = yes

버전이 2.2.7 이상인 경우 다음 세 번째 줄을 추가합니다.

ssl_dh_parameters_length = 2048

마지막으로 dovecot을 다시 시작하십시오.

service dovecot restart

순수한 FTPD

데비안과 우분투에서 pure-ftpd를 보호하는 것은 /usr/sbin/pure-ftpd-wrapper 스크립트가 SSL Cipher Suite를 설정하기 위해 pure-ftpd에 의해 사용되는 기본 -J 스위치를 지원하지 않기 때문에 좀 더 복잡합니다. . 첫 번째 단계는 래퍼 스크립트에서 -J 옵션에 대한 지원을 추가하는 것입니다. 파일 열기:

nano /usr/sbin/pure-ftpd-wrapper

그리고 다음 줄까지 아래로 스크롤합니다.

'TLS' => ['-Y %d', \&parse_number_1],

이제 바로 뒤에 이 새 줄을 추가합니다.

'TLSCipherSuite' => ['-J %s', \&parse_string],

그런 다음 nano를 사용하여 /etc/pure-ftpd/conf/TLSCipherSuite 파일을 생성(또는 존재하는 경우 편집)합니다.

nano /etc/pure-ftpd/conf/TLSCipherSuite

다음 암호 목록을 입력하십시오.

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

파일이 이미 존재하고 일부 암호가 포함된 경우 암호를 위의 암호로 바꿉니다. 그런 다음 파일을 저장하고 pure-ftpd를 다시 시작합니다.

service pure-ftpd-mysql restart

연결

  • https://weakdh.org/