Logjam 공격으로부터 데비안 또는 우분투 서버를 보호하는 방법
이 페이지에서
- 고유한 DH 그룹 생성\n
- 아파치
- 엔진엑스
- 접미사
- 비둘기장
- 순수-ftpd
- 링크
이 자습서에서는 최근에 감지된 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/