10 ноября 2026 г. · by Alex M.
Среди всех инструментов защиты Linux-серверов iptables занимает особое место — это мощный, гибкий и проверенный временем файрвол, встроенный прямо в ядро системы. Несмотря на появление более современных оберток вроде UFW и firewalld, глубокое понимание iptables даёт администратору полный контроль над сетевым трафиком — что особенно важно на любом VPS NVMe или выделенном сервере, подключённом к интернету.
В этом руководстве вы узнаете, как установить, настроить и управлять iptables на Ubuntu или Debian — от начального состояния до надёжного набора правил безопасности.
iptables — утилита пространства пользователя, позволяющая настраивать правила фильтрации IP-пакетов в ядре Linux (через подсистему Netfilter). Работает на основе таблиц, цепочек и правил:
filter (по умолчанию), nat, mangle, rawINPUT (трафик к серверу), OUTPUT (трафик от сервера), FORWARD (пересылаемый трафик)ACCEPT, DROP, REJECT, LOGКаждый сетевой пакет проходит через правила по порядку; первое совпавшее правило определяет судьбу пакета.
Перед началом убедитесь, что у вас есть:
sudoНа большинстве дистрибутивов iptables предустановлен. Проверьте текущее состояние:
sudo iptables -L -v -n
Если не установлен:
# Ubuntu/Debian
sudo apt update && sudo apt install iptables -y
Для просмотра правил IPv6:
sudo ip6tables -L -v -n
Перед добавлением правил определите политики по умолчанию для цепочек. Существуют два подхода:
⚠️ Критическое предупреждение: Не устанавливайте политику INPUT на DROP до того, как добавите правило, разрешающее SSH! Иначе вы заблокируете себя на сервере.
# 1. Разрешите SSH ПЕРЕД всем остальным
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 2. Разрешите loopback (критично для работы системы)
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
# 3. Разрешите уже установленные соединения
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 4. Теперь можно безопасно установить политику DROP
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
Если вы запускаете веб-сервер (Apache, Nginx) или используете хостинг cPanel или VPS, добавьте:
# HTTP
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# HTTPS
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# DNS (если сервер выполняет DNS-разрешение)
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT
# ICMP (ping) — полезно для мониторинга
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Для почтовых серверов, которым также нужны SSL-сертификаты:
# SMTP, SMTPS, IMAP, IMAPS, POP3S
sudo iptables -A INPUT -p tcp -m multiport --dports 25,465,587,143,993,110,995 -j ACCEPT
# Ограничьте новые SSH-соединения до 5 в минуту с одного IP
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW \
-m recent --set --name SSH
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW \
-m recent --update --seconds 60 --hitcount 5 --name SSH -j DROP
# Ограничьте новые HTTP-соединения (анти-DoS)
sudo iptables -A INPUT -p tcp --dport 80 -m limit \
--limit 25/minute --limit-burst 100 -j ACCEPT
# Блокируйте пакеты со статусом INVALID
sudo iptables -A INPUT -m state --state INVALID -j DROP
# Защита от SYN-флуда
sudo iptables -A INPUT -p tcp --syn -m limit \
--limit 1/s --limit-burst 4 -j ACCEPT
# Блокируйте Null-сканирование
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# Блокируйте XMAS-сканирование
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
# Блокируйте частные адреса, приходящие снаружи (на интерфейсе eth0)
sudo iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
sudo iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
sudo iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
sudo iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP
Проверьте имя вашего сетевого интерфейса командой
ip addr showи заменитеeth0при необходимости (например,ens3,enp1s0).
Если вы замечаете атаки с определённых IP (видимые в логах или через netstat), заблокируйте их напрямую:
# Заблокировать конкретный IP
sudo iptables -A INPUT -s 203.0.113.100 -j DROP
# Заблокировать целую подсеть
sudo iptables -A INPUT -s 203.0.113.0/24 -j DROP
# Разблокировать IP
sudo iptables -D INPUT -s 203.0.113.100 -j DROP
На управляемом выделенном сервере команда администрирования может настроить автоматические и более продвинутые списки блокировки.
Для мониторинга блокируемого трафика (полезно при отладке и аудите безопасности):
# Добавьте правило логирования ПЕРЕД неявным DROP
sudo iptables -A INPUT -j LOG --log-prefix "[IPTABLES DROP] " --log-level 4
Логи появляются в /var/log/syslog или /var/log/kern.log:
sudo tail -f /var/log/kern.log | grep "IPTABLES DROP"
⚠️ Интенсивное логирование может быстро заполнить диск. Используйте модуль
limit:
sudo iptables -A INPUT -m limit --limit 5/min -j LOG \
--log-prefix "[IPTABLES DROP] " --log-level 4
Правила iptables энергозависимы — они удаляются при перезагрузке. Для сохранения:
sudo apt install iptables-persistent -y
# Сохранить текущие правила
sudo netfilter-persistent save
# Или вручную:
sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6
sudo iptables-restore < /etc/iptables/rules.v4
sudo systemctl enable netfilter-persistent
sudo systemctl status netfilter-persistent
# Список правил с нумерацией (полезно для удаления)
sudo iptables -L INPUT --line-numbers -v -n
# Удалить правило по номеру (например, правило 3 из INPUT)
sudo iptables -D INPUT 3
# Вставить правило на конкретную позицию (например, позицию 1)
sudo iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
# Очистить все правила (ВНИМАНИЕ — можете заблокировать себя!)
sudo iptables -F
# Сначала сбросьте политики на ACCEPT перед очисткой
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
Готовый скрипт, который можно запустить на новом сервере:
#!/bin/bash
# firewall-setup.sh — Скрипт iptables CLIQHOST
# Сброс
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Политики по умолчанию
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Loopback
iptables -A INPUT -i lo -j ACCEPT
# Установленные соединения
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Невалидные пакеты
iptables -A INPUT -m state --state INVALID -j DROP
# SSH с ограничением частоты
iptables -A INPUT -p tcp --dport 22 -m state --state NEW \
-m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW \
-m recent --update --seconds 60 --hitcount 5 --name SSH -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Веб
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# ICMP
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Анти-спуфинг
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
# Логирование
iptables -A INPUT -m limit --limit 5/min -j LOG \
--log-prefix "[IPTABLES DROP] " --log-level 4
echo "Брандмауэр успешно настроен!"
Сохраните и выполните скрипт:
chmod +x firewall-setup.sh
sudo ./firewall-setup.sh
sudo netfilter-persistent save
После применения правил проверьте снаружи:
# Проверьте SSH-подключение
ssh -v user@SERVER_IP
# Проверьте открытые порты с помощью nmap (с другой машины)
nmap -sS -p 22,80,443 SERVER_IP
# Проверьте активные правила
sudo iptables -L -v -n
Если вы используете услуги управления сервером, можно запросить внешнюю проверку безопасности у специалистов.
| Критерий | iptables | UFW | firewalld |
|---|---|---|---|
| Сложность | Высокая | Низкая | Средняя |
| Гибкость | Максимальная | Ограниченная | Средняя |
| Ubuntu/Debian | ✅ | ✅ | Опционально |
| CentOS/RHEL | ✅ | Опционально | ✅ |
| Скрипты автоматизации | ✅ | Частично | ✅ |
Для сложных продакшен-серверов (например, выделенного сервера Intel с несколькими сервисами) iptables обеспечивает наибольший контроль. UFW лучше подходит для простых VPS.
iptables-persistent и выполните netfilter-persistent save.ip addr и используйте корректное имя (ens3, eth0 и т.д.).-I (вставка) вместо -A (добавление) для приоритетных правил.iptables — незаменимый инструмент для любого серьёзного администратора Linux-сервера. Несмотря на более высокий порог вхождения по сравнению с UFW, он обеспечивает полный контроль, необходимый для защиты VPS Linux или выделенного сервера от современных угроз.
Работайте с iptables методично: устанавливайте политики, явно разрешайте нужные сервисы, блокируйте известные атаки и сканирования, сохраняйте правила для постоянства.
Если вы хотите сосредоточиться на бизнесе и доверить безопасность сервера профессионалам, команда CLIQHOST предлагает комплексные услуги администрирования серверов — от настройки брандмауэра до непрерывного мониторинга. Свяжитесь с нами для бесплатной консультации.
Real reviews from customers who trust CLIQHOST for performance, reliability and expert technical support.
"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."
"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."
"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."