Изображение


Содержание

1. Введение: Зачем нужны правила iptables
2. Базовые команды iptables
3. Работа с таблицами и цепочками
4. Фильтрация по IP адресам
5. Фильтрация по портам
6. Работа с протоколами
7. Состояния соединений
8. NAT и перенаправление портов
9. Защита от атак
10. Логирование трафика
11. Сохранение и восстановление правил
12. Скрипты автоматизации
13. Практические примеры конфигураций
14. Часто задаваемые вопросы
15. Заключение




Введение: Зачем нужны правила iptables


Что такое iptables


Iptables - это утилита командной строки для настройки правил фаервола в Linux. Она позволяет контролировать входящий, исходящий и транзитный сетевой трафик через анализ пакетов и применение к ним заданных правил.

Зачем настраивать firewall


Безопасность:
- Защита от несанкционированного доступа
- Блокировка вредоносного трафика
- Контроль сетевых соединений

Производительность:
- Снижение нагрузки на сервисы
- Оптимизация сетевого трафика
- Предотвращение DDoS атак

Соответствие требованиям:
- Реализация политик безопасности
- Аудит сетевой активности
- Соответствие стандартам (PCI DSS, SOX, GDPR)

Статистика использования 2026


- 67% Linux серверов используют iptables/netfilter
- 89% администраторов настраивают firewall вручную
- 45% инцидентов безопасности связаны с неправильной конфигурацией firewall
- 78% компаний требуют документирования правил firewall

Архитектура iptables


Iptables работает с тремя основными таблицами:
- Filter - фильтрация пакетов (INPUT, OUTPUT, FORWARD)
- NAT - трансляция сетевых адресов (PREROUTING, POSTROUTING, OUTPUT)
- Mangle - модификация пакетов (все цепочки)

Принципы работы


1. Последовательная обработка - правила проверяются по порядку
2. Первое совпадение - при нахождении совпадения дальнейшая проверка прекращается
3. Политика по умолчанию - действие для пакетов, не подошедших ни под одно правило

Риски неправильной настройки


- Полная блокировка трафика при ошибке в правилах
- Уязвимости из-за слишком permissive правил
- Производительность при большом количестве правил
- Сложность поддержки при отсутствии документации



Базовые команды iptables


Просмотр текущих правил


1. Показать все правила
bash
iptables -L -v


2. Показать правила с номерами строк
bash
iptables -L --line-numbers


3. Показать правила конкретной цепочки
bash
iptables -L INPUT -v


4. Показать в числовом формате
bash
iptables -L -n


Добавление и удаление правил


5. Добавить правило в конец цепочки
bash
iptables -A INPUT -p tcp --dport 22 -j ACCEPT


6. Вставить правило на конкретную позицию
bash
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT


7. Удалить правило по номеру
bash
iptables -D INPUT 5


8. Удалить правило по спецификации
bash
iptables -D INPUT -p tcp --dport 22 -j ACCEPT


Очистка и сброс


9. Очистить все правила
bash
iptables -F


10. Очистить конкретную цепочку
bash
iptables -F INPUT


11. Сброс счетчиков
bash
iptables -Z


12. Удалить пользовательские цепочки
bash
iptables -X


Политики по умолчанию


13. Установить политику ACCEPT
bash
iptables -P INPUT ACCEPT


14. Установить политику DROP
bash
iptables -P FORWARD DROP


15. Установить политику REJECT
bash
iptables -P OUTPUT REJECT




Работа с таблицами и цепочками


Работа с таблицами


16. Указать таблицу filter
bash
iptables -t filter -L


17. Указать таблицу nat
bash
iptables -t nat -L


18. Указать таблицу mangle
bash
iptables -t mangle -L


Создание цепочек


19. Создать новую цепочку
bash
iptables -N MYCHAIN


20. Удалить цепочку
bash
iptables -X MYCHAIN


21. Переименовать цепочку
bash
iptables -E MYCHAIN NEWCHAIN


Переходы между цепочками


22. Перейти в пользовательскую цепочку
bash
iptables -A INPUT -p tcp --dport 80 -j MYCHAIN


23. Вернуться из цепочки (RETURN)
bash
iptables -A MYCHAIN -j RETURN


24. Безусловный возврат
bash
iptables -A MYCHAIN -j RETURN


Встроенные цепочки


25. Цепочка INPUT (входящий трафик)
bash
iptables -A INPUT -i eth0 -j ACCEPT


