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

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


flip:linux:ipatables

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
flip:linux:ipatables [2024/12/02 21:51] – создано flipflip:linux:ipatables [2024/12/02 22:44] (текущий) flip
Строка 1: Строка 1:
-FIXME 
- 
 ====== IPTABLES ====== ====== IPTABLES ======
- 
  
 Утилита командной строки для настройки встроенного в ядро Linux межсетевого экрана, разработанного в рамках проекта Netfilter. Утилита командной строки для настройки встроенного в ядро 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. 
  
-Внутренние цепочки +==== Таблицы ipatables ====
-PREROUTING - используется для всего входящего трафика до принятия первого решения о маршрутизации +
-INPUT - применяется для входящего трафика текущего узла +
-FORWARD - через нее проходит транзитный трафик узла +
-OUTPUT - применятся для исходящего трафика текущего узла +
-POSTROUTING - используется для всего исходящего трафика после принятия всех решений о маршрутизации+
  
-Действия +**raw** предназначена для обработки пакетов прежде, чем они будут переданы системе conntrack, которая занимается отслеживанием состояния соединений и принадлежностью пакетов этим соединениям. Содержит встроенные цепочки PREROUTING и OUTPUT. \\ 
-ACCEPT - разрешить прохождение пакета дальше по цепочке правил; +**mangle** - используется для модификации некоторых заголовков (TTL, TOS) и маркировке пакетов и соединений, содержит цепочки PREROUTING, INPUT, FORWARD, OUTPUT и POSTROUTING. \\ 
-DROP - удалить пакет+**nat** - предназначен для преобразования адресов и портов источника и назначения пакетов, встроенные цепочки: PREROUTING, OUTPUT, POSTROUTING. \\ 
-REJECT - отклонить пакетотправителю будет отправлено сообщение, что пакет был отклонен; +**filter** применяется, собственно, для фильтрации пакетов, является таблицей по умолчанию, т.е. если таблица не указана явно, то используется filter, имеет цепочки INPUT, FORWARD и OUTPUT. \\ 
-LOG - сделать запись о пакете в лог файл+**security** - используется для работы совместно с системами принудительного контроля доступа, такими как SELinux. Встроенные цепочки INPUT, FORWARD, OUTPUT.
-QUEUE - отправить пакет пользовательскому приложению.+
  
-Основные действия + 
--A - добавить правило в цепочку; +==== Внутренние цепочки ==== 
--С - проверить все правила; + 
--D - удалить правило; +**PREROUTING** - используется для всего входящего трафика до принятия первого решения о маршрутизации \\ 
--I - вставить правило с нужным номером; +**INPUT** - применяется для входящего трафика текущего узла \\ 
--L - вывести все правила в текущей цепочке; +**FORWARD** - через нее проходит транзитный трафик узла \\ 
--S - вывести все правила; +**OUTPUT** - применятся для исходящего трафика текущего узла \\ 
--F - очистить все правила; +**POSTROUTING** - используется для всего исходящего трафика после принятия всех решений о маршрутизации 
--N - создать цепочку; + 
--X - удалить цепочку;+ 
 +==== Действия ==== 
 + 
 +**ACCEPT** - разрешить прохождение пакета дальше по цепочке правил; \\ 
 +**DROP** - удалить пакет; \\ 
 +**REJECT** - отклонить пакет, отправителю будет отправлено сообщение, что пакет был отклонен; \\ 
 +**LOG** - сделать запись о пакете в лог файл; \\ 
 +**QUEUE** - отправить пакет пользовательскому приложению. 
 + 
 + 
 +==== Основные действия ==== 
 + 
 +-A - добавить правило в цепочку; \\ 
 +-С - проверить все правила; \\ 
 +-D - удалить правило; \\ 
 +-I - вставить правило с нужным номером; \\ 
 +-L - вывести все правила в текущей цепочке; \\ 
 +-S - вывести все правила; \\ 
 +-F - очистить все правила; \\ 
 +-N - создать цепочку; \\ 
 +-X - удалить цепочку; \\
 -P - установить действие по умолчанию. -P - установить действие по умолчанию.
  
-Дополнительные опции правил+ 
 +==== Дополнительные опции правил ==== 
 -p - указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, -p - указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp,
-mh; +mh; \\ 
--s - указать ip адрес устройства-отправителя пакета; +-s - указать ip адрес устройства-отправителя пакета; \\ 
--d - указать ip адрес получателя; +-d - указать ip адрес получателя; \\ 
--i - входной сетевой интерфейс; +-i - входной сетевой интерфейс; \\ 
--o - исходящий сетевой интерфейс;+-o - исходящий сетевой интерфейс; \\
 -j - выбрать действие, если правило подошло. -j - выбрать действие, если правило подошло.
  
