»  Безопасность  »  Автоматический IP файрвол для Вордпресс

Автоматический IP файрвол для Вордпресс

Последнее обновление:

Автоматический IP Firewall для WordPressНа просторах Интернета я нашел небольшой PHP скрипт, который автоматически обновляет файл .htaccess текущим списком IP адресов, ведущих вредоносную деятельность.

Этот файрвол улучшает «защиту сайта в реальном времени» от хакерских атак и вредоносных запросов, потому что запрещает доступ к сайту с этих вредоносных IP.

Как следствие, вы получите более защищенный сайт и сэкономите ресурсы сервера на вредоносных запросах с этих IP, которые вы потратите на обслуживание посетителей с «хороших» IP.

Чтобы установить этот файрвол, вам понадобится доступ к серверу. Вы добавите один файл и настроите cron расписание.

В этой статье вы узнаете, как применить эту защиту за 2 простых шага.

Шаг 1. Добавьте PHP скрипт

Первое, что вам нужно сделать — добавить скрипт на сервер. Скачайте скрипт отсюда или отсюда, или скопируйте отсюда:

Скрипт был написан в 2013 году, но до сих пор работает на 100% правильно и эффективно. Это действительно краткий и изящный скрипт.

В нем не нужно делать никаких изменений, просто загрузите файл на сервер и переходите к Шагу 2 для настройки cron расписания.

Сам по себе он ничего не делает. Его нужно вызывать, чтобы он подключался к указанному адресу, получал последний список вредоносных IP адресов и добавлял их в ваш .htaccess.

То есть, с технической стороны, вы могли бы каждый день вручную запускать этот скрипт, чтобы обновлять список плохих IP, но можно это делать автоматически с помощью cron команды.

Важно: Ваш .htaccess файл должен иметь правильные права доступа, чтобы сервер имел к нему доступ и мог записывать новую информацию. Проверьте, что у сервера есть минимальные права доступа.

В зависимости от настроек вашего сервера, права доступа должны быть 600 или выше.

Решение проблем

Хотя в этом скрипте нечему ломаться или работать неправильно, у вас может появиться проблема отсутствия доступа к файлу .htaccess, даже если он существует и ему даны правильные права доступа.

Если вы постоянно получаете ошибку No access to file: /.htaccess in your website root directory. Please create this file or change file permissions if it exists, то измените путь к файлу .htaccess.

Попробуйте убрать слэш перед файлом .htaccess в строке 32:

Если это не сработает, запишите полный путь к .htaccess:

Замените /путь/к/вашему/файлу/ на свой путь.

Шаг 2. Cron расписание

После того, как вы загрузили файл на сервер, вам нужно настроить cron расписание, чтобы запускать скрипт раз в день, два раза в день, раз в неделю или с нужной вам периодичностью.

Существует как минимум 2 способа запускать cron: непосредственно на сервере (или на панели хостинга), или используя WordPress Cron API.

Linux/Unix Cron

Cron — это сервис хронологических расписаний в ОС Linux/Unix. Cron задания используются для периодического выполнения команд или скриптов, с указанным временным интервалом.