26. Цепочка OUTPUT (исходящий трафик)
bash
iptables -A OUTPUT -o eth0 -j ACCEPT


27. Цепочка FORWARD (транзитный трафик)
bash
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT


28. Цепочка PREROUTING (NAT)
bash
iptables -t nat -A PREROUTING -j DNAT


29. Цепочка POSTROUTING (NAT)
bash
iptables -t nat -A POSTROUTING -j MASQUERADE


30. Цепочка OUTPUT (NAT)
bash
iptables -t nat -A OUTPUT -j DNAT




Фильтрация по IP адресам


Одиночные IP адреса


31. Разрешить конкретный IP
bash
iptables -A INPUT -s 192.168.1.100 -j ACCEPT


32. Заблокировать конкретный IP
bash
iptables -A INPUT -s 192.168.1.100 -j DROP


33. Разрешить для исходящего трафика
bash
iptables -A OUTPUT -d 192.168.1.100 -j ACCEPT


34. Блокировка для всех интерфейсов
bash
iptables -A INPUT -s 10.0.0.5 -j REJECT


Диапазоны IP адресов


35. CIDR нотация - подсеть
bash
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT


36. Диапазон с маской
bash
iptables -A INPUT -s 10.0.0.0/255.255.255.0 -j ACCEPT


37. Большая подсеть
bash
iptables -A INPUT -s 172.16.0.0/16 -j DROP


38. Ограниченный диапазон
bash
iptables -A INPUT -m iprange --src-range 192.168.1.10-192.168.1.20 -j ACCEPT


Исключения из диапазонов


39. Все кроме одного IP
bash
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -s 192.168.1.100 -j DROP


40. Белый список с исключением
bash
iptables -A INPUT -s ! 192.168.1.100 -j ACCEPT


41. Черный список для подсети
bash
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 10.1.1.1 -j ACCEPT


42. Инвертированная логика
bash
iptables -A INPUT ! -s 192.168.1.0/24 -j DROP


MAC адреса


43. Фильтрация по MAC
bash
iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT


44. Блокировка по MAC
bash
iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j DROP


45. Комбинация IP и MAC
bash
iptables -A INPUT -s 192.168.1.100 -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT




Фильтрация по портам


Одиночные порты


46. Разрешить SSH (порт 22)
bash
iptables -A INPUT -p tcp --dport 22 -j ACCEPT


47. Разрешить HTTP (порт 80)
bash
iptables -A INPUT -p tcp --dport 80 -j ACCEPT


48. Разрешить HTTPS (порт 443)
bash
iptables -A INPUT -p tcp --dport 443 -j ACCEPT


49. Разрешить FTP (порт 21)
bash
iptables -A INPUT -p tcp --dport 21 -j ACCEPT


50. Разрешить SMTP (порт 25)
bash
iptables -A INPUT -p tcp --dport 25 -j ACCEPT


51. Разрешить DNS (порт 53)
bash
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT


Диапазоны портов


52. Диапазон портов
bash
iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT


53. Высокие порты
bash
iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT


54. Привилегированные порты
bash
iptables -A INPUT -p tcp --dport 1:1023 -j DROP


55. Исключение из диапазона
bash
iptables -A INPUT -p tcp --dport 80:443 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP


Исходящий трафик


56. Разрешить исходящий HTTP
bash
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT


57. Разрешить исходящий HTTPS
bash
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT


58. Разрешить исходящий DNS
bash
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT


59. Блокировать исходящий трафик
bash
iptables -A OUTPUT -p tcp --dport 25 -j DROP


Множественные порты


60. Несколько портов через multiport
bash
iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT


61. Диапазоны через multiport
bash
iptables -A INPUT -p tcp -m multiport --dports 22,80:90,443 -j ACCEPT


62. Исключение портов
bash
iptables -A INPUT -p tcp -m multiport ! --dports 22,80,443 -j DROP




Работа с протоколами


TCP протокол


63. Все TCP соединения
bash
iptables -A INPUT -p tcp -j ACCEPT


64. TCP SYN пакеты
bash
iptables -A INPUT -p tcp --syn -j ACCEPT


65. TCP флаги
bash
iptables -A INPUT -p tcp --tcp-flags ALL SYN -j DROP


66. TCP соединения в состоянии
bash
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT


UDP протокол


67. Все UDP пакеты
bash
iptables -A INPUT -p udp -j ACCEPT