-Статусы соединений 
-NEW — установка нового соединения, первый пакет, который мы видим. 
-RELATED — соединение, связанное с другим, имеющим статус ESTABLISHED. 
-ESTABLISHED — установленное сетевое соединение. 
-INVALID — пакет не может быть идентифицирован как принадлежащий какому-то соединению. 
-UNTRACKED — пакеты, для которых ранее была применена цель NOTRACK. Мы пока применяли только цель ACCEPT, позже мы познакомимся и с другими. Для таких пакетов, например, не отслеживаются сопутствующие ICMP-пакеты. 
  
-Примечание+==== Статусы соединений ==== 
 + 
 +**NEW** — установка нового соединения, первый пакет, который мы видим. \\ 
 +**RELATED** — соединение, связанное с другим, имеющим статус ESTABLISHED. \\ 
 +**ESTABLISHED** — установленное сетевое соединение. \\ 
 +**INVALID** — пакет не может быть идентифицирован как принадлежащий какому-то соединению. \\ 
 +**UNTRACKED** — пакеты, для которых ранее была применена цель NOTRACK. Мы пока применяли только цель ACCEPT, позже мы познакомимся и с другими. Для таких пакетов, например, не отслеживаются сопутствующие ICMP-пакеты. 
 + 
 + 
 +==== Примечание ==== 
 Команда iptables имеет такой общий вид: Команда iptables имеет такой общий вид:
  
-iptables -t таблица действие цепочка дополнительные_параметры +<code> 
-Команды и примеры +iptables -t таблица действие цепочка дополнительные_параметры 
-Установка iptables +</code> 
-apt-get install iptables + 
-Список правил + 
-iptables -L+===== Команды и примеры ===== 
 + 
 +==== Установка iptables ==== 
 + 
 +<code> 
 +apt-get install iptables 
 +</code> 
 + 
 +==== Список правил ==== 
 + 
 +<code> 
 +iptables -L 
 +</code> 
 Подробный список Подробный список
  
-iptables -nvL +<code> 
-Сброс всех правил +iptables -nvL 
-iptables -F +</code> 
-iptables -X + 
-iptables -t nat -F +==== Сброс всех правил ==== 
-iptables -t nat -X + 
-iptables -t mangle -F +<code> 
-iptables -t mangle -X +iptables -F 
-iptables -t raw -F +iptables -X 
-iptables -t raw -X +iptables -t nat -F 
-iptables -t security -F +iptables -t nat -X 
-iptables -t security -X +iptables -t mangle -F 
-iptables -P INPUT ACCEPT +iptables -t mangle -X 
-iptables -P FORWARD ACCEPT +iptables -t raw -F 
-iptables -P OUTPUT ACCEPT +iptables -t raw -X 
-Cохранить все правила iptables +iptables -t security -F 
-/sbin/iptables-save +iptables -t security -X 
-Добавляем автоматическую загрузку правил iptables+iptables -P INPUT ACCEPT 
 +iptables -P FORWARD ACCEPT 
 +iptables -P OUTPUT ACCEPT 
 +</code> 
 + 
 +==== Cохранить все правила iptables ==== 
 + 
 +<code> 
 +/sbin/iptables-save 
 +</code> 
 + 
 +==== Добавляем автоматическую загрузку правил iptables ==== 
 Устанавливаем: Устанавливаем:
  
-apt-get install netfilter-persistent iptables-persistent +<code> 
-Правила хранятся в следующих файлах и применяются при загрузке операционной системы.+apt-get install netfilter-persistent iptables-persistent 
 +</code> 
 + 
 +Правила хранятся в следующих файлах и применяются при загрузке операционной системы. \\
 Для IPv4 используется файл: Для IPv4 используется файл:
-/etc/iptables/rules.v4+ 
 +/etc/iptables/rules.v4 
 Для IPv6 используется файл: Для IPv6 используется файл:
-/etc/iptables/rules.v6+ 
 +/etc/iptables/rules.v6
  
 Варианты использования: service netfilter-persistent {start|restart|reload|force-reload|save|flush} Варианты использования: service netfilter-persistent {start|restart|reload|force-reload|save|flush}
  
-service netfilter-persistent {flush, force-reload, reload, restart, save, start} +service netfilter-persistent {flush, force-reload, reload, restart, save, start} \\ 
-flush - очистить правила +flush - очистить правила \\ 
-reload - загрузить из файлов+reload - загрузить из файлов \\
 save - сохранить в файлы save - сохранить в файлы
  
-Шлюз+ 
 +==== Шлюз ==== 
 Редактируем файл /etc/sysctl.conf Редактируем файл /etc/sysctl.conf
  
-nano /etc/sysctl.conf+<code> 
 +nano /etc/sysctl.conf 
 +</code> 
 Нужно раскомментировать строку Нужно раскомментировать строку
  
