Безопасность в WordPress с IPtables

Безопасность в 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». Будет материал еще, дополню его.

3 thoughts on “Безопасность в WordPress с IPtables

  1. Слушай,зачем ты это делаешь?) Фаервол нужен совсем не для того… Хочешь ограничить кол-во коннектов на порт, используй connlimit. А доступ к локейшену в nginx фильтруется limit’ом по ип. Подход с блокировкой пост запросов через фаервол это вообще не тру)

  2. При использовании:

    # 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
    

    пишет:

    iptables v1.4.21: limit: option "--limit" cannot be inverted.
    

    что с этим делать?

    • Видимо убрили поддержу исключений в новых версия iptables. Попробуй использовать:

      # iptables -A INPUT -p tcp -m multiport --dports 80 -m limit --limit 5/minute --limit-burst 5 -m string --algo kmp --string 'POST /xmlrpc.php' -j LOG --log-level INFO --log-prefix "Flood to POST /xmlrpc.php: "
      # iptables -A INPUT -p tcp -m multiport --dports 80 -m limit --limit 5/minute --limit-burst 5 -j RETURN
      

      Так же, я советую начать использовать fail2ban — он облегчит жизнь и защитит от различных атак.

Добавить комментарий

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.