Инструменты пользователя

Инструменты сайта


flip:linux:ipatables

Это старая версия документа!


FIXME

IPTABLES

Утилита командной строки для настройки встроенного в ядро Linux межсетевого экрана, разработанного в рамках проекта Netfilter.

IPTABLES справочник и заметки, изображение №1 Таблицы ipatables raw - предназначена для обработки пакетов прежде, чем они будут переданы системе conntrack, которая занимается отслеживанием состояния соединений и принадлежностью пакетов этим соединениям. Содержит встроенные цепочки PREROUTING и OUTPUT. mangle - используется для модификации некоторых заголовков (TTL, TOS) и маркировке пакетов и соединений, содержит цепочки PREROUTING, INPUT, FORWARD, OUTPUT и POSTROUTING. nat - предназначен для преобразования адресов и портов источника и назначения пакетов, встроенные цепочки: PREROUTING, OUTPUT, POSTROUTING. filter - применяется, собственно, для фильтрации пакетов, является таблицей по умолчанию, т.е. если таблица не указана явно, то используется filter, имеет цепочки INPUT, FORWARD и OUTPUT. security - используется для работы совместно с системами принудительного контроля доступа, такими как SELinux. Встроенные цепочки INPUT, FORWARD, OUTPUT.

Внутренние цепочки PREROUTING - используется для всего входящего трафика до принятия первого решения о маршрутизации INPUT - применяется для входящего трафика текущего узла FORWARD - через нее проходит транзитный трафик узла OUTPUT - применятся для исходящего трафика текущего узла POSTROUTING - используется для всего исходящего трафика после принятия всех решений о маршрутизации

Действия ACCEPT - разрешить прохождение пакета дальше по цепочке правил; DROP - удалить пакет; REJECT - отклонить пакет, отправителю будет отправлено сообщение, что пакет был отклонен; LOG - сделать запись о пакете в лог файл; QUEUE - отправить пакет пользовательскому приложению.

Основные действия -A - добавить правило в цепочку; -С - проверить все правила; -D - удалить правило; -I - вставить правило с нужным номером; -L - вывести все правила в текущей цепочке; -S - вывести все правила; -F - очистить все правила; -N - создать цепочку; -X - удалить цепочку; -P - установить действие по умолчанию.

Дополнительные опции правил -p - указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh; -s - указать ip адрес устройства-отправителя пакета; -d - указать ip адрес получателя; -i - входной сетевой интерфейс; -o - исходящий сетевой интерфейс; -j - выбрать действие, если правило подошло.

Статусы соединений NEW — установка нового соединения, первый пакет, который мы видим. RELATED — соединение, связанное с другим, имеющим статус ESTABLISHED. ESTABLISHED — установленное сетевое соединение. INVALID — пакет не может быть идентифицирован как принадлежащий какому-то соединению. UNTRACKED — пакеты, для которых ранее была применена цель NOTRACK. Мы пока применяли только цель ACCEPT, позже мы познакомимся и с другими. Для таких пакетов, например, не отслеживаются сопутствующие ICMP-пакеты.

Примечание Команда iptables имеет такой общий вид:

# iptables -t таблица действие цепочка дополнительные_параметры Команды и примеры Установка iptables # apt-get install iptables Список правил # iptables -L Подробный список

# iptables -nvL Сброс всех правил # iptables -F # iptables -X # iptables -t nat -F # iptables -t nat -X # iptables -t mangle -F # iptables -t mangle -X # iptables -t raw -F # iptables -t raw -X # iptables -t security -F # iptables -t security -X # iptables -P INPUT ACCEPT # iptables -P FORWARD ACCEPT # iptables -P OUTPUT ACCEPT Cохранить все правила iptables # /sbin/iptables-save Добавляем автоматическую загрузку правил iptables Устанавливаем:

# apt-get install netfilter-persistent iptables-persistent Правила хранятся в следующих файлах и применяются при загрузке операционной системы. Для IPv4 используется файл: /etc/iptables/rules.v4 Для IPv6 используется файл: /etc/iptables/rules.v6

Варианты использования: service netfilter-persistent {start|restart|reload|force-reload|save|flush}

service netfilter-persistent {flush, force-reload, reload, restart, save, start} flush - очистить правила reload - загрузить из файлов save - сохранить в файлы

Шлюз Редактируем файл /etc/sysctl.conf

# nano /etc/sysctl.conf Нужно раскомментировать строку

net.ipv4.ip_forward=1 Применить настройки без перезагрузки (или перезагрузить)

# sysctl -p

Настраиваем iptables: eth0 — Интерфейс который смотрит в интернет eth1 — Локальная сеть

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT Конфигурация будет работать до перезагрузки, не забудь сохранить

Заблокировать IP-адрес в iptables # iptables -A INPUT -s 192.168.100.1 -j DROP Разрешить IP-адрес в iptables # iptables -A INPUT -s 192.168.100.1 -j ACCEPT Открыть порт в iptables # iptables -A INPUT -p tcp -m multiport –dports 22,80,443 -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 # iptables -A INPUT -p tcp –dport 21 -j DROP Запретить ICMP ping трафик # iptables -A INPUT -p icmp –icmp-type 8 -j DROP Переадресация порта — redirect Например с 8080 на 80

# iptables -A INPUT -p tcp –dport 8080 -j ACCEPT # iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-ports 8080 Разрешить соединения по SSH # iptables -t filter -A INPUT -p tcp -m tcp –dport 22 -j ACCEPT Пример фильтров для FTP Очень простой пример — работа с FTP-сервером. Мы подключаемся к порту 21/tcp, в момент подключения соединение получается статус NEW, а затем ESTABLISHED. Управляющие команды идут через порт 21/tcp, но при работе для передачи файлов необходимо открыть еще и 20/tcp. И соединение на порт 20/tcp получает статус RELATED. Таким образом, доступ к порту 20/tcp можно закрывать до тех пор, пока соединение на него не придет со статусом RELATED, либо само соединение не получит статус ESTABLISHED. Получается, что для корректной фильтрации портов 21/tcp и 20/tcp мы можем сделать следующее:

# iptables -t filter -A INPUT -p tcp -m tcp –dport 20 -m state –state RELATED,ESTABLISHED -j ACCEPT # iptables -t filter -A INPUT -p tcp -m tcp –dport 21 -m state –state NEW,ESTABLISHED -j ACCEPT В этом случае без установки подключения на порт 21 мы не получим доступ к порту 20.

Маскарадинг (или маскирование) Правило для адресной трансляции:

# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d ! 192.168.0.0/24 -j MASQUERADE Это правило после обработки пакетов осуществит маскирование, если пакеты из внутренней сети направлены куда-то в другую подсеть. Если нам нужно маскировать пакеты для конкретной подсети, к примеру, из одной локальной подсети (192.168.2.0/24) в другую (192.168.0.0/24), то мы можем создать следующее правило:

# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.0/24 -j MASQUERADE Источники https://ru.wikibooks.org/wiki/Iptables

https://losst.ru/nastrojka-iptables-dlya-chajnikov

https://wiki.archlinux.org/title/Iptables_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

https://interface31.ru/tech_it/2020/02/osnovy-iptables-dlya-nachinayushhih-chast-1.html

https://blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck

https://selectel.ru/blog/setup-iptables-linux/

flip/linux/ipatables.1733176275.txt.gz · Последнее изменение: 2024/12/02 21:51 — flip

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki