Иногда вам может понадобиться ограничить доступ к URL, файлам и каталогам на вашем сайте, поскольку они содержат конфиденциальную информацию. Apache позволяет легко ограничить доступ с помощью серверных директив Deny и Allow. В этой статье мы рассмотрим, как запретить доступ к URL, файлам и каталогам в веб-сервере Apache.
Запрет доступа к URL, файлам и каталогам в Apache
Здесь описаны шаги по ограничению доступа к URL, файлам и каталогам в Apache.
Откройте файл конфигурации Apache
Файл конфигурации Apache находится в одном из следующих мест, в зависимости от дистрибутива Linux.
- /etc/apache2/httpd.conf
- /etc/apache2/apache2.conf
- /etc/httpd/httpd.conf
- /etc/httpd/conf/httpd.conf
Откройте терминал и выполните следующую команду, чтобы открыть страницу конфигурации Apache.
1 | sudo nano /etc/httpd/conf/httpd.conf |
Если вы внесете изменения в файл конфигурации сервера Apache, они будут применимы ко всем сайтам/доменам, которые вы запускаете на своем веб-сервере Apache.
Ограничение доступа по IP в виртуальном хосте Apache
Если вы запускаете несколько сайтов на сервере Apache, используя виртуальный хост, то откройте файл конфигурации виртуального хоста того сайта (например, www.website.com), для которого вы хотите запретить доступ по IP. Допустим, ваш файл конфигурации виртуального хоста находится по адресу /etc/apache2/sites-enabled/website.conf
1 | sudo nano /etc/apache2/sites-enabled/website.conf |
Ограничение доступа по IP
Допустим, вы хотите ограничить доступ к URL /product.html по IP 12.34.21.10. Открыв соответствующий конфигурационный файл, найдите тег <Location> для указанного выше URL.
Apache предоставляет директиву Deny для блокировки одного или нескольких IP-адресов. Добавьте следующую строку в тег Location
1 | Deny 12.34.21.10 |
1 2 3 4 5 | <Location /product.html> ... Deny 12.34.21.10 ... </Location> |
Если вы хотите заблокировать доступ IP-адреса к определенной директории, например /admin, то добавьте указанную выше директиву Deny в блок расположения вложенной папки /admin.
1 2 3 4 5 | <Location /admin> ... Deny 12.34.21.10 ... </Location> |
Если вы хотите заблокировать доступ IP-адреса к определенному файлу, например /var/www/html/input.html, то добавьте приведенную выше директиву Deny в блок Directory файла input.html.
1 2 3 4 5 | <Directory /var/www/html/input.html> ... Deny 12.34.21.10 ... </Directory> |
Обратите внимание, что блок Location используется для ограничения доступа к URL-адресам (например, /index.html, /product ), а блок Directory - для ограничения доступа к файлам (например, /var/www/html/config.php). Эти блоки Location и Directory могут быть размещены в конфигурационном файле сервера Apache или в блоке виртуального хоста.
Ограничение доступа по нескольким IP в Apache
Если вы хотите ограничить доступ по нескольким IP, добавьте отдельные директивы Deny для каждого IP.
В следующем примере мы ограничиваем доступ к IP-адресам 12.34.21.10 и 32.34.23.12
1 2 3 4 5 6 | <Location /product.html > ... Deny 12.34.21.10 Deny 32.34.23.12 ... </Location> |
Если вы хотите ограничить доступ по диапазону IP-адресов, например 12.54.20.0-12.54.20.255, вы можете сделать это, используя CIDR-нотацию этого диапазона IP-адресов. Вот конфигурация для ограничения доступа из вышеуказанного диапазона IP.
1 2 3 4 5 | <Location /product.html > ... Deny 12.54.20.0/24 ... </Location> |
Перезапустите веб-сервер Apache
Перезапустите веб-сервер Apache, чтобы применить изменения.
1 2 3 4 5 | service httpd restart #ИЛИ systemctl restart httpd #ИЛИ sudo service apache2 restart |
Теперь, когда пользователь попытается получить доступ к вашему URL, файлу или каталогу с заблокированного IP-адреса, он получит ответ "403: Access Forbidden".