Защита сервера от уязвимости SSLv3 POODLE

14 октября 2014 года в криптографическом протоколе SSLv3 была обнаружена уязвимость. Эта уязвимость, получившая название POODLE (Padding Oracle On Downgraded Legacy Encryption), позволяет злоумышленнику читать зашифрованную при помощи этой версии протокола информацию в виде простого текста, используя атаку «человек посредине» (man-in-the-middle).

Хотя SSLv3 является устаревшей версией протокола, многие программы по-прежнему используют SSLv3 (если нет других вариантов шифрования). Что важно, данная уязвимость позволяет злоумышленнику потребовать использовать SSLv3 на обеих сторонах.

Уязвимости POODLE подвержены все сервисы и клиенты, которые позволяют создавать соединения и обмениваться информацией с помощью SSLv3. Так как этот недостаток обнаружен непосредственно в проектировании протокола, уязвима абсолютно каждая программа, которая использует SSLv3.

Чтобы получить более подробную информацию о данной уязвимости, перейдите по ссылке CVE-2014-3566.

Что такое уязвимость POODLE?

Уязвимость POODLE – это недостаток в версии 3 протокола SSL, который позволяет злоумышленнику в контексте man-in-the-middle расшифровать простое текстовое содержимое сообщения, зашифрованного протоколом SSLv3.

Какие программы подвержены данной уязвимости?

Эта уязвимость затрагивает все программы, которые позволяют взаимодействовать с другими серверами по SSLv3. Это означает, что любое программное обеспечение, которое реализует механизм нейтрализации неисправности, поддерживающий SSLv3, уязвимо и может быть взломано.

В основном, данной уязвимости подвержены веб-браузеры, веб-серверы, серверы VPN, почтовые серверы и т.п.

Как работает POODLE?

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

Из-за этого сообщения не могут быть проверены принимающей стороной, и злоумышленник может заменить и передать их  к месту назначения. При определенных условиях измененная информация будет принята получателем безо всяких предупреждений.

В среднем, из 256 запросов один запрос будет принят получателем, что позволит атакующему расшифровать один байт. Эту операцию можно повторять, расшифровывая все больше данных. Любой злоумышленник, используя этот протокол, способен очень быстро расшифровать данные.

Как защитить сервер от POODLE?

Поскольку шифрование, как правило, подразумевает взаимодействие между клиентами и серверами, необходимо приняты меры по защите и серверов и клиентов.

Серверы и клиенты должны полностью отключить поддержку протокола SSLv3. Многие приложения используют более новые протоколы шифрования по умолчанию, но поддерживают SSLv3 как запасной вариант. Его необходимо отключить, иначе злоумышленник может нарочно потребовать использовать SSLv3 на обеих сторонах соединения.

Защита популярных приложений

Ниже будет описано, как отключить протокол SSLv3 в наиболее популярных серверных приложениях. Но для начала необходимо самостоятельно оценить свой сервер, чтобы защитить все дополнительные сервисы, которые поддерживают шифрование SSL/TCP.

Поскольку уязвимость POODLE является внутренним недостатком самого протокола, а не проблемой его использования, обходных путей нет, единственное надежное решение – не использовать его.

Защита веб-сервера Nginx

Чтобы отключить поддержку SSLv3 на веб-сервере Nginx, используйте директиву ssl_protocols, которая находится в блоке настроек server или http.

К примеру, в Ubuntu можно либо внести ее глобально в блок http файла /etc/nginx/nginx.conf, либо добавить ее в каждый блок server в каталоге /etc/nginx/sites-enabled.

sudo nano /etc/nginx/nginx.conf

Чтобы отключить SSLv3, нужно задать директиву ssl_protocols следующим образом:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

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

sudo service nginx restart

Защита веб-сервера Apache

Для защиты Apache от POODLE нужно отредактировать параметр SSLProtocol модуля mod_ssl.

