Безопасность в WordPress с IPtables
Безопасности стоит посвящать очень много времени, т.к хватает угодников взломать и напакостить. По этому, моя статья «Безопасность в WordPress с IPtables» посвящается защите водпрес. Я не буду рассказывать о плагинах на WordPress, их очень много и они работают. Я нашел еще один вариант борьбы с злоумышленниками и сейчас, я расскажу как можно выполнить защиту.
1. Защита файла /xmlrpc.php
Выполняем блокировку Flood-а на файл в wordpress /xmlrpc.php по методу POST запроса:
# iptables -A INPUT -p tcp -m multiport --dports 80 -m limit ! --limit 5/minute -m string --string 'POST /xmlrpc.php' -j LOG --log-level INFO --log-prefix "Flood to POST /xmlrpc.php: " # iptables -A INPUT -m string --string 'POST /xmlrpc.php' --dport 80 -m limit ! --limit 5/minute -j DROP
Или как я сделал для shared сервера с использованием Cpanel + csf:
# iptables -N WP-check-attack # iptables -A WP-check-attack -p tcp -m string --algo kmp --to 65535 --string 'POST /xmlrpc.php' --dport 80 -m limit --limit 5/minute --limit-burst 5 -j ACCEPT # iptables -A WP-check-attack -p tcp -m string --algo kmp --to 65535 --string 'POST /xmlrpc.php' --dport 80 -j LOG --log-level INFO --log-prefix "Flood to POST /xmlrpc.php: " # iptables -A WP-check-attack -p tcp -m string --algo kmp --to 65535 --string 'POST /xmlrpc.php' --dport 80 -j DROP # iptables -A LOCALINPUT -p tcp --dport 80 -j WP-check-attack
2. Защита файла /wp-login.php
Ограничиваем попытку входа в админ-панель wordpress, а именно на файл wp-login.php по методу POST запроса:
# iptables -A INPUT -p tcp -m multiport --dports 80 -m limit ! --limit 5/minute -m string --string 'POST /wp-login.php' -j LOG --log-level INFO --log-prefix "Flood to POST /wp-login.php: " # iptables -A INPUT -m string --string 'POST /wp-login.php' --dport 80 -m limit ! --limit 5/minute -j DROP
Или как я сделал для shared сервера с использованием Cpanel + csf:
# iptables -A WP-check-attack -p tcp -m string --algo kmp --to 65535 --string 'POST /wp-login.php' --dport 80 -m limit --limit 5/minute --limit-burst 5 -j ACCEPT # iptables -A WP-check-attack -p tcp -m string --algo kmp --to 65535 --string 'POST /xmlrpc.php' --dport 80 -j LOG --log-level INFO --log-prefix "Flood to POST /wp-login.php: " # iptables -A WP-check-attack -p tcp -m string --algo kmp --to 65535 --string 'POST /wp-login.php' --dport 80 -j DROP # iptables -A LOCALINPUT -p tcp --dport 80 -j WP-check-attack
Крайне рекомендую ознакомиться с защитой от различных атак с помощью fail2ban:
Установка Fail2ban
Удалить из fail2ban заблокированный ip
На этом все, я завершаю свою тему «Безопасность в WordPress с IPtables». Будет материал еще, дополню его.
Слушай,зачем ты это делаешь?) Фаервол нужен совсем не для того… Хочешь ограничить кол-во коннектов на порт, используй connlimit. А доступ к локейшену в nginx фильтруется limit’ом по ип. Подход с блокировкой пост запросов через фаервол это вообще не тру)
При использовании:
пишет:
что с этим делать?
Видимо убрили поддержу исключений в новых версия iptables. Попробуй использовать:
Так же, я советую начать использовать fail2ban — он облегчит жизнь и защитит от различных атак.