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

Как защитить свой сервер от уязвимости POODLE SSLv3


Введение

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

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

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

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

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

Уязвимость POODLE — это уязвимость в версии 3 протокола SSL, которая позволяет злоумышленнику в контексте «человек посередине» расшифровать текстовое содержимое зашифрованного сообщения SSLv3.

Кто подвержен этой уязвимости?

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

Некоторыми распространенными частями программного обеспечения, которые могут быть затронуты, являются веб-браузеры, веб-серверы, VPN-серверы, почтовые серверы и т. д.

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

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

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

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

Как я могу защитить себя?

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

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

Как защитить общие приложения

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

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

Веб-сервер Nginx

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

Например, в Ubuntu вы можете добавить это глобально в /etc/nginx/nginx.conf внутри блока http или на каждый сервер в каталоге /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

Чтобы отключить SSLv3 на веб-сервере Apache, вам придется настроить директиву SSLProtocol, предоставленную модулем mod_ssl.

Эта директива может быть установлена либо на уровне сервера, либо в конфигурации виртуального хоста. В зависимости от конфигурации Apache вашего дистрибутива, конфигурация 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-адрес и порт. Если вы используете SSL, добавьте no-sslv3 в конец этой строки:

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

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

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

sudo service haproxy restart

VPN-сервер OpenVPN

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

См. этот пост на форумах OpenVPN для получения дополнительной информации.

Постфиксный SMTP-сервер

Если ваша конфигурация Postfix требует шифрования, она будет использовать директиву с именем smtpd_tls_mandatory_protocols.

Вы можете найти это в основном файле конфигурации Postfix:

sudo nano /etc/postfix/main.cf

Для сервера Postfix, настроенного на постоянное использование шифрования, вы можете убедиться, что SSLv3 и SSLv2 не принимаются, установив этот параметр. Если вы не принудительно шифруете, вам не нужно ничего делать:

smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3

Сохраните вашу конфигурацию. Перезапустите службу, чтобы изменения вступили в силу:

sudo service postfix restart

Dovecot IMAP и POP3-сервер

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

Для большинства дистрибутивов вы можете настроить эту директиву, открыв этот файл:

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

Внутри, если вы используете Dovecot 2.1 или выше, установите директиву ssl_protocols для отключения SSLv2 и SSLv3:

ssl_protocols = !SSLv3 !SSLv2

Если вы используете версию Dovecot ниже 2.1, вы можете настроить ssl_cipher_list, чтобы запретить SSLv3 следующим образом:

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

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

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

sudo service dovecot restart

Дальнейшие шаги

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

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

Заключение

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

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