Отключение SSLv3 для уязвимости POODLE

Отключение SSLv3 для уязвимости POODLE

Недавно была найдена уязвимость в SSL в протоколе 3.0 и имеет имя -POODLE .

Протокол SSL 3.0 делает возможным использование шифров в режиме CBC (CBC-mode), что позволяет человеку использовать атаку с использованием стеков padding-oracle. Эти атаки нацелены на шифры CBC, чтобы получить обычный текст  из зашифрованной информации.

Для того, чтобы решить эту проблему, мы должны отключить SSLv3 для всех приложений которые использую данное шифрование. К сожалению нет никакого способа, чтобы выполнить данное исправление это для всего сервера сразу. Вам нужно будет редактировать каждый индивидуальный файл конфигурации. И я в своей теме «Отключение SSLv3 для уязвимости POODLE» расскажу как можно защитится от данной уязвимости и на готовых примерах покажу как этого добиться.

Отключения SSLv3

Большинство людей  не отключают SSLv3, потому что они не используют SSLv3 соединения через SSL/TLS. А это не правильно и его нужно отключить принудительно до того как исправят данную уязвимость.

Тестирование (проверка) на использование SSLv3

Есть несколько способов чтобы определить, работает ли SSL с использованием SSLv3. Простой способ состоит в использовании клиента командной строки OpenSSL, выполните следующую команду:

# openssl s_client -connect linux-notes.org:443 -ssl3

И получим вывод:

CONNECTED(00000003)
depth=3 /C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
0 s:/description=Free SSL Cert apply URL: https://buy.wosign.com/free/CN=linux-notes.org
i:/C=CN/O=WoSign CA Limited/CN=WoSign CA Free SSL Certificate G2
1 s:/C=CN/O=WoSign CA Limited/CN=WoSign CA Free SSL Certificate G2
i:/C=CN/O=WoSign CA Limited/CN=Certification Authority of WoSign
2 s:/C=CN/O=WoSign CA Limited/CN=Certification Authority of WoSign
i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
3 s:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIE+DCCA+CgAwIBAgIQO6cNB4khKE+AtdpJnb+wkjANBgkqhkiG9w0BAQsFADBV
1fPUrqQHToex/ydRLeDQeK/vXrlEMQMuVgzbPQ==
-----END CERTIFICATE-----
subject=/description=Free SSL Cert apply URL: https://buy.wosign.com/free/CN=linux-notes.org
issuer=/C=CN/O=WoSign CA Limited/CN=WoSign CA Free SSL Certificate G2
---
No client certificate CA names sent
---
SSL handshake has read 7085 bytes and written 308 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : SSLv3
Cipher : DHE-RSA-AES256-SHA
Session-ID: 07D1105D9D66491B07BFF48CCEBE74DD7F041CB785F925D8C250559AD409067F
Session-ID-ctx: 
Master-Key: 5156660580D734635222A27C8492098A328020136FD50761C6FC426100F1B6F91BBD9D416E6DD009DBE9316529BDE1EB
Key-Arg : None
Start Time: 1433626802
Timeout : 7200 (sec)
Verify return code: 0 (ok)
---

Не забудьте заменить linux-notes.com на имя вашего домена или IP-адрес, и порт 443 на любого альтернативный который может быть с использован для подключения по SSL. Проверьте выход для текста:

# routines:SSL3_READ_BYTES:sslv3 alert handshake failure

Видим:

-bash: routines:SSL3_READ_BYTES:sslv3: command not found

Если вы видите что данная служба не поддерживает SSLv3. Это безопасно от уязвимости. Как у меня в примере выше, был включен SSLv3, то стоит ее выключить.

Выключенный SSLv3 выглядит так:

CONNECTED(00000003)

33685:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52.20.2/src/ssl/s3_pkt.c:1145:SSL alert number 40

33685:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52.20.2/src/ssl/s3_pkt.c:566:

Небольшой и удобный bash- скрипт для проверки poodle уязвимости:

#!/bin/bash
ret=$(echo Q | timeout 5 openssl s_client -connect "${1-`hostname`}:${2-443}" -ssl3 2> /dev/null)
if echo "${ret}" | grep -q 'Protocol.*SSLv3'; then
  if echo "${ret}" | grep -q 'Cipher.*0000'; then
    echo "SSL 3.0 disabled"
  else
    echo "SSL 3.0 enabled"
 fi
else
  echo "SSL disabled or other error"
fi

Думаю что все понятно.

