Firewall WordPress настройка: полное руководство по UFW и iptables

Почему WordPress нуждается в брандмауэре

WordPress — самая популярная CMS, и поэтому он становится мишенью для атак. Брандмауэр (firewall) контролирует входящий и исходящий трафик, позволяя блокировать нежелательные запросы, уменьшать риск DDoS и предотвращать сканирование портов. Правильная firewall wordpress настройка может снизить нагрузку на сервер и повысить показатель uptime.

UFW: простой способ начать защиту

UFW (Uncomplicated Firewall) — обёртка над iptables, разработанная для удобства. На большинстве Ubuntu‑серверов он уже установлен.

Установка и базовая конфигурация

sudo apt update && sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Разрешаем SSH (порт 22) и HTTP/HTTPS
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

После включения ufw status verbose покажет активные правила.

Ограничение попыток подключения (rate‑limiting)

Защита от brute‑force‑атак на wp‑login.php реализуется через ограничение количества запросов с одного IP.

sudo ufw limit ssh/tcp
sudo ufw insert 1 deny from any to any port 80,443 proto tcp comment 'Rate limit WordPress login'

Для более гибкой настройки рекомендуется добавить правило, блокирующее запросы к /wp-login.php после 10 попыток в минуту.

iptables: продвинутый контроль трафика

Если требуется более детальная фильтрация, используйте iptables. Ниже — набор правил, которые покрывают основные угрозы.

Базовый набор правил

# Очистим текущие правила
sudo iptables -F
sudo iptables -X

# Политика по умолчанию – отклонять всё входящее
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

# Разрешаем локальный трафик и уже установленное соединение
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Открываем SSH, HTTP и HTTPS
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Защита от SYN‑флуд (частый DDoS‑вектор)
sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

Эти правила можно сохранить в файл /etc/iptables/rules.v4 и загрузить при старте системы.

Блокировка XML‑RPC и сканеров

XML‑RPC часто используется для DDoS‑атак. Отключить его можно на уровне веб‑сервера, но дополнительно заблокировать запросы в firewall — хорошая практика.

# Отключаем доступ к /xmlrpc.php
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 
    -m string --string "/xmlrpc.php" --algo bm -j DROP

# Блокируем типичные сканеры (nmap, masscan)
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP   # NULL scan
sudo iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP   # XMAS scan

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

Защита от DDoS на уровне firewall

Полноценная защита от распределённых атак требует комбинирования нескольких техник.

Ограничение соединений per IP

# Не более 100 новых соединений в минуту с одного IP
sudo iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j DROP
sudo iptables -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 100 -j DROP

Использование limit‑модуля

# 30 запросов в секунду к любой странице, иначе DROP
sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 30/second --limit-burst 60 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j DROP

Эти простые лимиты в сочетании с CDN (например, Cloudflare) позволяют выдержать даже крупные атаки.

Тестирование и мониторинг правил

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

  1. Проверьте статус UFW: sudo ufw status numbered.
  2. С помощью iptables -L -v -n убедитесь, что счётчики пакетов растут только для разрешённых правил.
  3. Запустите тесты нагрузки и сравните время отклика до и после.
  4. Настройте логирование: sudo ufw logging on и sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP:".

Регулярный просмотр логов поможет отлавливать новые векторы атак и своевременно корректировать правила.

Полезные ссылки и дальнейшее чтение

Для более глубокого понимания интеграции firewall с WordPress ознакомьтесь с материалами WPBox:

Эти статьи помогут собрать полную картину оптимизации сайта от базы данных до фронтенда.

❓ Часто задаваемые вопросы

Как проверить, что правила iptables действительно работают?

Запустите sudo iptables -L -v -n и обратите внимание на столбцы «pkts» и «bytes». Если счётчики увеличиваются только у разрешённых правил, значит всё настроено корректно.

Можно ли использовать только UFW без iptables?

Да, UFW управляет iptables за вас. Для большинства сайтов достаточно базовых правил UFW, но сложные сценарии (например, ограничение SYN‑флуд) требуют прямого доступа к iptables.

Как отключить доступ к xmlrpc.php через firewall?

Добавьте правило iptables, которое отбрасывает запросы, содержащие строку «/xmlrpc.php», либо используйте UFW: sudo ufw deny in to any port 80 proto tcp from any comment 'Block xmlrpc'.

Что делать, если после настройки firewall сайт недоступен?

Проверьте, открыты ли нужные порты (22, 80, 443) и не блокируются ли локальные соединения. Откатить изменения можно командой sudo ufw reset или удалив правила iptables через iptables -F.