Практическое руководство по IPTABLES: правила, примеры и лучшие практики безопасности
Это перевод оригинальной статьи Linux IPTABLES Firewall Practical Guide: Rules, Examples & Security Best Practices (Linux Firewall).
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Брандмауэр на уровне ядра с объяснением правил, кейсов и шпаргалкой для админов
📖 Что такое IPTables?
IPTables — это брандмауэр на уровне ядра в Linux, построенный на фреймворке Netfilter. Он фильтрует, модифицирует, разрешает или блокирует сетевой трафик на уровне ОС, что делает его одним из самых мощных и гибких инструментов для защиты Linux.
⚠️ Примечание: IPTables — это программный брандмауэр, а не аппаратный (хотя он выполняет аналогичные функции безопасности).
🎯 Какую проблему решает IPTables?
- Любой хост может получить доступ к вашему серверу.
- Сервисы открыты в интернет
- Системы уязвимы к brute-force и DoS-атакам.
- Отсутствует контроль над входящим/исходящим трафиком.
- Блокировать неавторизованный доступ
- Контролировать порты входящего и исходящего трафика
- Предотвращать подмену IP-адреса
- Защищать от DoS-атак
- Обеспечивать безопасность Linux-серверов (физических, виртуальных, облачных)
🧠 Основные понятия (важно для администраторов и DevOps)
Основы работы с IPTables
- iptables → Команда / утилита / инструмент
- Rules → Хранятся в оперативной памяти (временно, если не сохранены).
- Chains → INPUT, OUTPUT, FORWARD
- Tables → filter, nat, mangle, raw
- Targets → ACCEPT, DROP, REJECT, LOG, DNAT, SNAT
📦 Проверка установки и состояния IPTables
rpm -qa | grep -i iptables /etc/init.d/iptables status which iptables
🧩 IPTables работает на 3-4 уровнях модели OSI
🔗 Таблицы IPTables
1️⃣ filter (по умолчанию)
2️⃣ nat
3️⃣ mangle
4️⃣ raw
🔁 Общие действия
🧪 Базовые команды IPTables
Просмотр правил
iptables -L iptables -L -n -v iptables -n -L -v --line-numbers
Очистка правил (временно):
iptables -F iptables -X
Сохранение правил (постоянно)
service iptables save
🚫 Блокировка всего трафика (аварийная ситуация)
iptables -A INPUT -s 0.0.0.0/0 -j REJECT
⚠️ Временно (только в оперативной памяти) — сохраните, чтобы изменения сохранились.
🔐 Блокировка конкретного IP
iptables -A INPUT -s 192.168.1.94 -j DROP
🌐 Блокировка подсети
iptables -A INPUT -s 192.168.8.0/24 -j DROP
🚪 Блокировка порта
iptables -A INPUT -p tcp --dport 80 -j DROP
🎯 Блокировка порта для конкретного IP-адреса
iptables -A INPUT -s 192.168.1.10 -p tcp --dport 80 -j DROP
🔄 Разрешение SSH (безопасное правило)
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
🛑 Политика по умолчанию Drop (рекомендации для продакшена)
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT
📡 Контроль ICMP (Ping)
Блокировка Ping
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
Разрешение Ping из внутренней сети
iptables -A INPUT -s 192.168.1.0/24 -p icmp -j ACCEPT
🧯 Предотвращение подмены IP
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
📝 Логирование и блокировка пакетов
iptables -A INPUT -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF: " iptables -A INPUT -s 10.0.0.0/8 -j DROP
/var/log/messages
⏱️ Ограничение скорости (защита от DoS-атак)
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
🔁 Диапазон разрешенных портов
iptables -A INPUT -p tcp --dport 7000:7010 -j ACCEPT
🔀 Порт-форвардинг (DNAT)
iptables -t nat -A PREROUTING -p tcp --dport 422 -j DNAT --to 192.168.1.10:22
🧠 Реальные сценарии использования (Admin & DevOps)
📌 Рекомендации по использованию IPTables
✔ Всегда разрешайте SSH перед DROP
✔ Сохраняйте правила после тестирования
✔ Используйте stateful правила
✔ Ведите логирование перед DROP
✔ Документируйте правила
✔ Предпочитайте nftables на новых дистрибутивах
⚠️ Важное примечание (для современных версий Linux)
- IPTables устарел на новых системах.
- nftables — это будущее
- IPTables всё ещё широко используется в RHEL 6/7, в legacy-системах и на интервью
IPTables — это мощный, низкоуровневый фаервол, который должен глубоко понимать каждый:
- Надёжные основы безопасности
- Уверенность при инцидентах в продакшене
- Более глубокое понимание понимание облачных фаерволов
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.