68. UDP на конкретный порт
bash
iptables -A INPUT -p udp --dport 53 -j ACCEPT


69. UDP диапазон
bash
iptables -A INPUT -p udp --dport 1000:2000 -j DROP


ICMP протокол


70. Разрешить ping
bash
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT


71. Разрешить pong
bash
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT


72. Блокировать ping
bash
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP


73. ICMP типы
bash
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT


Другие протоколы


74. GRE протокол
bash
iptables -A INPUT -p gre -j ACCEPT


75. ESP (IPsec)
bash
iptables -A INPUT -p esp -j ACCEPT


76. AH (IPsec)
bash
iptables -A INPUT -p ah -j ACCEPT


77. IGMP
bash
iptables -A INPUT -p igmp -j ACCEPT




Состояния соединений


Модуль state


78. Новое соединение
bash
iptables -A INPUT -m state --state NEW -j ACCEPT


79. Установленное соединение
bash
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT


80. Связанное соединение
bash
iptables -A INPUT -m state --state RELATED -j ACCEPT


81. Неверное состояние
bash
iptables -A INPUT -m state --state INVALID -j DROP


Комбинации состояний


82. Установленные и связанные
bash
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


83. Новые для определенных портов
bash
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT


84. Блокировка новых соединений
bash
iptables -A INPUT -m state --state NEW -j DROP


Модуль conntrack


85. Отслеживание соединений
bash
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT


86. Новый трафик
bash
iptables -A INPUT -m conntrack --ctstate NEW -j ACCEPT


87. Связанный трафик
bash
iptables -A INPUT -m conntrack --ctstate RELATED -j ACCEPT




NAT и перенаправление портов


Source NAT (SNAT)


88. Маскарадинг для выхода в интернет
bash
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


89. SNAT с фиксированным IP
bash
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.100


90. SNAT для подсети
bash
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE


Destination NAT (DNAT)


91. Перенаправление порта
bash
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080


92. Перенаправление на другой сервер
bash
iptables -t nat -A PREROUTING -d 1.2.3.4 -j DNAT --to-destination 192.168.1.100


93. Проброс диапазона портов
bash
iptables -t nat -A PREROUTING -p tcp --dport 8000:9000 -j DNAT --to-destination 192.168.1.100


Port Forwarding


94. SSH на внутренний сервер
bash
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.100:22
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 22 -j ACCEPT


95. Web сервер за NAT
bash
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.1.100:443


96. FTP проброс
bash
iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to-destination 192.168.1.100:21
iptables -t nat -A PREROUTING -p tcp --dport 20 -j DNAT --to-destination 192.168.1.100:20


REDIRECT


97. Прозрачный прокси
bash
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128


98. Локальный редирект
bash
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080




Защита от атак


Защита от SYN flood


99. Ограничение SYN пакетов
bash
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP


100. SYN cookies
bash
echo 1 > /proc/sys/net/ipv4/tcp_syncookies


101. Блокировка SYN flood
bash
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP


Защита от port scanning


102. Блокировка сканеров
bash
iptables -A INPUT -m recent --name portscan --rcheck --seconds 86400 -j DROP
iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP


103. Обнаружение сканирования
bash
iptables -A INPUT -p tcp --tcp-flags ALL NONE -m recent --name portscan --set -j LOG --log-prefix "Portscan:"


Защита от DDoS


104. Ограничение соединений
bash
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT


105. Блокировка по количеству пакетов
bash
iptables -A INPUT -m limit --limit 10/s -j ACCEPT
iptables -A INPUT -j DROP


106. Защита от UDP flood
bash
iptables -A INPUT -p udp -m limit --limit 10/s -j ACCEPT
iptables -A INPUT -p udp -j DROP


Защита от спуфинга


107. Блокировка спуфинга
bash
iptables -A INPUT -s 127.0.0.0/8 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP


108. Проверка source address
bash
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter


Защита от brute force


109. Защита SSH
bash
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 3 --rttl --name SSH -j DROP


110. Защита FTP
bash
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -m recent --set --name FTP
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --rttl --name FTP -j DROP




Логирование трафика


Базовое логирование


111. Логировать все DROP правила
bash
iptables -A INPUT -j LOG --log-prefix "INPUT DROP: "
iptables -A INPUT -j DROP


112. Логировать по уровню
bash
iptables -A INPUT -j LOG --log-level 4 --log-prefix "FIREWALL: "


113. Логировать с ограничением
bash
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "LIMITED: "


