• Как запретить доступ к сайту по IP через .htaccess

    30
    Декабря


    как закрыть доступ к сайту по ip адресу через .htaccessДобрый день, друзья! Бывают ситуации, когда требуется запретить или ограничить доступ к сайту с определённых IP адресов. В этой статье я расскажу: «Как запретить доступ к сайту с определенного IP адреса?», «Как закрыть доступ ВСЕМ, кроме определенных IP» и т.д.

    Иногда требуется запретить доступ к сайту с определённого IP адреса или нескольких IP адресов. Ну допустим, какой-то «нехороший человек» упорно «гадит» нам в комментариях… Или спам-робот повадился к нам заглядывать… Естественно нам это не понравится! Для запрета доступа к сайту и папкам сайта в файле .htaccess используются дерективы allow и deny.

    .htaccess, как ограничить доступ к сайту по ip

    Чтобы запретить доступ с определенного 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 адресу

    Как вам статья? Надеюсь, тема: «Как запретить доступ к сайту по IP через .htaccess» была вам интересна, и вы нашли здесь для себя что-то полезное. Не забудьте подписаться на обновление моего сайта по e-mail.
    Внимание! Всех приглашаю в свою группу Вконтакте! Давайте делиться анонсами своих статей на стене этой группы! Думаю, она станет неплохим источником трафика для каждого блоггера!

    PS: я не уверен, напишу ли ещё статью в этом году, поэтому, Дорогие Друзья, от души поздравляю всех с Новым Годом и Рождеством! Желаю в новом 2013 году больше здоровья, огромного счастья, страстной любви и всего самого доброго!!!!! Всем Удачи!!!!!

    На этом всё. С уважением, Павел Макаров.
    P.S. Буду рад комментариям к этому посту.


  • Комментарии
    26

    Вы можете авторизироваться!

    • 18 Марта 2013 00:22
      Саныч

      Павел, спасибо большое за столь подробный разбор столь актуального вопроса! В последнее время очень часто лезут всякие нехорошие люди, много site lockout notifications. Скажите, есть ли вариант не прописывать каждый раз вручную "плохие" адреса в htaccess, а пользоваться какими-лиюо автоматическими службами?

      Ответить
      • 05 Мая 2013 18:15
        Павел Макаров

        Здравствуйте, Саныч!
        На счёт автоматических служб-сервисов я точно не знаю.. Но можно написать небольшой php-скрипт, который будет запрещать доступ к сайту не хуже файла htaccess, а информацию о "плохих" ip адресах хранить в базе. Соответственно можно сделать в админке удобную форму для добавления этих ip адресов в базу данных. Это позволит выполять эту работу приятнее и быстрее!

        Ответить
    • 30 Марта 2013 23:40
      Валерий

      Спасибо! Статья полезная и актуальная. Воспользовался этой информацией.

      Ответить
    • 13 Июня 2013 18:14
      Pavel

      Хотел спросить как можно запретить по ip допустим по маске с адресов 213,230,64 по 213,230,92.такое как можно реализовать?не прописывать же с 64 до 92 в ручную.подскажите,очень надо.

      Ответить
      • 21 Ноября 2015 14:40
        Дима

        В статье инфа есть

        Ответить
    • 19 Августа 2013 21:58
      Александр

      Отлично написано! Спасибо! Надеюсь, отважу сейчас зас*анцев, надоели уже спамить комменты, ну совсем надоели...

      Ответить
    • 23 Августа 2013 03:45
      Александр

      Что такое directory root-admin="" и нужно ли вставлять в скобки что-то? В wordpress на сколько знаю директория wp-admin или файл wp-login.php как с ними прописывать правило в .htaccess

      Ответить
      • 16 Октября 2013 13:36
        Павел Макаров

        Здравствуйте Александр!
        В данном случае directory /root-admin/ - это папка где хранятся файлы админки. Для wordpress это будет directory /wp-admin/
        Или можно записать такое правило:

        < Files wp-login.php >
        order deny,allow #Запрешено все, что не разрешено
        deny from all #Запрещено всем
        allow from 77.84.105.1 #Разрешено только мне :)
        
        

        Ответить
    • 02 Ноября 2013 01:01
      Павел

      Павел, приветствую! А как запретить доступ к сайту из всех стран, кроме России? И в России забанить один регион, СПб, например. Точнее, как это сделать, благодаря вашей статье уже стало понятно, вопрос -- как узнать маски IP адресов других стран?

      Ответить
    • 12 Мая 2014 23:47
      алекс

      Павел Здравствуйте Подскажите как закрыть доступ на сайт для всей России появилась временная нужда в этом =)

      Ответить
    • 19 Ноября 2014 19:17
      Николыч

      Хотелось бы еще вот что узнать. Мой сайт целенаправленно воруют через какой-то грабер, который по всей видимости работает на прямую. так как отслеживаются все изменения на сайте моментально. Я установил запрет доступа по IP а есть ли такая штука, которая запрещает заход на сайт определенного домена?

      Ответить
      • 24 Ноября 2014 13:50
        Павел Макаров

        Николыч, попробуйте следующий код в .htaccess:

        
        RewriteCond %{HTTP_REFERER} ^http://www\.ПЛОХОЙ_ДОМЕН\.(.*) [NC]
        RewriteRule .* - [F]
        
        

        Также запрет можно реализовать на php, для этого разместите следующий код в самом верху файла index.php который должен находиться в коренной директории вашего сайта:

        
        if(strpos( $_SERVER['HTTP_REFERER'], 'ПЛОХОЙ_ДОМЕН.com') !== FALSE)
        {print 'Вы перешли с ПЛОХОЙ_ДОМЕН.com - для вас сайт закрыт!';
        exit();} 
        
        

        Ответить
    • 20 Апреля 2015 13:29
      Александр

      Здравствуйте. Мой сайт на протяжении нескольких суток кто то пытается взломать. Чтобы защитить, я так понял мне нужно вставить первый код?

      Ответить
      • 28 Апреля 2015 14:12
        Alex

        Смените адрес входа в админку, а файл wp-login заблокируйте через .htaccess

        Ответить
    • 30 Апреля 2015 19:15
      Игорь

      Все бы ничего, но бывают ситуации, когда IP нет в базе, т.е. часть целевой аудитории потеряется, можно ли как-то использовать обработчик тех адресов которые пытались, но не прошли по нашей маске. Для того что бы эти самые адреса потом проверить ручками и в случае чего добавить в общий список?

      Ответить
    • 08 Сентября 2015 23:15
      Vaf

      Тоже помогло. Какие то школьники заказывали обратный звонок через каждые 5 минут на левые номера с одного и того же IP адреса. Школьники отправились в баню :)

      Ответить
    • 17 Сентября 2015 09:33
      Владимир

      Спасибо. Очень актуально. Особенно - защита админки.

      Ответить
    • 10 Декабря 2015 16:20
      СЕМЁН

      Павел,я воспользовался вашим советом и у меня не открываются теперь страницы кроме главной.

      Ответить
    • 24 Марта 2016 18:03
      Антон

      А как закрыть сайт от всего мира кроме России и стран СНГ?

      Ответить
      • 25 Апреля 2016 15:17
        Павел Макаров

        Антон, скорее всего писать php-скрипт проверки каждого входящего ip на принадлежность к определённому региону и далее уже делать вывод, пускать на сайт или нет. Подобного готового скрипта у меня нет.

        Ответить
    • 13 Апреля 2016 22:27
      Евгений

      Здравствуйте, у моего сайта появился клон, который всё изменяет режиме онлайн с моего сайта, НО клон почему-то имеет два IP адреса, и не блокируется по IP ! Помогите пожалуйста заблокировать нахлебника! Хостинг клона в США - cloudflare.com

      Ответить
    • 23 Мая 2016 12:25
      Андрей

      Сделал всё в точности, прописал deny и маски айпи. Сохранил в htaccess.txt в корень сайта на Joomla. Сайт всё равно доступен с этих айпи. Возможные ошибки с моей стороны (ИМХО): 1) в коде символ # в строках с deny XXX.XXX.XXX.XXX я не ставил 2) в Вашей инструкции не указано КУДА ИМЕННО вставлять в файле htaccess.txt, поэтому впихнул просто в середину файла. Где еще может быть ошибка?

      Ответить
    • 04 Сентября 2016 20:37
      wdtime

      Нашел решение тут: wdtime ru

      Ответить
    • 18 Ноября 2016 23:10
      Александр

      Добрый вечер! Подскажите написание .htaccess Чтобы можно заходить только с Российских ip, все остальные заблокированы. СПАСИБО!)

      Ответить
    • 04 Февраля 2017 14:30
      qwert

      Подскажите, пожалуйста, какой код должен быть, чтобы запретить доступ c разных IP- адресов? Например, с 38.99.83.77 78.88.81.55 58.55.83.192 и т.д.

      Ответить



  Наверх