13 советов по усилению безопасности веб-сервера Apache. Мы все хорошо знакомы с веб-сервером Apache, это очень популярный веб-сервер для размещения ваших веб-файлов или веб-сайта в Интернете.
Здесь, в этом руководстве, я расскажу несколько основных советов по защите вашего веб-сервера. Прежде чем применять эти изменения на вашем веб-сервере, вы должны иметь некоторые основы работы с сервером Apache.
Корневой каталог документов: /var/www/html или /var www
Основной файл конфигурации: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) и /etc/apache2/apache2.conf (Debian/Ubuntu).
Порт HTTP по умолчанию: 80 TCP
Порт HTTPS по умолчанию: 443 TCP
Проверьте настройки и синтаксис файла конфигурации: httpd -t
Доступ к файлам журналов веб-сервера: /var/log/httpd/access_log
Файлы журнала ошибок веб-сервера: /var/log/httpd/error_log
1. Как скрыть версию Apache и идентификацию ОС от ошибок
Когда вы устанавливаете Apache с исходным кодом или любым другим установщиком пакетов, таким как yum, он отображает версию вашего веб-сервера Apache, установленного на вашем сервере, с именем операционной системы вашего сервера в разделе Ошибки. Он также показывает информацию о модулях Apache, установленных на вашем сервере.
Apache показывает свою версию с установленной на вашем сервере ОС. Это может быть серьезной угрозой безопасности как для вашего веб-сервера, так и для вашей Linux-системы. Чтобы Apache не отображал эту информацию миру, нам нужно внести некоторые изменения в основной файл конфигурации Apache.
Откройте файл конфигурации с помощью редактора vim и найдите «ServerSignature», по умолчанию он включен. Нам нужно отключить эти подписи сервера, и вторая строка «ServerTokens Prod» говорит Apache возвращать только Apache как продукт в заголовке ответа сервера при каждом запросе страницы. Он подавляет информацию об ОС, основной и вспомогательной версиях.
2. Отключить список каталогов
По умолчанию Apache перечисляет все содержимое корневого каталога документа при отсутствии индексного файла.
Мы можем отключить список каталогов с помощью директивы Options в файле конфигурации для конкретного каталога. Для этого нам нужно сделать запись в файле httpd.conf или apache2.conf.
3. Регулярно обновляйте Apache
Сообщество разработчиков Apache постоянно работает над проблемами безопасности и выпускает обновленную версию с новыми параметрами безопасности. Поэтому всегда рекомендуется использовать последнюю версию Apache в качестве веб-сервера.
Чтобы проверить версию Apache: Вы можете проверить текущую версию с помощью команды httpd -v.
Вы можете обновить свою версию с помощью следующей команды.
Также рекомендуется обновлять ядро операцонной системы и саму операционную систему до последних стабильных выпусков, если вы не запускаете какое-либо конкретное приложение, которое работает только на определенной ОС или Ядре.
4. Отключите ненужные модули
Это всегда хорошо, чтобы уменьшить вероятность любой веб-атаки. Поэтому рекомендуется отключить все те модули, которые в данный момент не используются. Вы можете перечислить все скомпилированные модули веб-сервера, используя следующую команду.
Выше приведен список модулей, которые включены по умолчанию, но часто не нужны: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Чтобы отключить конкретный модуль, вы можете вставить «#» в начале этой строки и перезапустить службу.
5. Запустите Apache как отдельного пользователя и группу
При установке по умолчанию Apache запускает процесс с пользователем nobody или daemon. Из соображений безопасности рекомендуется запускать Apache под собственной непривилегированной учетной записью. Например: http_web.
Создать пользователя и группу Apache
Теперь вам нужно указать Apache, что он должен работать с этим новым пользователем, и для этого нам нужно сделать запись в /etc/httpd/conf/httpd.conf и перезапустить службу.
Откройте /etc/httpd/conf/httpd.conf с помощью редактора vim и выполните поиск по ключевым словам «User» и «Group», и там вам нужно будет указать имя пользователя и имя группы для использования.
6. Используйте Allow и Deny, чтобы ограничить доступ к каталогам
Мы можем ограничить доступ к каталогам с помощью параметров «Allow» и «Deny» в файле httpd.conf. Здесь, в этом примере, мы будем защищать корневой каталог, для этого установив следующее в файле httpd.conf.
Параметр «None» — этот параметр не позволяет пользователям включать какие-либо дополнительные функции.
Order deny, allow — это порядок, в котором будут обрабатываться директивы «Allow» и «Deny». Здесь он сначала «отрицает», а затем «разрешает».
Deny from all — будет отклонять запросы от всех к корневому каталогу, никто не сможет получить доступ к корневому каталогу.
7. Используйте модули mod_security и mod_evasive для защиты Apache
Эти два модуля «mod_security» и «mod_evasive» являются очень популярными модулями Apache с точки зрения безопасности.
Mod_security
Где mod_security работает как брандмауэр для наших веб-приложений и позволяет нам отслеживать трафик в режиме реального времени. Это также помогает нам защитить наши веб-сайты или веб-сервер от атак методом перебора. Вы можете просто установить mod_security на свой сервер с помощью установщиков пакетов по умолчанию.
Установите mod_security в Ubuntu/Debian
Установите mod_security на RHEL/CentOS/Fedora/
Mod_evasive
mod_evasive работает очень эффективно, он обрабатывает один запрос и обрабатывает его очень хорошо. Это предотвращает DDOS-атаки от нанесения как можно большего урона. Эта особенность mod_evasive позволяет ему обрабатывать грубую силу HTTP и атаки Dos или DDos. Этот модуль обнаруживает атаки тремя способами.
- Если много запросов приходит на одну и ту же страницу несколько раз в секунду.
- Если какой-либо дочерний процесс пытается сделать более 50 одновременных запросов.
- Если какой-либо IP все еще пытается сделать новые запросы, когда его внесли в черный список.
mod_evasive может быть установлен непосредственно из исходного кода.
8. Отключите использование Apache символических ссылок
По умолчанию Apache следует символическим ссылкам, мы можем отключить эту функцию с помощью FollowSymLinks с директивой Options. И для этого нам нужно сделать следующую запись в основном файле конфигурации.
И, если любому конкретному пользователю или веб-сайту требуется включить FollowSymLinks, мы можем просто написать правило в файле «.htaccess» с этого веб-сайта.
Примечание. Чтобы включить правила перезаписи внутри файла «.htaccess», «AllowOverride All» должен присутствовать в основной конфигурации глобально.
9. Отключите серверные включения и выполнение CGI
Мы можем отключить серверные включения (mod_include) и выполнение CGI, если в этом нет необходимости, и для этого нам нужно изменить основной файл конфигурации.
Мы можем сделать это и для определенного каталога с помощью тега Directory. В этом примере мы отключаем выполнение файлов Include и Cgi для каталога «/var/www/html/web1».
Вот некоторые другие значения, которые можно включить или выключить с помощью директивы Options.
Options All — включить все параметры одновременно. Это значение по умолчанию, если вы не хотите явно указывать какие-либо значения в конфигурационном файле Apache или .htaccess.
Options IncludesNOEXEC — этот параметр позволяет включать на стороне сервера без разрешения выполнение команды или файлов CGI.
Options MultiViews — позволяет контенту согласовывать множественные просмотры с модулем mod_negotiation.
Параметры Options SymLinksIfOwnerMatch — это похоже на FollowSymLinks. Но так будет происходить только в том случае, если владелец совпадает между ссылкой и исходным каталогом, с которым она связана.
10. Ограничьте размер запроса
По умолчанию Apache не имеет ограничений на общий размер HTTP-запроса, то есть неограничен, и когда вы разрешаете большие запросы на веб-сервере, вполне возможно, что вы можете стать жертвой атак типа «отказ в обслуживании». Мы можем ограничить размер запросов директивы Apache «LimitRequestBody» с помощью тега directory.
Вы можете установить значение в байтах от 0 (неограниченно) до 2147483647 (2 ГБ), которые разрешены в теле запроса. Вы можете установить это ограничение в соответствии с потребностями вашего сайта. Предположим, у вас есть сайт, на котором вы можете загружать файлы и хотите ограничить размер загрузки для определенного каталога.
Здесь, в этом примере, user_uploads — это каталог, содержащий файлы, загруженные пользователями. Мы ставим ограничение в 500К.
11. Защитита от DDOS атак
Что ж, это правда, что вы не можете полностью защитить свой веб-сайт от атак DDos. Вот некоторые директивы, которые могут помочь вам контролировать это.
- TimeOut: эта директива позволяет вам задать период времени, в течение которого сервер будет ожидать завершения определенных событий, прежде чем произойдет сбой. Его значение по умолчанию составляет 300 секунд. Рекомендуется сохранять это значение на тех сайтах, которые подвержены атакам DDOS. Это значение полностью зависит от вида запроса, который вы получаете на своем сайте. Примечание: это может привести к проблемам со скриптами CGI.
- MaxClients: эта директива позволяет вам установить ограничение на количество соединений, которые будут обслуживаться одновременно. Каждое новое соединение будет поставлено в очередь после этого лимита. Он доступен с Prefork и Worker как MPM. Значение по умолчанию это 256.
- KeepAliveTimeout: количество времени, в течение которого сервер будет ожидать последующего запроса перед закрытием соединения. Значение по умолчанию составляет 5 секунд.
- LimitRequestFields: Это помогает нам установить ограничение на количество полей заголовка HTTP-запроса, которые будут приниматься от клиентов. Его значение по умолчанию равно 100. Рекомендуется уменьшить это значение, если DDos-атаки происходят из-за большого количества заголовков http-запросов.
- LimitRequestFieldSize: помогает установить ограничение размера заголовка HTTP-запроса.
12. Включить ведение журнала Apache
Apache позволяет вам регистрироваться независимо от регистрации вашей ОС. Целесообразно включить ведение журнала Apache, поскольку он предоставляет больше информации, например, команды, введенные пользователями, которые взаимодействовали с вашим веб-сервером.
Для этого вам нужно включить модуль mod_log_config. Существует три основных директивы, связанных с журналированием, доступных в Apache.
- TransferLog: создание файла журнала.
- LogFormat: указание пользовательского формата.
- CustomLog: создание и форматирование файла журнала.
Вы также можете использовать их для определенного веб-сайта, если вы делаете виртуальный хостинг, и для этого вам необходимо указать его в разделе виртуального хоста. Например, вот конфигурация виртуального хоста моего сайта с включенной регистрацией.
13. Защита Apache с помощью SSL-сертификатов.
Наконец, но не в последнюю очередь SSL-сертификаты, вы можете защитить все свои коммуникации в зашифрованном виде через Интернет с помощью SSL-сертификата. Предположим, у вас есть веб-сайт, на котором люди входят в систему, подтверждая свои учетные данные, или у вас есть веб-сайт электронной коммерции, где люди предоставляют свои банковские реквизиты или данные дебетовой/кредитной карты для покупки продуктов, по умолчанию ваш веб-сервер отправляет эти данные в виде простого текста, но когда вы используете SSL-сертификаты на своих сайтах, Apache отправляет всю эту информацию в зашифрованном виде.
Вы можете приобрести сертификаты SSL у различных провайдеров SSL, как namecheap.com. Если вы работаете в очень маленьком веб-бизнесе и не желаете приобретать SSL-сертификат, вы все равно можете назначить самоподписанный сертификат вашему веб-сайту. Apache использует модуль mod_ssl для поддержки SSL-сертификата.
После того, как ваш сертификат был создан и подписан вам нужно добавить это в конфигурации Apache. Откройте основной файл конфигурации с помощью редактора vim, добавьте следующие строки и перезапустите службу.
Откройте браузер, введите https://example.com, и вы сможете увидеть новый самоподписанный сертификат.
Это несколько советов по безопасности, которые вы можете использовать для защиты вашего веб-сервера Apache.
Спасибо за уделенное время на прочтение статьи «13 советов по усилению безопасности веб-сервера Apache»!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet (программируемые сети) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.