
Содержание
1. Введение: Зачем нужны правила iptables2. Базовые команды 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
Важные предупреждения
- Тестируйте правила перед применением на продакшене
- Имейте консольный доступ для восстановления при ошибках
- Регулярно обновляйте правила согласно новым угрозам
- Документируйте изменения для команды поддержки
- Следите за производительностью при большом количестве правил
---
**⚠️ Дисклеймер:** Статья носит информационно-образовательный характер и не содержит инструкций для совершения противоправных действий.