Отключение SSLv3

К сожалению, нет простого способа сделать это. Так же, нет патча для установки и единственный способ решить эту проблему — отключить SSLv3 в любом приложении которые могут его использовать.

Уязвимость POODLE работает, только если браузер клиента и подключение сервера поддерживают SSLv3. Поэтому, отключив SSLv3 на вашей системе, вы также защиты своего клиента (ов) от данной уязвимости.

Отключение SSLv3 для Apache
Если вы работаете с веб-сервер Apache что в настоящее время позволяет использовать SSLv3, вам нужно будет изменить конфигурацию Apache.

На Debian и Ubuntu файл конфигурации лежит в/etc/apache2/mods-available/ssl.conf.

На CentOS/RedHat/Fedora  файл конфигурации лежит в/etc/httpd/conf.d/ssl.conf.

Вам нужно будет добавить следующую строку в конфигурацию Apache с другими директивами SSL.

[...]
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder on
#Если вы предпочитаете не использовать RC4:
#ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
#
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4";
[...]

Это позволит использовать все протоколы, кроме SSLv2 и SSLv3 (тоесть — SSLv1). Вы можете проверить ваши изменения конфигурации с помощью команды:

# apachectl configtest

Затем вам нужно будет перезапустить Apache.

В Ubuntu и Debian:

# service apache2 restart

В CentOS/RedHat/Fedora:

# systemctl restart httpd

Отключение SSLv3 для Apache on cPanel/WHM

Cpanel / WHM не позволяют редактировать файлы конфигурации Apache, и перезаписать большинство изменений, которые вносятся в них. Тем не менее, CPanel / WHM делет возможность конфигурирования SSL шифров для Apache на панели управления.

Для того, чтобы изменить шифров Apache, выполните следующие действия:

В WHM, введите Apache в поле поиска в левой боковой панели. Вы увидите конфигурацию Apache в списке меню. После нажатия на конфигурацию Apache, перейдите к глобальной конфигурации.
Пример этого показан ниже.

ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH

После сохранения страницы, вам будет предложено восстановить и перезапустить Apache. Изменения должны вступить в силу после того, как Apache был восстановлен заново.

Отключение SSLv3 для NGINX
Если вы работаете с веб-сервером NGINX, что в настоящее время тоже поддерживает использование SSLv3, необходимо изменить конфигурацию NGINX (nginx.conf). Вам нужно будет добавить следующую строку в ваш директивы сервера:

# vim /etc/nginx/nginx.conf

И прописать:

[...]
 ssl_session_cache shared:SSL:10m;
 ssl_session_timeout 5m;
 ssl on;
 ssl_certificate /etc/nginx/ssl/linux-notes.org.crt;
 ssl_certificate_key /etc/nginx/ssl/linux-notes.org.key;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_stapling on;
 ssl_dhparam /etc/nginx/ssl/dhparam.pem;
 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:!MD5:!PSK:!aECDH:EDH-DSS-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:kEECDH+AES128:kEECDH:kEDH:kRSA+AES128:kEDH+3DES:!LOW:!SEED:!IDEA:!SRP:!SSLv2:!SSLv3:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!RC4:RC4:EECDH+AESGCM:AES256+EECDH:AES256+EDH:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-DES-CBC3-SHA:EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!3DES:!DSS:RC4-MD5:RC4-SHA:DES-CBC-SHA:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:EXP-RC4-MD5:EXP-DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:DES-CBC3-MD5:DHE-DSS-AES128-SHA:RC2-CBC-MD5:DES-CBC-SHA:DES-CBC-MD5:EXP-RC2-CBC-MD5:EXP-RC2-CBC-MD5:ECDH-ECDSA-RC4-SHA:ECDH-ECDSA-AES128-SHA:ECDH-ECDSA-AES256-SHA:ECDH-RSA-RC4-SHA:ECDH-RSA-AES128-SHA:ECDH-RSA-AES256-SHA:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-DES-CBC3-SHA:ECDH-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:NULL-MD5:NULL-SHA:IDEA-CBC-SHA:EXP-ADH-RC4-MD5:ADH-RC4-MD5:EXP-ADH-DES-CBC-SHA:ADH-DES-CBC-SHA:ADH-DES-CBC3-SHA:KRB5-DES-CBC-SHA:KRB5-RC4-SHA:KRB5-IDEA-CBC-SHA:KRB5-DES-CBC-MD5:KRB5-DES-CBC3-MD5:KRB5-RC4-MD5:KRB5-IDEA-CBC-MD5:EXP-KRB5-DES-CBC-SHA:EXP-KRB5-RC2-CBC-SHA:EXP-KRB5-RC4-SHA:EXP-KRB5-DES-CBC-MD5:EXP-KRB5-RC2-CBC-MD5:EXP-KRB5-RC4-MD5';
 keepalive_timeout 70;
 fastcgi_param SSL_VERIFIED $ssl_client_verify;
 fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial;
 fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;
 fastcgi_param SSL_DN $ssl_client_s_dn;
 add_header Strict-Transport-Security max-age=15768000;
