Поиск по сайту:

Как защитить свой сервер Debian или Ubuntu от атаки Logjam


В этом руководстве описываются шаги, которые необходимо предпринять для защиты вашего Ubuntu или Debian Linux Server от недавно обнаруженной атаки Logjam. Logjam — это атака на обмен ключами Диффи-Хеллмана, который используется в популярных протоколах шифрования, таких как HTTPS, TLS, SMTPS, SSH и других. Подробное описание можно найти здесь https://weakdh.org/.

Это руководство совместимо с настройками ISPConfig 3 в Debian и Ubuntu.

Следующие шаги должны быть выполнены от имени пользователя root в оболочке.

Создайте уникальную группу DH

Первым шагом для защиты вашего сервера является создание уникальной группы DH с помощью команды openssl. Я создам файл в каталоге /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 в apache. Параметр конфигурации 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

Отредактируйте файл конфигурации 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 --version

Если версия 2.2.6 или выше, добавьте эту дополнительную строку:

ssl_prefer_server_ciphers = yes

Если версия 2.2.7 или выше, добавьте эту третью строку:

ssl_dh_parameters_length = 2048

Наконец перезапустите голубятню

service dovecot restart

Чистый ftpd

Защита pure-ftpd в Debian и Ubuntu немного сложнее, так как скрипт /usr/sbin/pure-ftpd-wrapper не поддерживает ключ -J из коробки, который используется pure-ftpd для установки SSL Cipher Suite. . Первый шаг – добавить поддержку параметра -J в скрипт-оболочку. Откройте файл:

nano /usr/sbin/pure-ftpd-wrapper

И прокрутите вниз до строки:

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

Теперь добавьте эту новую строку сразу после этого:

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

Затем создайте (или отредактируйте, если он существует) файл /etc/pure-ftpd/conf/TLSCipherSuite с помощью nano:

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/