Apache является самым популярным и наиболее часто используемых веб – сервером в мире, и это первый веб – сервер, используемый для обслуживания более чем 100 миллионов веб – сайтов по всему миру. Apache должен быть очень безопасным веб – сервером, в этой статье мы расскажем несколько основных изменений конфигурации, чтобы сделать Apache еще более безопасным на CentOS VPS.
1. Держите обновленным Apache до настоящего времени
Самый важный совет безопасности, а не только для Apache, но и для всех сервисов, приложений и скриптов, чтобы держать их в актуальном состоянии путем обновления каждый раз, когда выходит новая версия. Apache активно развивается и вопросы безопасности фиксируются в новых версиях.
Чтобы обновить веб-сервер Apache до последней доступной версии выполните следующую команду
yum -y update httpd
2. Скрыть версию Apache и OS
Директива ServerSignature включена по умолчанию и отображает версию Apache, установленный на вашем сервере и на операционной системе, которую вы используете. Злоумышленники могут легко использовать эту информацию против вашего сервера. Для того, чтобы скрыть эту важную информацию, нужно изменить две директивы в файле конфигурации Apache.
Откройте конфигурационный файл Apache, найти директивы и внести следующие изменения.
vi /etc/httpd/conf/httpd.conf ServerSignature Off ServerTokens Prod
3. Отключить список каталогов
Если список каталогов не отключен, все желающие смогут перечислить содержимое каталогов в корневом каталоге документов. Перечень каталогов можно отключить с помощью директивы “Options” в конфигурационном файле Apache.
Откройте конфигурационный файл с помощью текстового редактора и добавьте следующую директиву
<Directory /your/document/root> Options -Indexes </Directory>
Заменить путь ‘/your/document/root’ на фактическую корневую директорию.
4. Установить и использовать модуль mod_security
mod_security очень полезный модуль Apache. Он укрепляет безопасность веб – сервера Apache и защитить ваш сайт от различных атак, блокируя почти все общеизвестные эксплойты.
Для установки и настройки mod_security на сервере CentOS, пожалуйста, ознакомьтесь с руководством по установке: Установить mod_security с основным правилом OWASP на CentOS VPS.
5. Отключить все ненужные модули
В Apache есть много модулей и некоторые из них включены в установке Apache по умолчанию. Не все они необходимы, и рекомендуется отключить неиспользуемые модули. Вы можете использовать следующую команду , чтобы получить список всех включенных модулей Apache
httpd -M Loaded Modules: core_module (static) mpm_prefork_module (static) http_module (static) so_module (static) auth_basic_module (shared) auth_digest_module (shared) authn_file_module (shared) authn_alias_module (shared) authn_anon_module (shared) ....
Вы можете проверить официальную документацию Apache для модулей, чтобы узнать больше об их функциональности.
Все ненужные модули могут быть отключены, добавив символ ‘#’ в начале строки LoadModule в файле конфигурации веб-сервера. Например:
vi /etc/httpd/conf/httpd.conf # LoadModule auth_basic_module modules/mod_auth_basic.so # LoadModule auth_digest_module modules/mod_auth_digest.so
6. Ограничение размера запроса
Директива ‘LimitRequestBody‘ Apache может быть использована, чтобы ограничить число байтов, которые разрешены в теле запроса. Предел во многом зависит от ваших потребностей веб – сайта. По умолчанию лимит ‘LimitRequestBody‘ установлен на неограниченное и это может сделать вас жертвой атак отказа в обслуживании (DOS).
Предел этой директивы Apache может быть установлен от 0 (без ограничений) до 2147483647 (2 Гб). Например, если вы хотите разрешить загрузку файлов с размером 100К в каталоге загрузки /var/www/html/upload, вы можете добавить следующую директиву в файле конфигурации Apache.
<Directory "/var/www/html/upload directory"> LimitRequestBody 102400 </Directory>
7. Включить ведение журнала
Файлы журнала всегда очень полезны, чтобы получить более подробную информацию о событиях, которые происходят на вашем сервере. Таким образом, это хорошая практика, чтобы включить протоколирование в Apache. Он предоставит вам более подробную информацию и сведения о всех клиентских запросов, сделанных на вашем веб – сервере. Для этого, вы должны убедиться , что модуль ‘log_config_module‘ включен на вашем сервере.
httpd -M |grep log_config_module Syntax OK log_config_module (shared)
Модуль Apache ‘Log_config_module‘ обеспечивает функциональные возможности директив TransferLog, LogFormat и CustomLog, которые могут быть использованы для создания файла журнала.