Продвинутое логирование


114. Логировать TCP пакеты
bash
iptables -A INPUT -p tcp -j LOG --log-tcp-sequence --log-tcp-options --log-prefix "TCP: "


115. Логировать с MAC адресом
bash
iptables -A INPUT -j LOG --log-macdecode --log-prefix "MAC: "


116. Логировать в отдельный файл
bash
iptables -A INPUT -j LOG --log-prefix "FIREWALL: "
# Настройка rsyslog для отдельного файла


Условное логирование


117. Логировать только определенные IP
bash
iptables -A INPUT -s 192.168.1.100 -j LOG --log-prefix "SUSPICIOUS: "


118. Логировать по портам
bash
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH: "




Сохранение и восстановление правил


Сохранение правил


119. Сохранить в файл
bash
iptables-save > /etc/iptables/rules.v4


120. Сохранить с бэкапом
bash
iptables-save > iptables-backup-$(date +%Y%m%d-%H%M%S).txt


Восстановление правил


121. Загрузить из файла
bash
iptables-restore < /etc/iptables/rules.v4


122. Восстановить с проверкой
bash
iptables-restore -t < /etc/iptables/rules.v4


Автоматическая загрузка


123. Systemd сервис
bash
systemctl enable iptables
systemctl start iptables


124. Init скрипт
bash
# Сохранить правила
iptables-save > /etc/iptables/rules.v4




Скрипты автоматизации


Базовый скрипт firewall


125. Простой firewall скрипт
bash
#!/bin/bash
# Очистка правил
iptables -F
iptables -X
iptables -Z

# Политика по умолчанию
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Разрешить loopback
iptables -A INPUT -i lo -j ACCEPT

# Разрешить SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Сохранить правила
iptables-save > /etc/iptables/rules.v4


126. Расширенный скрипт
bash
#!/bin/bash
# Firewall для веб-сервера

# Очистка
iptables -F
iptables -X

# Базовая защита
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
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

# Защита от атак
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Логирование
iptables -A INPUT -j LOG --log-prefix "FIREWALL: "
iptables -A INPUT -j DROP


Управление скриптами


127. Запуск скрипта
bash
chmod +x firewall.sh
./firewall.sh


128. Тестирование скрипта
bash
bash -n firewall.sh




Практические примеры конфигураций


Домашний роутер


129. Базовая настройка роутера
bash
# Очистка
iptables -F
iptables -t nat -F
iptables -t mangle -F

# Включить forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Разрешить LAN
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT


130. Роутер с DMZ
bash
# DMZ зона
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.3.100
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 192.168.3.100

# Защита DMZ
iptables -A FORWARD -i eth0 -o eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT


Веб-сервер


131. Защита Apache/Nginx
bash
# Разрешить HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Защита от DDoS
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

# Блокировка подозрительных User-Agent
iptables -A INPUT -p tcp --dport 80 -m string --string "badbot" --algo bm -j DROP


132. WordPress защита
bash
# Защита wp-admin
iptables -A INPUT -p tcp --dport 80 -m string --string "wp-admin" --algo bm -j DROP
iptables -A INPUT -p tcp --dport 443 -m string --string "wp-admin" --algo bm -j DROP

# Разрешить только для определенных IP
iptables -A INPUT -p tcp --dport 80 -s 192.168.1.100 -m string --string "wp-admin" --algo bm -j ACCEPT


FTP сервер


133. Vsftpd защита
bash
# Разрешить FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT

# Пассивный режим
iptables -A INPUT -p tcp --dport 50000:51000 -j ACCEPT

# Защита от brute force
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -m recent --set --name FTP
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --rttl --name FTP -j DROP


VPN сервер


134. OpenVPN защита
bash
# Разрешить OpenVPN
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT

# NAT для VPN клиентов
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

# Разрешить трафик от VPN
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT




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


Общие вопросы


Как начать работать с iptables?
Начните с просмотра текущих правил командой `iptables -L -v`. Изучите базовые команды добавления и удаления правил. Создавайте правила постепенно, тестируя каждое изменение.

Какая политика по умолчанию лучше?
Для максимальной безопасности используйте DROP для INPUT и FORWARD цепочек. Для удобства разработки - ACCEPT. Главное - явно разрешать нужный трафик.

Как проверить, работают ли правила?
Используйте команды `iptables -L -v` для просмотра счетчиков пакетов. Тестируйте подключения с другого компьютера. Используйте `telnet IP PORT` для проверки доступности портов.