-net.ipv4.ip_forward=1+net.ipv4.ip_forward=1 
 Применить настройки без перезагрузки (или перезагрузить) Применить настройки без перезагрузки (или перезагрузить)
  
-sysctl -p+<code> 
 +sysctl -p 
 +</code>
  
-Настраиваем iptables: +Настраиваем iptables: \\ 
-eth0 — Интерфейс который смотрит в интернет+eth0 — Интерфейс который смотрит в интернет \\
 eth1 — Локальная сеть eth1 — Локальная сеть
  
-iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +<code> 
-iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT+iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
 +iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 
 +</code> 
 Конфигурация будет работать до перезагрузки, не забудь сохранить Конфигурация будет работать до перезагрузки, не забудь сохранить
  
-Заблокировать IP-адрес в iptables + 
-iptables -A INPUT -s 192.168.100.1 -j DROP +==== Заблокировать IP-адрес в iptables ==== 
-Разрешить IP-адрес в iptables + 
-iptables -A INPUT -s 192.168.100.1 -j ACCEPT +<code> 
-Открыть порт в iptables +iptables -A INPUT -s 192.168.100.1 -j DROP 
-iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT+</code> 
 + 
 + 
 +==== Разрешить IP-адрес в iptables ==== 
 + 
 +<code> 
 +iptables -A INPUT -s 192.168.100.1 -j ACCEPT 
 +</code> 
 + 
 + 
 +==== Открыть порт в iptables ==== 
 + 
 +<code> 
 +iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT 
 +</code> 
 или для каждого отдельно или для каждого отдельно
  
-iptables -A INPUT -p tcp --dport 22 -j ACCEPT +<code> 
-iptables -A INPUT -p tcp --dport 80 -j ACCEPT +iptables -A INPUT -p tcp --dport 22 -j ACCEPT 
-iptables -A INPUT -p tcp --dport 443 -j ACCEPT +iptables -A INPUT -p tcp --dport 80 -j ACCEPT 
-Закрыть порт в iptables +iptables -A INPUT -p tcp --dport 443 -j ACCEPT 
-iptables -A INPUT -p tcp --dport 21 -j DROP +</code> 
-Запретить ICMP ping трафик + 
-iptables -A INPUT -p icmp --icmp-type 8 -j DROP + 
-Переадресация порта — redirect+==== Закрыть порт в iptables ==== 
 + 
 +<code> 
 +iptables -A INPUT -p tcp --dport 21 -j DROP 
 +</code> 
 + 
 + 
 +==== Запретить ICMP ping трафик ==== 
 + 
 +<code> 
 +iptables -A INPUT -p icmp --icmp-type 8 -j DROP 
 +</code> 
 + 
 + 
 +==== Переадресация порта — redirect ==== 
 Например с 8080 на 80 Например с 8080 на 80
  
-iptables -A INPUT -p tcp --dport 8080 -j ACCEPT +<code> 
-iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 +iptables -A INPUT -p tcp --dport 8080 -j ACCEPT 
-Разрешить соединения по SSH +iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 
-iptables -t filter -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT +</code> 
-Пример фильтров для FTP+ 
 + 
 +==== Разрешить соединения по SSH ==== 
 + 
 +<code> 
 +iptables -t filter -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
 +</code> 
 + 
 + 
 +==== Пример фильтров для FTP ==== 
 Очень простой пример — работа с FTP-сервером. Мы подключаемся к порту 21/tcp, в момент подключения соединение получается статус NEW, а затем ESTABLISHED. Управляющие команды идут через порт 21/tcp, но при работе для передачи файлов необходимо открыть еще и 20/tcp. И соединение на порт 20/tcp получает статус RELATED. Таким образом, доступ к порту 20/tcp можно закрывать до тех пор, пока соединение на него не придет со статусом RELATED, либо само соединение не получит статус ESTABLISHED. Получается, что для корректной фильтрации портов 21/tcp и 20/tcp мы можем сделать следующее: Очень простой пример — работа с 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 +<code> 
-iptables -t filter -A INPUT -p tcp -m tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT+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 
 +</code> 
 В этом случае без установки подключения на порт 21 мы не получим доступ к порту 20. В этом случае без установки подключения на порт 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+<code> 
 +iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d ! 192.168.0.0/24 -j MASQUERADE 
 +</code> 
 + 
 +Это правило после обработки пакетов осуществит маскирование, если пакеты из внутренней сети направлены куда-то в другую подсеть. Если нам нужно маскировать пакеты для конкретной подсети, к примеру, из одной локальной подсети (192.168.2.0/24) в другую (192.168.0.0/24), то мы можем создать следующее правило:
  
-https://wiki.archlinux.org/title/Iptables_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)+<code> 
 +iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.0/24 -j MASQUERADE 
 +</code>
  
-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://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/]]
  
-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