Iptables Сравнение версий

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:iptables [2013/10/06 02:09]
[Основные понятия]
wiki:iptables [2016/03/02 11:32] (текущий)
Строка 14: Строка 14:
     * Пользовательская цепочка — цепочка,​ созданная пользователем. Может использоваться только в пределах своей таблицы. Рекомендуется не использовать для таких цепочек имена в верхнем регистре,​ чтобы избежать путаницы с базовыми цепочками и встроенными действиями.     * Пользовательская цепочка — цепочка,​ созданная пользователем. Может использоваться только в пределах своей таблицы. Рекомендуется не использовать для таких цепочек имена в верхнем регистре,​ чтобы избежать путаницы с базовыми цепочками и встроенными действиями.
   - Таблица — совокупность базовых и пользовательских цепочек,​ объединенных общим функциональным назначением. Имена таблиц (как и модулей критериев) записываются в нижнем регистре,​ так как в принципе не могут конфликтовать с именами пользовательских цепочек. При вызове команды iptables таблица указывается в формате -t имя_таблицы. При отсутствии явного указания,​ используется таблица filter.   - Таблица — совокупность базовых и пользовательских цепочек,​ объединенных общим функциональным назначением. Имена таблиц (как и модулей критериев) записываются в нижнем регистре,​ так как в принципе не могут конфликтовать с именами пользовательских цепочек. При вызове команды iptables таблица указывается в формате -t имя_таблицы. При отсутствии явного указания,​ используется таблица filter.
 +
 +Синтаксический анализ:​
 +<code bash># Дамп правил таблицы filter
 +$ sudo iptables-save -c -t filter
 +# Таблица filter
 +*filter
 +# Цепочки INPUT, FORWARD, OUTPUT, их политики и счётчики
 +:INPUT ACCEPT [19302:​9473669]
 +:FORWARD ACCEPT [0:0]
 +:OUTPUT ACCEPT [5462736:​4247599532]
 +# Правило:​ "​[17:​1020]"​ - счётчик правила,​ "-A INPUT" - цепочка,​ "-i em1 -p tcp -m tcp --dport 22" - критерии,​ "-j ACCEPT"​ - действие
 +[17:1020] -A INPUT -i em1 -p tcp -m tcp --dport 22 -j ACCEPT
 +COMMIT</​code>​
  
 ==== Архитектура ==== ==== Архитектура ====
Строка 55: Строка 68:
   * RELATED — пакет открывает новый сеанс, связанный с уже открытым сеансом. Например,​ во время сеанса пассивного FTP, клиент подсоединяется к порту 21 сервера,​ сервер сообщает клиенту номер второго,​ случайно выбранного порта, после чего клиент подсоединяется ко второму порту для передачи файлов. В этом случае второй сеанс (передача файлов по второму порту) связан с уже существующим сеансом (изначальное подсоединение к порту 21).   * RELATED — пакет открывает новый сеанс, связанный с уже открытым сеансом. Например,​ во время сеанса пассивного FTP, клиент подсоединяется к порту 21 сервера,​ сервер сообщает клиенту номер второго,​ случайно выбранного порта, после чего клиент подсоединяется ко второму порту для передачи файлов. В этом случае второй сеанс (передача файлов по второму порту) связан с уже существующим сеансом (изначальное подсоединение к порту 21).
   * INVALID — все прочие пакеты.   * INVALID — все прочие пакеты.
- 
-Синтаксический анализ:​ 
-<code bash># Дамп правил таблицы filter 
-$ sudo iptables-save -c -t filter 
-# Таблица filter 
-*filter 
-# Цепочки INPUT, FORWARD, OUTPUT, их политики и счётчики 
-:INPUT ACCEPT [19302:​9473669] 
-:FORWARD ACCEPT [0:0] 
-:OUTPUT ACCEPT [5462736:​4247599532] 
-# Правило:​ "​[17:​1020]"​ - счётчик правила,​ "-A INPUT" - цепочка,​ "-i em1 -p tcp -m tcp --dport 22" - критерии,​ "-j ACCEPT"​ - действие 
-[17:1020] -A INPUT -i em1 -p tcp -m tcp --dport 22 -j ACCEPT 
-COMMIT</​code>​ 
  
 ===== Диаграмма прохождения таблиц и цепочек ===== ===== Диаграмма прохождения таблиц и цепочек =====
Строка 81: Строка 81:
 ===== Базовая конфигурация ===== ===== Базовая конфигурация =====
  
-При использовании IPv6-адресации конфигурацию для IPv6 следует выполнять независимо ​от IPv4. +Ниже приведён ​пример базовой статической конфигурации iptables. При сохранении и загрузке подобной ​конфигурации необходимо принимать во внимание возможность ​внесения в неё изменений со стороны других сервисовнапример ​[[Fail2ban]]. Кроме того, при использовании IPv6-адресации ​конфигурацию для ​IPv6 следует выполнять независимо от IPv4.
- +
-Ниже приведён пример ​базовой статической ​конфигурации iptables ​для ​обоих ​случаев. +
 ==== IPv4 ==== ==== IPv4 ====
  