[...]

Настройка параметров DHE.

# cd /etc/nginx/ssl/ && openssl dhparam -out dhparam.pem 2048

Мои готовые конфиги лежат на сайте.

Это приведет к отключению SSLv3  на NGINX. Если вы не в состоянии найти директиву сервера в nginx.conf, вы, можете найти файл конфигурации VirtualHost.

Вы также должны перезагрузить сервер NGINX:

# service nginx restart

Отключение SSLv3 для Hiawatha
Если вы используете веб-сервер Hiawatha, то скорее всего, что SSLv3 уже по умолчанию отключена. Но если по какой-то причине вы используете старую версию, вы можете использовать параметр MinSSLversion в hiawatha.conf:

[...]
MinSSLversion = TLS1.0
# or TLS1.1 or TLS1.2
[...]

Затем перезагрузите Hiawatha.

Например, в Debian или Ubuntu:

# service hiawatha restart

Например, в CentOS/Fedora/RedHat:

# service hiawatha restart

Отключение SSLv3 для Postfix SMTP
Если ваша установка Postfix настроена на использования оппортунистического SSL, который означает, что шифрование не применяется и обычный текст принят, вам не нужно ничего менять. Однако, если вы работаете Postfix в режиме обязательного с использованием SSL, вы должны будете настроить конфигурацию и отразить следующие изменения:

[...]
smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3
[...]

Отредактируем данную настрйку:

# vim /etc/postfix/main.cf

Это заставит Postfix SMTP не использовать SSLv3 или SSLv2. Вы также должны перезапустить Postfix:

# service postfix restart

Отключение SSLv3 для Dovecot
Это будет работать только с версией 2.1 и выше. Добавьте следующую строку в:

# vim /etc/dovecot/local.conf

или новый файл в:

# /etc/dovecot/conf.d/10-ssl.conf

И прописываем:

[...]
ssl_protocols = !SSLv2 !SSLv3
[...]

Перезапускаем Dovecot:

# service dovecot restart

Если вы работаете с версией Dovecot меньше чем 2.1, вам нужно будет редактировать исходный код Dovecot.

Отключение SSLv3 для Sendmail

Чтобы отключить SSLv3 в Sendmail нужно открыть файл .mc, который лежит в папке /etc/mail/ . Открываем и находим: LOCAL_CONFIG. В этом разделе поменять значение “+SSLv3” на “-SSLv3” у параметра SSLProtocol и добавить “!SSLv3” в SSLCipherSuite:

SSLProtocol -ALL -SSLv2 -SSLv3 +TLSv1
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:!LOW:!SSLv2:!SSLv3

После этого, пересобираем конфигурационный файл Sendmail и перезапускаем службу:

# make install & make restart

Отключение SSLv3 для HAProxy
Для того, чтобы отключить SSLv3 в HAProxy, вы должны использовать HAProxy 1.5+, а SSL не поддерживается в более ранних версиях HAProxy.

Отредактируйте файл:

# vim /etc/haproxy.cfg

Найдите строку, которая начинается с привязки и относится к порту 443 (SSL). Добавьте эту строку с не-SSLv3.

Пример будет следующий:

[...]
bind :443 ssl crt <crt> ciphers <ciphers> no-sslv3
[...]

Перезапускаем сервер HAproxy:

# service haproxy restart

Отключение SSLv3 для OpenVPN
На данный момент, OpenVPN не поддерживает SSLv3.  Поэтому, он не подвержен данную уязвимость и никаких изменений в конфигурационных  файлах делать не нужно.

Проверить ваш сайт на уязвимость, можно тут:

https://www.ssllabs.com/ssltest/index.html

Для примера, я свой сервер настроил достаточно безопасно, но хотя нужно кое-что доработать:

тестирование моего сервера на уязвимости в SSL

Отключение SSLv3 для уязвимости POODLE завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.