Данный параметр может быть установлен на уровне сервера или в настройках виртуального хоста. В зависимости от настроек дистрибутива, параметры настройки SSL могут быть расположены в отдельном файле.

В Ubuntu настройки сервера можно изменить в файле /etc/apache2/mods-available/ssl.conf. Если mod_ssl включен, символическая ссылка соединит этот файл с подкаталогом mods-enabled:

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

В CentOS конфигурационный файл SSL (если SSL включен) находится в:

sudo nano /etc/httpd/conf.d/ssl.conf

В данном файле найдите параметр SSLProtocol. Если такого параметра в файле нет, создайте его. Теперь отключите поддержку SSLv3, удалив этот протокол из строки:

SSLProtocol all -SSLv3 -SSLv2

Сохраните файл и закройте его. Перезапустите сервер, чтобы активировать изменения.

В Ubuntu наберите:

sudo service apache2 restart

В CentOS:

sudo service httpd restart

Защита балансировщика нагрузки HAProxy

Чтобы отключить поддержку SSLv3 в балансировщике HAProxy, откройте файл haproxy.cfg, который находится в /etc/haproxy/haproxy.cfg:

sudo nano /etc/haproxy/haproxy.cfg

Обратите внимание на настройки фронт-энда: если SSL включен, параметр bind будет указывать IP-адрес и порт. Чтобы отключить SSLv3, нужно внести в конец этой строки no-sslv3:

frontend name
bind public_ip:443 ssl crt /path/to/certs no-sslv3

Сохраните и закройте файл.

Перезапустите сервис, чтобы изменения вступили в силу:

sudo service haproxy restart

Защита сервера OpenVPN

Последние версии OpenVPN не поддерживают SSLv3. Следовательно, данный сервис не подвержен этой конкретной уязвимости, потому редактировать настройки нет необходимости.

Защита SMTP-сервера Postfix

Для настройки шифрования на сервере Postfix используется праметр smtpd_tls_mandatory_protocols. Его можно найти в главном конфигурационном файле:

sudo nano /etc/postfix/main.cf

Чтобы Postfix постоянно использовал шифрование, установите следующий параметр, который отключит поддержку SSLv3 и SSLv2. Если же вы не используете  шифрование, никаких изменений вносить не нужно.

smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3

Сохраните новые настройки и перезапустите сервис, чтобы активировать их:

sudo service postfix restart

IMAP и POP3 сервер Dovecot

Чтобы отключить поддержку SSLv3 на сервере Dovecot, отредактируйте параметр ssl_protocols. В зависимости от комплектации дистрибутива настройки SSL могут находиться в разных конфигурационных файлах.

В большинстве дистрибутивов этот параметр можно найти в файле:

sudo nano /etc/dovecot/conf.d/10-ssl.conf

При использовании Dovecot 2.1+ отключите поддержку SSLv2 и SSLv3 при помощи параметра ssl_protocols:

ssl_protocols = !SSLv3 !SSLv2

При использовании более старых версий Dovecot (ниже 2.1) отключить SSLv3 можно при помощи параметра ssl_cipher_list так:

ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL:!SSLv3

Сохраните и закройте файл.

Перезапустите сервис, чтобы обновить настройки.

sudo service dovecot restart

Дальнейшие действия

Наряду с серверными приложениями следует также обновить все клиентские приложения.

В особенности этой уязвимости подвержены веб-браузеры. Убедитесь, что браузеры не позволяют использовать протокол SSLv3 для шифрования соединений. Для этого можно изменить настройки или же установить плагин или дополнительное расширение.

Заключение

В связи с тем, что протокол SSLv3 очень распространен (несмотря на наличие более надежных методов шифрования), эта уязвимость крайне опасна. Необходимо срочно принять меры, чтобы обезопасить свой сервер.

Обязательно проверьте сетевые сервисы, которые могут использовать протоколы SSL/TLS в любом виде.

Tags: , , , , , , , , , , , , , ,

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