Что делать при ошибке в правилах?
Если потеряли доступ к серверу, используйте консоль восстановления или физический доступ. Всегда имейте бэкап рабочих правил командой `iptables-save > backup.txt`.

Технические вопросы


Чем отличается iptables от firewalld?
Iptables - низкоуровневый инструмент для непосредственной работы с netfilter. Firewalld - высокоуровневый интерфейс, который использует iptables под капотом и предоставляет зоны и сервисы.

Как оптимизировать производительность?
Используйте минимальное количество правил. Размещайте часто срабатывающие правила в начале цепочек. Избегайте сложных модулей (string, regex) для высоконагруженного трафика.

Можно ли использовать iptables в Docker?
Да, но в Docker контейнерах iptables работает ограниченно. Лучше настраивать firewall на хост-системе. Для контейнеров используйте `--icc=false` и настраивайте правила для docker0 интерфейса.

Как логировать трафик в отдельный файл?
Настройте rsyslog: добавьте в `/etc/rsyslog.conf` строку `:msg,contains,"FIREWALL:" /var/log/firewall.log` и перезапустите сервис.

Практические советы


Как создать whitelist для SSH?
Создайте цепочку для разрешенных IP: `iptables -N SSH_ALLOW`, добавьте IP: `iptables -A SSH_ALLOW -s 192.168.1.100 -j ACCEPT`, затем: `iptables -A INPUT -p tcp --dport 22 -j SSH_ALLOW`.

Как заблокировать страну по IP?
Скачайте списки IP адресов стран (RIPE, APNIC) и создайте цепочки с DROP правилами. Используйте ipset для эффективной работы с большими списками.

Как настроить port knocking?
Используйте модуль recent для создания последовательности подключений к "секретным" портам, которые открывают доступ к реальному порту.

Как мониторить iptables?
Используйте `iptables -L -v -n` для просмотра счетчиков, `journalctl -f` для логов, или инструменты вроде fwlogwatch для анализа.

Как автоматизировать применение правил?
Создайте systemd сервис или cron job, который применяет правила из файла при загрузке системы. Используйте ansible или puppet для управления правилами на множестве серверов.



Заключение


Резюме правил iptables


В этой шпаргалке мы рассмотрели 134 конфигурации iptables, включая:

- Базовые команды: просмотр, добавление, удаление правил (14 техник)
- Таблицы и цепочки: работа с filter, nat, mangle (16 техник)
- IP фильтрация: одиночные адреса, диапазоны, MAC (15 техник)
- Порты: одиночные, диапазоны, множественные (17 техник)
- Протоколы: TCP, UDP, ICMP, другие (14 техник)
- Состояния: conntrack модуль, комбинации (9 техник)
- NAT: SNAT, DNAT, port forwarding (9 техник)
- Защита: SYN flood, DDoS, brute force (12 техник)
- Логирование: базовое и продвинутое (6 техник)
- Сохранение: iptables-save/restore (4 техники)
- Скрипты: автоматизация настройки (4 техники)
- Примеры: роутер, веб-сервер, FTP, VPN (6 техник)

Эффективность iptables


При правильном применении iptables обеспечивает:
- 100% контроль над сетевым трафиком
- Гибкую настройку для любых сценариев
- Высокую производительность при оптимизации
- Надежную защиту от сетевых угроз
- Детальное логирование для аудита

Лучшие практики применения


1. Начинайте с простого - базовые правила, затем усложнение
2. Тестируйте изменения - проверяйте доступность сервисов
3. Документируйте правила - комментарии и описания
4. Создавайте бэкапы - возможность быстрого восстановления
5. Мониторьте логи - анализ попыток взлома и аномалий

Развитие firewall технологий


Iptables постепенно заменяется nftables, но остается стандартом:
- Nftables - новый фреймворк с улучшенным синтаксисом
- Firewalld - динамический firewall для рабочих станций
- UFW - упрощенный интерфейс для Ubuntu
- Cloud firewalls - встроенные решения AWS, Azure, GCP

Важные предупреждения


- Тестируйте правила перед применением на продакшене
- Имейте консольный доступ для восстановления при ошибках
- Регулярно обновляйте правила согласно новым угрозам
- Документируйте изменения для команды поддержки
- Следите за производительностью при большом количестве правил

---

**⚠️ Дисклеймер:** Статья носит информационно-образовательный характер и не содержит инструкций для совершения противоправных действий.