Как запретить доступ к сайту по IP через .htaccess
30
Декабря
Добрый день, друзья! Бывают ситуации, когда требуется запретить или ограничить доступ к сайту с определённых IP адресов. В этой статье я расскажу: «Как запретить доступ к сайту с определенного IP адреса?», «Как закрыть доступ ВСЕМ, кроме определенных IP» и т.д.
Иногда требуется запретить доступ к сайту с определённого IP адреса или нескольких IP адресов. Ну допустим, какой-то «нехороший человек» упорно «гадит» нам в комментариях… Или спам-робот повадился к нам заглядывать… Естественно нам это не понравится! Для запрета доступа к сайту и папкам сайта в файле .htaccess используются дерективы allow и deny.
Чтобы запретить доступ с определенного IP адреса вставьте в файл .htaccess этот код:
#Запрет доступа к сайту с IP 298.169.132.24
Order allow,deny
allow from all
Deny from 298.169.132.24
Бывает обратная ситуация, когда требуется закрыть доступ к сайту всем, кроме определённых IP адресов. Например, это может понадобиться, когда на сайте проводятся технические работы. Недавно у меня была такая ситуация, когда на контент одного из интернет-магазинов обслуживаемых мною поступила жалоба… Пришлось срочно закрыть к нему доступ со всех IP кроме своего, связаться с администрацией и решать эту проблему.
Чтобы закрыть доступ к сайту всем, кроме определённых IP адресов вставьте в файл .htaccess следующий код:
Order deny,allow
deny from all
#Список IP через пробел, с которых доступ разрешен
Allow from 197.143.50.248 193.478.457.10
В случае, если требуется закрыть доступ к сайту по маске, то используется не полный IP адрес. Исходный код для файла .htaccess будет выглядеть так:
#неполный адрес
198.69.
#полные адреса, соответствующие первому
198.69.132.24
198.69.136.89
198.69.1.8
#Запрет доступа к сайту по маске
Order allow,deny
allow from all
Deny from 198.69.
Для усиления защиты админки сайта имеет смысл разрешить доступ к ней только с определённых IP адресов. Пропишите в файл .htaccess следующий код:
#Указываем папку, к которой запрещаем доступ по имени хоста и его IP
< Directory /root-admin/ >
Order deny, allow
deny from all
#Адреса записываются через пробел
Allow from 198.69.144.98 198.69.144.94
Стоит также сказать, что пользователь, IP адрес которого запрещён при попытке зайти на ваш сайт, получит 403 ошибку: Forbidden «You don't have permission to access / on this server».
Как видите ограничить или запретить доступ к сайту по IP адресу с помощью .htaccess совсем не сложно! Если у вас появились вопросы, буду рад ответить на них в комментариях! Задавайте! :)
В рубрике «Мотивация – путь к успеху» сегодня вот такая картинка:
Как вам статья? Надеюсь, тема: «Как запретить доступ к сайту по IP через .htaccess» была вам интересна, и вы нашли здесь для себя что-то полезное. Не забудьте подписаться на обновление моего сайта по e-mail. Внимание! Всех приглашаю в свою группу Вконтакте! Давайте делиться анонсами своих статей на стене этой группы! Думаю, она станет неплохим источником трафика для каждого блоггера!
PS: я не уверен, напишу ли ещё статью в этом году, поэтому, Дорогие Друзья, от души поздравляю всех с Новым Годом и Рождеством! Желаю в новом 2013 году больше здоровья, огромного счастья, страстной любви и всего самого доброго!!!!! Всем Удачи!!!!!
На этом всё. С уважением, Павел Макаров. P.S. Буду рад комментариям к этому посту.
Комментарии
30
Вы можете авторизироваться!
18 Марта 2013 00:22
Саныч
Павел, спасибо большое за столь подробный разбор столь актуального вопроса! В последнее время очень часто лезут всякие нехорошие люди, много site lockout notifications. Скажите, есть ли вариант не прописывать каждый раз вручную "плохие" адреса в htaccess, а пользоваться какими-лиюо автоматическими службами?
Здравствуйте, Саныч!
На счёт автоматических служб-сервисов я точно не знаю.. Но можно написать небольшой php-скрипт, который будет запрещать доступ к сайту не хуже файла htaccess, а информацию о "плохих" ip адресах хранить в базе. Соответственно можно сделать в админке удобную форму для добавления этих ip адресов в базу данных. Это позволит выполять эту работу приятнее и быстрее!
Хотел спросить как можно запретить по ip допустим по маске с адресов 213,230,64 по 213,230,92.такое как можно реализовать?не прописывать же с 64 до 92 в ручную.подскажите,очень надо.
Что такое directory root-admin="" и нужно ли вставлять в скобки что-то? В wordpress на сколько знаю директория wp-admin или файл wp-login.php как с ними прописывать правило в .htaccess
Здравствуйте Александр!
В данном случае directory /root-admin/ - это папка где хранятся файлы админки. Для wordpress это будет directory /wp-admin/
Или можно записать такое правило:
< Files wp-login.php >
order deny,allow #Запрешено все, что не разрешено
deny from all #Запрещено всем
allow from 77.84.105.1 #Разрешено только мне :)
Павел, приветствую!
А как запретить доступ к сайту из всех стран, кроме России?
И в России забанить один регион, СПб, например.
Точнее, как это сделать, благодаря вашей статье уже стало понятно, вопрос -- как узнать маски IP адресов других стран?
Хотелось бы еще вот что узнать. Мой сайт целенаправленно воруют через какой-то грабер, который по всей видимости работает на прямую. так как отслеживаются все изменения на сайте моментально. Я установил запрет доступа по IP а есть ли такая штука, которая запрещает заход на сайт определенного домена?
Также запрет можно реализовать на php, для этого разместите следующий код в самом верху файла index.php который должен находиться в коренной директории вашего сайта:
if(strpos( $_SERVER['HTTP_REFERER'], 'ПЛОХОЙ_ДОМЕН.com') !== FALSE)
{print 'Вы перешли с ПЛОХОЙ_ДОМЕН.com - для вас сайт закрыт!';
exit();}
Все бы ничего, но бывают ситуации, когда IP нет в базе, т.е. часть целевой аудитории потеряется, можно ли как-то использовать обработчик тех адресов которые пытались, но не прошли по нашей маске. Для того что бы эти самые адреса потом проверить ручками и в случае чего добавить в общий список?
Тоже помогло. Какие то школьники заказывали обратный звонок через каждые 5 минут на левые номера с одного и того же IP адреса. Школьники отправились в баню :)
Антон, скорее всего писать php-скрипт проверки каждого входящего ip на принадлежность к определённому региону и далее уже делать вывод, пускать на сайт или нет. Подобного готового скрипта у меня нет.
Здравствуйте, у моего сайта появился клон, который всё изменяет режиме онлайн с моего сайта, НО клон почему-то имеет два IP адреса, и не блокируется по IP ! Помогите пожалуйста заблокировать нахлебника! Хостинг клона в США - cloudflare.com
Сделал всё в точности, прописал deny и маски айпи.
Сохранил в htaccess.txt в корень сайта на Joomla.
Сайт всё равно доступен с этих айпи.
Возможные ошибки с моей стороны (ИМХО):
1) в коде символ # в строках с deny XXX.XXX.XXX.XXX я не ставил
2) в Вашей инструкции не указано КУДА ИМЕННО вставлять в файле htaccess.txt, поэтому впихнул просто в середину файла.
Где еще может быть ошибка?
А как сделать, чтобы человек с нужным ip вместо сайта увидел заданную страницу? И еще вопрос: мы можем сделать так, чтобы сайт проверил IP и если ip совпал с нужным, то произошло выполнение функции?
Павел Макаров
Здравствуйте, Саныч!
На счёт автоматических служб-сервисов я точно не знаю.. Но можно написать небольшой php-скрипт, который будет запрещать доступ к сайту не хуже файла htaccess, а информацию о "плохих" ip адресах хранить в базе. Соответственно можно сделать в админке удобную форму для добавления этих ip адресов в базу данных. Это позволит выполять эту работу приятнее и быстрее!