В ОС Linux/Unix cron сервис работает в фоновом режиме и постоянно опрашивает файл /etc/crontab и папки /var/spool/cron/ и /etc/cron./*.

Типичное cron задание, которое запускается каждые 24 часа, выглядит так:

# [minute hour day month weekday] [resource] [command]
 0 24 * * * /usr/bin/php /var/www/html/phpscript_httaccess.php

Каждое cron задание состоит из трех элементов, которые нужно настроить:

  • Временной интервал
  • Путь к ресурсу (в этом случае папка /php)
  • Путь к скрипту (в этом случае файл phpscript_httaccess.php)

Самое сложное во всем этом — правильно записать адреса, то есть путь к ресурсу и путь к скрипту.

Больше информации по настройке cron-расписания: unixgeeks.org.

Cron в панели хостинга

На моем хостинге можно настроить выполнение cron заданий.

Мастер cron заданий на панели Beget
Мастер cron заданий на панели Beget

С помощью этого мастера вы можете создать задание за несколько кликов.

  • Выберите PHP-скрипт
  • В дереве файлов найдите нужный файл
  • Настройте время выполнения

На вашем хостинге это должно делаться аналогично.

Вордпресс Cron

Как и в Linux/Unix системах, в Вордпресс тоже есть возможность выполнять задания по расписанию или с заданной периодичностью.

В отличие от крона на Linux/Unix, крон Вордпресс является псевдо крон сервисом. Вместо того, чтобы выполняться в строго указанное время, задания выполняются после указанного времени во время первой загрузки страницы.

То есть, если задание назначено на 14:00, то оно выполнится, когда первый посетитель после 14:00 запросит какую-то страницу. Например, если посетитель придет на сайт в 14:12, то задание выполнится в 14:12.

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

Простой скрипт для добавления нового cron задания:

Замените /path/to/ на ваш путь к файлу phpscript_httaccess.php в строке 10.

Чтобы добавить эти 2 функции в Вордпресс, вы можете создать плагин, либо добавьте их в файл functions.php дочерней темы или с помощью специального плагина.

Cron расписание с помощью плагина

Вы можете создать cron задания с помощью плагина. Попробуйте плагины Advanced Cron Manager или WP Crontrol:

Если вам нужна авторизация на сервере, попробуйте плагин WP Cron HTTP Auth:

Тестирование

После того, как вы все настроили, вы можете проверить, что файрвол работает, наблюдая за файлом .htaccess. Вы должны увидеть, что директивы, которые этот скрипт добавляет в файл .htaccess, меняются с заданной периодичностью.

Чтобы проверить работу скрипта на этапе тестирования, вы можете уменьшить интервал расписания, например, до 5 минут. После этого вы можете добавить какой-то комментарий или пустую строку в тот раздел .htaccess, куда файрвол добавляет свои правила.

Подождите 5 минут, вы должны увидеть, что ваш комментарий или пустая строка пропали, потому что файрвол обновил / записал новые правила.

Плагины с файрволом

Этот файрвол в готовом виде уже есть в некоторых плагинах. Вы можете попробовать плагин WP Maltor:

Этот плагин блокирует доступ к сайту с вредоносных IP, которые он берет с того же ресурса, к которому мы настраивали подключение. Интервал обновления — 30 минут, не настраивается.

Вторая функция — плагин блокирует подключение к сайту с IP, которые используют Tor. Вы можете включить работу одной из двух функций, или обе сразу.

Еще один более комплексный платный плагин, который использует тот же сервис, — Security Ninja Pro.

Плагин Security Ninja

Большой комплексный плагин со всеми необходимыми настройками безопасности. У плагина есть несколько сканеров по расписанию, сообщения на е-мейл о подозрительной активности, логи событий и IP файрвол с динамической базой более чем 640 млн. вредоносных адресов.

Этот плагин вы можете дополнить ручными настройками:

Заключение

Этот автоматический IP файрвол запрещает доступ к сайту с IP адресов, ведущих подозрительную или вредоносную деятельность, затрачивая при этом минимум ресурсов.

Это значит, что их вредоносная деятельность будет пресечена еще на подходе к вашему сайту, а освободившиеся ресурсы сервера будут потрачены на обслуживание хорошего трафика.

Читайте также:

  1. Как установить бесплатный файрвол на сервер
  2. Как отключить информацию о версии ПО в ответах Сервера

Надеюсь, статья была полезна. Оставляйте комментарии.

Поделиться в facebook
Поделиться в vk
Поделиться в email
Поделиться в telegram
Поделиться в whatsapp

Комментарии:

  1. Мне кажется, что этот скрипт не прописывает
    «»
    order allow,deny
    allow from all

    deny from 54.36.148.196
    deny from 54.36.148.142
    …….
    …….
    «»

    И когда плагин добавляет в файл .htaccess свои правила в конец файлы, при обновлении Cron – этот скрипт удаляет последнюю запись.

    Дмитрий, как можно это исправить и добавить в скрипт функцию добавления Начало и Конец.

    Ответить
    • «» — в смысле комментарии? здесь комментарии после #
      начало скрипта отмечается ## BLACKLIST IP AUTO ADDED ##

      Когда крон запускает файл в следующий раз, запись в .htaccess обновляется, потому что в список IP добавляются новые адреса, или убираются старые.

      Ответить
  2. Дмитрий,
    а этот скрипт работает — у меня существенно увеличилось кол-во 403 ошибки в ответе сервера.

    Ответить
    • Да, он работает.
      Суть этого скрипта в том, что он добавляет IP адреса в файл .htaccess.
      Этим адресам запрещен доступ к вашему сайту, то есть они получают ошибку 403.

      Другое дело, если эту ошибку получают те, кто приходит не с тех IP адресов, которые скрипт добавляет в .htaccess.
      Тогда нужно смотреть.

      Ответить
  3. 1. Я стараюсь проверять каждый IP адрес
    2. Что поделаешь, но как говорят — кашу маслом не испортишь.
    3. Не смотрели https://cleantalk.org/ru/ ?

    Дмитрий,
    не способа закрыть китайские IP? 90% — этих ребят.
    Или чудес не бывает?

    Ответить
    • Что я хочу сказать — это запрещать доступ по IP каким-нибудь монстрам.
      А всем, кто поменьше — просто настроить хорошую защиту от вредоносных запросов и разного рода атак.

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

      Есть способ ограничить вход на сайт по странам с помощью плагинов, например, IP2Location Country Blocker или Admin Block Country.
      Если вы пользуетесь Cloudflare, то можно создать правило в файрволе: Правила файрвола
      Если хотите вручную — вот китайские IP, можно скачать CSV файл.

      Ответить
  4. Дмитрий,
    спасибо за скрипт по борьбе с плохими IP.
    установка заняла несколько минут с тестирование!
    Я установил Cron задание на один раз в день 00:00.
    Вопрос, делитанта: обращение к http://myip.ms/ не увеличит нагрузку на хостинг.

    Желаю Удачи и Здоровья!
    Сергей, Киев

    Ответить
    • Спасибо за отзыв!
      Увеличит, конечно 🙂 (На некое около-микроскопическое количество)
      Поэтому постарайтесь найти свой баланс между безопасностью и нагрузкой.
      1. Вы можете настроить обновления чаще или реже
      2. Вы можете выбрать время обновления, когда на сайте меньше всего посетителей.
      Обычно это около 4:00.

      Ответить
      • 1. Я стараюсь каждый день, добавлять на хостинге в «Ограничение доступа» особо активные IP адреса из отчетов Нагрузка по IP и Логи сервера.
        На сегодня положительный результат заметен.
        2. Я бегло пробежался по предложенным в .httaccess IP. Ко мне на сайт большинство этих ребята не заходили.
        3. Увеличения на сайт наверное, будет не очень существенное, т.к. скрипт скачивает два небольших .txt файлов…

        Ответить
        • 1. Да, но когда список станет большим вы начнете запрещать и хороший трафик, поэтому этот процесс лучше автоматизировать.
          2. Я подозреваю, что большинство из этих IP имеют западное происхождение, и ходят они тоже в основном по западным сайтам. Скорее всего сканируют диапазоны IP, которые опять же находятся на Западе.
          3. Да, несущественное. По сравнению с нагрузкой, которую они вызывают своими запросами, вообще незаметное.

          Ответить

Оставьте комментарий

Do NOT follow this link or you will be banned from the site!