Шпаргалка для тех кто не часто настраивает Iptables

 

Итоговая памятка по iptables на Ubuntu для VPN

1. Введение

iptables — инструмент для фильтрации и маршрутизации пакетов в Linux. Используется для:

  • Безопасного открытия портов для VPN
  • Пропуска VPN-трафика и форвардинга
  • Предотвращения утечек IP и DNS
  • Настройки NAT для выхода клиентов в интернет

2. Основы iptables

2.1 Цепочки и таблицы

Тип Цепочка Назначение
Фильтрация INPUT Входящие пакеты
Фильтрация OUTPUT Исходящие пакеты
Фильтрация FORWARD Пересылаемые пакеты
NAT PREROUTING Изменение пакетов до маршрутизации
NAT POSTROUTING Маскарадинг исходящих пакетов

Таблицы: filter (по умолчанию), nat, mangle, raw, security.

2.2 Основные операторы

Оператор Описание
-A <цепочка> Добавить правило в конец
-I <цепочка> [номер] Вставить правило в строку, остальные правила сместятся
-R <цепочка> <номер> Заменить правило в конкретной строке
-D <цепочка> [номер/условия] Удалить правило по номеру строки или точному совпадению
-F <цепочка> Очистить цепочку
-X <цепочка> Удалить пользовательскую цепочку
-L [опции] Просмотр правил
-t <table> Указать таблицу (nat, mangle)

2.3 Фильтры и цели

Параметр Назначение
-p tcp|udp|icmp Протокол
–dport <port> Порт назначения
–sport <port> Порт источника
-s <IP/подсеть> IP источника
-d <IP/подсеть> IP назначения
-i <interface> Входящий интерфейс
-o <interface> Исходящий интерфейс
-m state –state <states> Состояние соединения (NEW, ESTABLISHED, RELATED)
-j ACCEPT|DROP|REJECT|MASQUERADE|LOG Действие

3. Примеры использования операторов

Команда Действие
iptables -A INPUT -p tcp –dport 443 -j ACCEPT Добавить правило в конец INPUT
iptables -I INPUT 1 -p tcp –dport 22 -j ACCEPT Вставить правило в начало INPUT
iptables -R INPUT 3 -p tcp –dport 80 -j DROP Заменить 3-е правило
iptables -D INPUT 2 Удалить 2-е правило
iptables -F FORWARD Очистить цепочку FORWARD

4. Примеры ввода правил

4.1 Базовые правила для доступа сервера в Интернет

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT

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

4.2 Ппроброс SSH от уникального IP адреса

iptables -A INPUT -s 80.80.80.80 -p tcp --dport 22 -j ACCEPT

4.4 Настройка NAT / Маскарадинга для подсети VPN

sudo iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE

4.5 Настройка защиты от утечек DNS

# Разрешаем DNS только через VPN
sudo iptables -A OUTPUT -p udp --dport 53 -o tun0 -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -o wg0 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 53 -o tun0 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 53 -o wg0 -j ACCEPT

# Блокируем DNS через основной интерфейс
sudo iptables -A OUTPUT -p udp --dport 53 -o eth0 -j DROP
sudo iptables -A OUTPUT -p tcp --dport 53 -o eth0 -j DROP

4.6 Логирование

sudo iptables -A INPUT -j LOG --log-prefix "iptables-drop: " --log-level 4
sudo iptables -A FORWARD -j LOG --log-prefix "iptables-forward-drop: " --log-level 4

5. Управление, редактирование правил

5.1 Просмотр правил с номерами

Правила доступа
sudo iptables -L -v -n --line-numbers
NAT
sudo iptables -t nat -L -v -n

5.2 Удаление правил

По номеру, NAT: sudo iptables -t nat -D POSTROUTING 1
По номеру, правило доступа: sudo iptables -D INPUT 1
По точному совпадению: sudo iptables -D INPUT -p tcp --dport 443 -j ACCEPT
Очистка цепочки: sudo iptables -F INPUT, sudo iptables -F FORWARD
Удаление пользовательской цепочки: sudo iptables -X MYCHAIN

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

sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload

6. Рекомендации

  • Тестируйте правила через отдельную SSH-сессию
  • Используйте отдельные цепочки и подсети для разных VPN
  • Всегда указывайте правильные интерфейсы (tun0, wg0, eth0)
  • Используйте состояние соединения (ESTABLISHED,RELATED)
  • Логирование полезно на этапе отладки

Leave a Reply