22.5. Настройка разрешений и принадлежности файлов Apache
Проблема
Необходимо установить правильные файловые разрешения и определить принадлежность файлов для безопасной работы Apache. Правильная настройка позволяет минимизировать риски, связанные с доступом и модификацией ключевых файлов сервера, а также защитить данные сайта от несанкционированного доступа.
Решение
Прежде всего, убедитесь, что двоичный файл httpd
принадлежит пользователю root
и защищён от записи и чтения для непривилегированных пользователей. Это необходимо, чтобы предотвратить несанкционированное изменение файлов и ограничить доступ к управляющим файлам:
# chown root:root /usr/sbin/httpd
# chmod 511 /usr/sbin/httpd
Затем создайте отдельного непривилегированного пользователя специально для процесса Apache. Это позволит запускать производные процессы от имени этого пользователя и снизить риски, связанные с возможным доступом к серверу:
# useradd -c "httpd owner" -d /dev/null -s /bin/false -u httpd
Теперь откройте файл конфигурации Apache /etc/httpd/conf/httpd.conf
и настройте httpd
на запуск с правами созданного пользователя:
User httpd
Далее создайте отдельного пользователя и группу для управления доступом к каталогам веб-страниц. В следующем примере создаётся пользователь web
, которому будут принадлежать файлы в директории /var/www/http
:
# groupadd -g 60 web
# useradd -c "Web Server" -d /var/www/ -g web -s /bin/false -u web
# chown -R web:web /var/www/http
# chmod -R 755 /var/www/http
Не забудьте добавить в группу web
пользователей, которым необходимо разрешить редактирование веб-страниц. После внесения всех изменений перезапустите Apache:
# apachectl restart
Комментарий
Двоичный файл httpd
запускается от имени root
, но после инициализации переходит на работу с привилегиями минимального уровня, используя созданного ранее непривилегированного пользователя. Это делает Apache более безопасным, поскольку сервер продолжает работать, но не имеет прав root после запуска. Рекомендуется избегать использования учётной записи nobody
для выполнения задач, связанных с безопасностью, так как она широко применяется в системе и может стать целью атак. Вместо этого всегда создавайте уникальных пользователей для каждого демона или сервера, что снижает вероятность компрометации системы.
Apache позволяет гибко управлять доступом к файлам и директориям, используя разрешения файловой системы Linux. Это даёт возможность регулировать доступ к определённым подкаталогам и файлам, сохраняя безопасность данных. Для повышения надёжности лучше всего предоставлять доступ к файлам и папкам только тем пользователям, которым это действительно необходимо.
Важно понимать, что даже с правильно настроенными разрешениями и привилегиями сервер Apache может оставаться уязвимым из-за недостатков в операционной системе или слабых мест в установленных приложениях. Часто угрозы безопасности связаны с уязвимостями в веб-скриптах и динамическом контенте (например, созданным на PHP, Perl или Python). Поэтому администраторы должны внимательно следить за обновлениями безопасности не только Apache, но и всех зависимых компонентов, используемых для работы веб-сервера.
Дополнительные советы по настройке безопасности Apache
- Регулярные обновления: Поддерживайте актуальную версию Apache и устанавливайте обновления безопасности, чтобы исключить возможные уязвимости.
- Ограничение доступа к конфиденциальным файлам: Используйте файл конфигурации Apache для защиты файлов конфигурации и баз данных от несанкционированного доступа.
- Мониторинг логов: Регулярно проверяйте журналы доступа и ошибок для выявления подозрительной активности и возможных атак.
- Использование модуля mod_security: Подключение модулей безопасности, таких как mod_security, может дополнительно защитить сервер от некоторых видов атак, включая SQL-инъекции и XSS-атаки.
См. также