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