Отключение доступа к определенным каталогам в Apache - обычная практика для обеспечения безопасности и конфиденциальности. Ограничение доступа гарантирует, что неавторизованные пользователи не смогут получить доступ к конфиденциальным данным или файлам.
В стандартной установке Apache доступ к каталогам свободный, если он специально не ограничен. Это могут быть каталоги, содержащие конфигурации, скрипты или файлы данных, которые не предназначены для публичного доступа.
Практика запрета доступа к определенным каталогам является основополагающей в администрировании веб-сервера. Независимо от того, запускаете ли вы веб-сайт, веб-приложение или любую службу HTTP, правильное ограничение доступа к каталогам имеет жизненно важное значение. Настройка обычно выполняется в конфигурационных файлах Apache, таких как .htaccess или httpd.conf.
Шаги по отключению доступа к каталогам в Apache
Найдите раздел Directory, который вы хотите ограничить, или создайте новую директиву Directory.
1 | sudo grep -nr "<Directory" /etc/{apache2,httpd}/ |
Пример вывода
1 2 3 4 5 6 7 8 9 | /etc/apache2/sites-available/default-ssl.conf:98: <Directory /usr/lib/cgi-bin> /etc/apache2/sites-available/000-default.conf:20: <Directory /home/user/website/> /etc/apache2/apache2.conf:159:<Directory /> /etc/apache2/apache2.conf:165:<Directory /usr/share> /etc/apache2/apache2.conf:170:<Directory /var/www/> /etc/apache2/apache2.conf:176:#<Directory /srv/> /etc/apache2/mods-available/alias.conf:15:<Directory "/usr/share/apache2/icons"> /etc/apache2/mods-available/userdir.conf:4:<Directory /home/*/public_html> /etc/apache2/conf-available/localized-error-pages.conf:50:# <Directory "/usr/share/apache2/error"> |
Откройте файл конфигурации Apache с помощью удобного для вас текстового редактора.
1 | sudo nano /etc/apache2/sites-available/00-default.conf |
Добавьте директиву Deny внутри блока Directory, чтобы запретить доступ всем.
1 2 3 4 5 6 7 | <Directory /home/user/website/> Require all granted </Directory> <Directory /home/user/website/forbid/> Order deny,allow Deny from all </Directory> |
Директива Deny могла быть установлена на подкаталоги существующей папки с правом allow.
Добавьте директиву Allow, если хотите разрешить некоторые исключения.
1 | Allow from 192.168.1.101 |
Этот пример разрешает доступ только с IP-адреса 192.168.1.101, заменив его на нужный IP или диапазон.
Сохраните файл и выйдите из текстового редактора.
Перезапустите Apache, чтобы применить изменения.
1 | sudo systemctl restart apache2 |
1 | sudo systemctl restart httpd |
Убедитесь, что каталог больше не доступен, перейдя к нему через веб-браузер или с помощью инструмента Curl.
1 | curl [IP или домен]/folder/ |
Пример ответа
1 2 3 4 5 6 7 8 9 10 11 12 | <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html> <head> <title>403 Forbidden</title> </head> <body> <h1>Forbidden</h1> <p>You don't have permission to access this resource.</p> <hr> <address>Apache/2.4.55 (Ubuntu) Server at 127.0.0.1 Port 80</address> </body> </html> |
Если все настроено правильно, сервер должен ответить статусом 403 Forbidden.