Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

3 года назад
Открыть в
​​Проработал ещё один документ по безопасной настройки от CIS. На этот раз на тему Apache 2.4. Изучил 217 😱 страниц документа и постарался сделать универсальную краткую выжимку для постоянного использования. Те параметры, что есть в рекомендациях, но по умолчанию уже настроены, я не упоминаю. 📌 Как обычно, первая рекомендация по настройке — проверить список модулей и отключить ненужные. В зависимости от дистрибутива, команда на запуск бинарника может быть разная. В Debian и Ubuntu — apache2ctl, в Centos и клонах — httpd или apachectl. # apache2ctl -M Описание модулей можно посмотреть в документации. Для отключения комментируем строку с LoadModule и именем модуля в конфигурационном файле. Здесь же стоит убедиться, что: ◽модуль логирования log_config_module загружен; ◽модули, связанные с webdav (имеют dav в названии), отключены, если не нужны. ◽модуль статистики status_module отключен, если не используется, либо настроен, чтобы исключить доступ к статистике посторонним. ◽модуль autoindex_module отключен, он позволяет выполнять листинг директорий с файлами, если не задана индексная страница (index.html и т.д.) ◽отключены модули проксирования (proxy в названии), если не используются; ◽отключён модуль mod_info, который выводит информацию о сервере; 📌 Не используйте модуль mod_auth_basic, если доступ к сайту по http. В этом случае учётные данные передаются по сети в открытом виде и могут быть перехвачены кем угодно по пути следования пакетов. 📌 Обратите внимание на параметры для директорий AllowOverride и AllowOverrideList. Они разрешают или запрещают использование различных настроек для файлов конфигураций .htaccess, которые могут переопределять многие настройки сервера. По умолчанию подобные разрешения имеет смысл отключить и включать только точечно. <Directory /> . . . AllowOverride None . . . </Directory> 📌 Для корневой системной директории отключите все Options. По умолчанию включена опция FollowSymLinks. <Directory /> . . . Options None . . . </Directory> 📌 Традиционная рекомендация по настройке любого веб сервера — удалите весь контент, что идёт по умолчанию с установочным пакетом. Это относится к стартовой странице, страницам с кодами ошибок и т.д. Всё это помогает определить версию системы и веб сервера. Для apache это обычно директории /var/www/html и /usr/share/apache2/error/. 📌 Отключите всё, что касается cgi скриптов, если вы их не используете. Выполнение этих скриптов — наследие прошлого и сейчас чаще всего не используется, но может быть включено по умолчанию. Отключите модуль mod_cgi и настройки с упоминанием алиаса /cgi-bin/ или опции ExecCGI. 📌 Веб клиенты не должны иметь доступ к файлам .htaccess, .htpasswd и .htgroup. Обязательно настройте для них запрет. <FilesMatch "^\.ht">  Require all denied </FilesMatch> 📌 Запретите доступ к веб серверу по IP адресу или по несуществующему домену (rewrite_module должен быть включён). Для этого создайте виртуальный хост, который будет первым в списке. И добавьте в него редирект всех, кто обращается не на ваш домен: RewriteEngine On RewriteCond %{HTTP_HOST} !^example\.com [NC] RewriteRule ^.(.*) - [L,F] Если доменов много, можно сделать редирект тех, кто обращается по IP на любой другой домен: RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^192\.168\.0\.1$ RewriteRule ^(.*)$ https://example.com/$1 [L,R=301] 📌 Проверьте, что настроено логирование. Как минимум, должен быть включён error лог. LogLevel notice core:info ErrorLog "logs/error_log" Если настроены access логи, не забудьте настроить их ротацию. 📌 По возможности, установите и настройте модуль mod_security. Это популярный web application firewall (WAF). 📌 Не используйте устаревшие версии TLS и Ciphers: SSLProtocol TLSv1.2 TLSv1.3 SSLHonorCipherOrder On SSLCipherSuite ALL:!EXP:!NULL:!LOW:!SSLv2:!RC4:!aNULL 📌 Отключите вывод информации о версии сервера: ServerTokens Prod ServerSignature Off 📌 Уменьшите дефолтный таймаут запросов: Timeout 10 #cis #apache #security