Автоматический IP файрвол для Вордпресс
Я нашел небольшой 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 заданий.
С помощью этого мастера вы можете создать задание за несколько кликов.
- Выберите 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.
Большой комплексный плагин со всеми необходимыми настройками безопасности. У плагина есть несколько сканеров по расписанию, сообщения на е-мейл о подозрительной активности, логи событий и IP файрвол с динамической базой более чем 640 млн. вредоносных адресов.
Этот плагин вы можете дополнить ручными настройками:
Если этот плагин вам интересен, обращайтесь ко мне. У меня есть лайф-тайм лицензия этого плагина, я могу установить его на вашем сайте.
Заключение
Этот автоматический IP файрвол запрещает доступ к сайту с IP адресов, ведущих подозрительную или вредоносную деятельность, затрачивая при этом минимум ресурсов.
Это значит, что их вредоносная деятельность будет пресечена еще на подходе к вашему сайту, а освободившиеся ресурсы сервера будут потрачены на обслуживание хорошего трафика.
Читайте также:
Надеюсь, статья была полезна. Оставляйте комментарии.
комментариев 14
Ответить
Techbear
Сайт для тех, кто хочет использовать Вордпресс по максимуму, но не хочет разбираться в коде.
WordPress WooCommerce Membership Elementor ACF
Добрый день!
А если происходит ошибка вида:
Error! No access to file: http://myip.ms/files/blacklist/htaccess/latest_blacklist.txt
Что это может быть?
Спасибо.
Затрудняюсь сказать.
Мне кажется, что этот скрипт не прописывает
«»
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 добавляются новые адреса, или убираются старые.
Дмитрий,
а этот скрипт работает — у меня существенно увеличилось кол-во 403 ошибки в ответе сервера.
Да, он работает.
Суть этого скрипта в том, что он добавляет IP адреса в файл .htaccess.
Этим адресам запрещен доступ к вашему сайту, то есть они получают ошибку 403.
Другое дело, если эту ошибку получают те, кто приходит не с тех IP адресов, которые скрипт добавляет в .htaccess.
Тогда нужно смотреть.
1. Я стараюсь проверять каждый IP адрес
2. Что поделаешь, но как говорят — кашу маслом не испортишь.
3. Не смотрели https://cleantalk.org/ru/ ?
Дмитрий,
не способа закрыть китайские IP? 90% — этих ребят.
Или чудес не бывает?
Что я хочу сказать — это запрещать доступ по IP каким-нибудь монстрам.
А всем, кто поменьше — просто настроить хорошую защиту от вредоносных запросов и разного рода атак.
Если кто-то пытался подобрать пароль от админки, то не нужно запрещать этому IP заходить на ваш сайт.
На этом же IP может находиться и хороший трафик.
Вместо этого настройте защиту админки — перенесите страницу входа в другое место, ограничьте количество неудачных попыток, используйте сложный логин и пароль, и так далее.
Если вы видите, что с какого-то IP постоянно идут какие-то атаки, запросы, то запрещайте.
В этом файрволе как раз такие IP.
Есть способ ограничить вход на сайт по странам с помощью плагинов, например, IP2Location Country Blocker или Admin Block Country.
Если вы пользуетесь Cloudflare, то можно создать правило в файрволе: Правила файрвола
Если хотите вручную — вот китайские IP, можно скачать CSV файл.
Я Весь Китай отключил https://www.ip2location.com/free/visitor-blocker
Третий день живу без восточных настырных друзей.
🙂 Поздравляю!
Дмитрий,
спасибо за скрипт по борьбе с плохими IP.
установка заняла несколько минут с тестирование!
Я установил Cron задание на один раз в день 00:00.
Вопрос, делитанта: обращение к http://myip.ms/ не увеличит нагрузку на хостинг.
Желаю Удачи и Здоровья!
Сергей, Киев
Спасибо за отзыв!
Увеличит, конечно 🙂 (На некое около-микроскопическое количество)
Поэтому постарайтесь найти свой баланс между безопасностью и нагрузкой.
1. Вы можете настроить обновления чаще или реже
2. Вы можете выбрать время обновления, когда на сайте меньше всего посетителей.
Обычно это около 4:00.
1. Я стараюсь каждый день, добавлять на хостинге в «Ограничение доступа» особо активные IP адреса из отчетов Нагрузка по IP и Логи сервера.
На сегодня положительный результат заметен.
2. Я бегло пробежался по предложенным в .httaccess IP. Ко мне на сайт большинство этих ребята не заходили.
3. Увеличения на сайт наверное, будет не очень существенное, т.к. скрипт скачивает два небольших .txt файлов…
1. Да, но когда список станет большим вы начнете запрещать и хороший трафик, поэтому этот процесс лучше автоматизировать.
2. Я подозреваю, что большинство из этих IP имеют западное происхождение, и ходят они тоже в основном по западным сайтам. Скорее всего сканируют диапазоны IP, которые опять же находятся на Западе.
3. Да, несущественное. По сравнению с нагрузкой, которую они вызывают своими запросами, вообще незаметное.