При установке веб-сервера на ОС и установке SSL сертификата на данном веб-сервере, могут использоваться протоколы и алгоритмы шифрования, которые могут быть скомпрометированы. Рассмотрим на примере ОС CentOS 6 и CentOS 7 настройки веб-сервера, позволяющие исключить изъяны в работе защищенного соединения.
CentOS 6
Закажем VDS, на сайте ukrnames.com c ОС – Сentos 6.
Заходим на сервер по SSH и проверяем версия ОС :
cat /etc/redhat-release CentOS release 6.7 (Final)
Версия ОС последняя, обновлять ничего не стоит.
Добавим репозиторий epel:
yum install epel-release
Установим веб-сервер apache, mod_ssl и криптографический пакет openssl:
yum install openssl httpd mod_ssl
Проверяем версии apache и openssl:
httpd -v Server version: Apache/2.2.15 (Unix) openssl version OpenSSL 1.0.1e-fips 11 Feb 2013
Проверим теперь какие последние уязвимости были устранены/исправлены в текущей версии openssl:
rpm -q --changelog openssl | grep CVE-2016
Данная версия нам подходит, уязвимость CVE-2016-0800 можно избежать отключив протокол SSLv2.
Полный список уязвимостей и их описаний можно найти на openssl.org
Подключим к веб-серверу тестовый домен ukrnames.idua.org и подключим к нему SSL-сертификат , не затрагивая основных конфигураций веб-сервера относительно безопасного соединения.
Проверим качество работы безопасного соединения сайта ukrnames.idua.org с помощью сайта https://www.ssllabs.com/ssltest/analyze.html?d=ukrnames.idua.org
Получили оценку “C” – это довольно плохо.
В первую очередь устраним проблему с SSLv3 отключив его. Так же отключим алгоритм шифрования RC4.
Идем в настройки SSL веб-сервера /etc/httpd/conf.d/ssl.conf
Заменим “SSLProtocol all -SSLv2” на “SSLProtocol all -SSLv2 -SSLv3”:
sed -i 's/SSLProtocol all -SSLv2/SSLProtocol all -SSLv2 -SSLv3/g' /etc/httpd/conf.d/ssl.conf
Теперь настроим алгоритмы шифрования.
Заменим “SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES:” на “SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH” и перезагрузим веб-сервер:
sed -i 's/SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES:/SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH/g' /etc/httpd/conf.d/ssl.conf
/etc/init.d/httpd restart
И вновь проверим сайт.
Получили оценку “А” – это то, что нам нужно.
Но, можно получить оценку “A+”, для этого нам нужно включить поддержку HSTS (HTTP Strict Transport Security).
Проверяем подключен ли модуль headers:
httpd -M | grep headers headers_module (shared) Syntax OK
Модуль подключен. Теперь можно добавить в файл /etc/httpd/conf.d/ssl.conf строку :
Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains”
Перезагружаем веб-сервер и вновь проверяем сайт.
Получена оценка “A+” теперь переходим к настройке безопасного соединения на ОС Centos 7.
Centos 7
Обновляем все пакеты до последней версии:
yum update
Для удобства установим пакет net-tools:
yum install net-tools
Добавим репозиторий epel:
yum install epel-release
Установим веб-сервер apache, mod_ssl и криптографический пакет openssl:
yum install openssl httpd mod_ssl
Проверяем версии apache и openssl:
httpd -v Server version: Apache/2.4.6 (CentOS) openssl version OpenSSL 1.0.1e-fips 11 Feb 2013
Подключим к веб-серверу тестовый домен ukrnames.idua.org и подключим к нему SSL-сертификат , не затрагивая основных конфигураций веб-сервера относительно безопасного соединения.
Проверим качество работы безопасного соединения сайта ukrnames.idua.org с помощью сайта https://www.ssllabs.com/ssltest/analyze.html?d=ukrnames.idua.org
Как видно по изображению, дефолтные настройки для новой версии ОС и веб-сервера нужно так же настраивать.
Выполняем все те же действия, что и для CentOS6, единственным отличаем будет поле “SSLCipherSuite” , т.к. оно для версии Apache 2.4 содержит другие значения:
sed -i 's/SSLProtocol all -SSLv2/SSLProtocol all -SSLv2 -SSLv3/g' /etc/httpd/conf.d/ssl.conf sed -i 's/SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA/SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH/g' /etc/httpd/conf.d/ssl.conf service httpd restart
Проверяем подключен ли модуль headers:
httpd -M | grep header headers_module (shared)
Модуль подключен. Теперь можно добавить в файл /etc/httpd/conf.d/ssl.conf строку :
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Перезагружаем веб-сервер и вновь проверяем сайт.
Оценка “А+”, чего мы и добивались.
Были рассмотрены Версии apache2.2 и apache2.4.
Для ОС Debian/Ubuntu так же актуальны данные действия по усилению безопасного соединения сайта, изменится только менеджер пакетов с “yum” на “apt” и расположение конфигурационных файлов веб-сервера с “/etc/httpd/” на “/etc/apache2/”.
Поэтому рассматривать установку и конфигурацию данных ОС не будем.