Автоматический 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:30, то задание выполнится в 14:30.

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

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

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

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

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

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

Если вам нужна авторизация на сервере, попробуйте плагин 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. Как отключить информацию о версии ПО в ответах Сервера

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

комментариев 14

  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. Да, несущественное. По сравнению с нагрузкой, которую они вызывают своими запросами, вообще незаметное.

Ответить

Ваш адрес email не будет опубликован.Обязательные поля помечены *

Techbear

Сайт для тех, кто хочет использовать Вордпресс по максимуму, но не хочет разбираться в коде.

WordPress   WooCommerce   Membership   Elementor   ACF

Обновления блога

Subsription - Gray Footer
Techbear