В этой статье перечислены основные настройки для повышения безопасности серверов Apache и Nginx.
Принудительное использование зашифрованного соединения
Часто веб-серверы настроены таким образом, чтобы перенаправлять пользователя с незащищённого HTTP соединения на защищённое HTTPS. Но мало просто перенаправить пользователя, нужно ещё дать команду браузеру о том, что сайтом можно пользоваться только по зашифрованному каналу. Иначе открытый канал передачи данных останется доступен.
Допустим, домен вашего сайта example.com. Пользователь заходит по адресу http://example.com, а веб-сервер автоматически перенаправляет его на https://example.com. После этого он логинится. Затем в мессенджере пользователь кликает на ссылку http://example.com. В этот момент браузер отправляет запрос со всеми данными авторизации по открытому каналу.
Этой утечки можно избежать, добавив всего одну строчку в конфигурацию веб-сервера. После первого посещения сайта по зашифрованному соединению, браузер получит команду о том, что сайтом необходимо пользоваться только по протоколу HTTPS. За эту функцию отвечает заголовок Strict-Transport-Security
.
Активация XSS-защиты
XSS уязвимости это целый набор всевозможных способов атак. Заголовок X-XSS-Protection
может предотвратить некоторые XSS-атаки.
Запрет использования сайта в iFrame
Если ваш сайт можно загрузить в iFrame, то вы уязвимы для Clickjacking атак. Заголовок X-Frame-Options
позволяет снизить уязвимость.
Использование последних версий TLS
TLS это протокол для защищённого обмена данными. Важно использовать его актуальные версии TLS v1.2 и TLS v1.3.
Forward Secrecy
Вы можете указать своему серверу использовать усиленные методы шифрования.
Конфигурация Nginx
Добавьте эти строчки в секцию server {}
в файл настройки виртуального хоста. Вы можете найти её по строчке listen 443;
.
add_header Strict-Transport-Security "max-age=31536000;includeSubDomains" always;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options "SAMEORIGIN";
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "HIGH:!RC4:!aNULL:!MD5:!kEDH";
ssl_prefer_server_ciphers on;
Конфигурация Apache
Добавьте эти строки в файл конфигурации виртуального хоста в секцию настроек защищённого соединения. Вы можете найти её по строчке <VirtualHost *:443>
.
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header set X-XSS-Protection "1; mode=block"
Header always append X-Frame-Options SAMEORIGIN
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite HIGH:!RC4:!aNULL:!MD5
SSLHonorCipherOrder On