Строка 122: Строка 119:
 #-A OUTPUT -j REJECT --reject-with icmp-host-prohibited #-A OUTPUT -j REJECT --reject-with icmp-host-prohibited
 COMMIT</​code>​ COMMIT</​code>​
 +
 +Дополняем нужными правилами с учётом iptables-save.
  
 Сохраняем и закрываем:​ <​key>​Ctrl</​key>​+<​key>​O</​key>,​ <​key>​Enter</​key>,​ <​key>​Ctrl</​key>​+<​key>​X</​key>​ Сохраняем и закрываем:​ <​key>​Ctrl</​key>​+<​key>​O</​key>,​ <​key>​Enter</​key>,​ <​key>​Ctrl</​key>​+<​key>​X</​key>​
Строка 167: Строка 166:
 #-A OUTPUT -j REJECT --reject-with icmp6-adm-prohibited #-A OUTPUT -j REJECT --reject-with icmp6-adm-prohibited
 COMMIT</​code>​ COMMIT</​code>​
 +Дополняем нужными правилами с учётом ip6tables-save.
  
 Сохраняем и закрываем:​ <​key>​Ctrl</​key>​+<​key>​O</​key>,​ <​key>​Enter</​key>,​ <​key>​Ctrl</​key>​+<​key>​X</​key>​ Сохраняем и закрываем:​ <​key>​Ctrl</​key>​+<​key>​O</​key>,​ <​key>​Enter</​key>,​ <​key>​Ctrl</​key>​+<​key>​X</​key>​
Строка 172: Строка 172:
 Делаем скрипт исполняемым и загружаем правила iptables: Делаем скрипт исполняемым и загружаем правила iptables:
  
-<code bash>​sudo chmod +x /​etc/​network/​if-up.d/​iptables-rules +<code bash>​sudo chmod +x /​etc/​network/​if-up.d/​ip6tables-rules 
-sudo /​etc/​network/​if-up.d/​iptables-rules</​code>​+sudo /​etc/​network/​if-up.d/​ip6tables-rules</​code>​
  
 ===== Дополнительные правила ===== ===== Дополнительные правила =====
Строка 230: Строка 230:
 ===== Тестирование и отладка ===== ===== Тестирование и отладка =====
  
-FIXME Логирование ​и трассировка+Просмотр текущей конфигурации для IPv4 и IPv6: 
 +<​code=bash>​sudo iptables-save 
 +sudo ip6tables-save</​code>​ 
 + 
 +==== Логирование ​==== 
 + 
 +FIXME 
 + 
 +==== Трассировка ​==== 
 + 
 +FIXME
  
 ===== Модули ядра ===== ===== Модули ядра =====
Строка 243: Строка 253:
 sudo modprobe ip</​code>​ sudo modprobe ip</​code>​
  
-Часто используемые модули:​ nf_conntrack_ftp,​ nf_conntrack_pptp,​ nf_conntrack_tftp.+Часто используемые модули:​ nf_conntrack_ftp,​ nf_conntrack_pptp,​ nf_conntrack_tftp, nf_nat_pptp.
  
 Автозагрузка модулей:​ Автозагрузка модулей:​
Строка 249: Строка 259:
 <code bash>man modules-load.d</​code>​ <code bash>man modules-load.d</​code>​
  
-===== Другие инструменты ===== 
- 
-FIXME Рассмотреть взаимодействие с UFW, Firestarter,​ Firewalld 
- 
-  * [[Fail2ban]] — средство дополнительной защиты сервисов от брутфорса,​ может динамически изменять конфигурацию iptables. Этот момент следует учитывать при сохранении/​загрузке собственной статической конфигурации. 
  
 ===== Ссылки ===== ===== Ссылки =====
  
   * [[wpru>​Netfilter]]   * [[wpru>​Netfilter]]
 +  * [[wpru>​Список портов TCP и UDP|Список портов TCP и UDP (ru)]] [[http://​en.wikipedia.org/​wiki/​List_of_TCP_and_UDP_port_numbers|(en)]]
   * [[http://​www.opennet.ru/​docs/​RUS/​iptables/​|Iptables Tutorial (ru)]] [[http://​www.frozentux.net/​iptables-tutorial/​iptables-tutorial.html|(en)]]   * [[http://​www.opennet.ru/​docs/​RUS/​iptables/​|Iptables Tutorial (ru)]] [[http://​www.frozentux.net/​iptables-tutorial/​iptables-tutorial.html|(en)]]
   * [[http://​www.opennet.ru/​man.shtml?​topic=iptables&​category=8&​russian=0|Iptables Manual (ru)]] [[http://​ipset.netfilter.org/​|(en)]]   * [[http://​www.opennet.ru/​man.shtml?​topic=iptables&​category=8&​russian=0|Iptables Manual (ru)]] [[http://​ipset.netfilter.org/​|(en)]]
   * [[http://​en.wikibooks.org/​wiki/​Iptables|Communication Networks/IP Tables (en)]]   * [[http://​en.wikibooks.org/​wiki/​Iptables|Communication Networks/IP Tables (en)]]
 +  * [[https://​help.ubuntu.com/​community/​IptablesHowTo|Iptables HowTo (en)]]
   * [[http://​forum.ubuntu.ru/​index.php?​topic=99586.0|Автозагрузка правил iptables ]]   * [[http://​forum.ubuntu.ru/​index.php?​topic=99586.0|Автозагрузка правил iptables ]]
   * [[http://​forum.ubuntu.ru/​index.php?​topic=230519.0|Обсуждение статьи]]   * [[http://​forum.ubuntu.ru/​index.php?​topic=230519.0|Обсуждение статьи]]