MyTetra Share
Делитесь знаниями!
Формат конфиг-файла iptables
Время создания: 01.03.2013 11:01
Автор: xintrea
Текстовые метки: linux, iptables, формат, конфигурирование
Раздел: Компьютер - Linux - Сеть в Linux
Запись: xintrea/mytetra_syncro/master/base/1362121280uuse7szizg/text.html на raw.github.com

Файл настройки фаирвола iptables лежит по пути /etc/sysconfig/iptables (справедливо для RedHat/CentOS).


Если необходимо, чтобы iptables при каждом запуске компьютера конфигурировался из данного конфига, и этот конфиг оставался таким, каким его настроил администратор (т. е. чтобы конфиг не менялся при выключении компьютера), необходимо прописать в файл /etc/sysconfig/iptables-config параметры:


IPTABLES_SAVE_ON_STOP="no"

IPTABLES_SAVE_ON_RESTART="no"



Пример конфиг-файла iptables


Для начала надо привести пример небольшого конфига для фаирвола iptables:


*filter


:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:RH-Firewall-1-INPUT - [0:0]


-A INPUT -j RH-Firewall-1-INPUT

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

-A RH-Firewall-1-INPUT -p esp -j ACCEPT

-A RH-Firewall-1-INPUT -p ah -j ACCEPT

-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT



Здесь видна общая структура. Далее идет описание секций этого конфига и правила, по которым определяются границы секций.



Таблицы


Описание таблицы начинается с символа звёздочка "*", после чего идет имя таблицы в нижнем регистре. Область таблицы тянется до следующего заголовка таблицы. Фаирвол iptables работает с четырьмя типами таблиц:


  1. mangle - обычно эта таблица используется для внесения изменений в заголовок пакета, например для изменения битов TOS и пр.
  2. nat - эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях.
  3. filter - здесь производится фильтрация трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили.
  4. raw - пакет проходит данную таблицу до передачи системе определения состояний. Используется редко, например для маркировки пакетов, которые НЕ должны обрабатываться системой определения состояний. Для этого в правиле указывается действие NOTRACK. Содержитcя в цепочках PREROUTING и OUTPUT.


Чаще всего настраивают таблицу filter.



Цепочки


После заголовка таблицы перечисляются цепочки траффика. Описание цепочки занимает одну строку, строка должна начинаться с двоеточия ":". Для таблицы filter доступны к использованию следующие системные цепочки:



  • INPUT – цепочка входящих пакетов, адресованных непосредственно данному компьютеру;
  • OUTPUT – цепочка исходящих пакетов, создаваемых на компьютере;
  • FORWARD - цепочка проходящих через данную машину пакетов;
  • PREROUTING — для изначальной обработки входящих пакетов;
  • POSTROUTING— для окончательной обработки исходящих пакетов;



Так же возможно описание пользовательских цепочек. Например:


RH-Firewall-1-INPUT - определяемая пользователем цепочка. Чтобы через пользовательскую цепочку начал проходить траффик, его нужно перенаправить из стандартной системной цепочки, о чем будет написано ниже. В одну пользовательскую цепочку можно направить несколько системных цепочек, например в цепочку RH-Firewall-1-INPUT можно направить INPUT и FORWARD.


Формат строки с описанием цепочки следующий:



:имя_цепочки политика_доступа_по_умолчанию [счетчик_пакетов:счетчик_байт]



где



  • имя_цепочки - это название цепочки (INPUT / OUTPUT / FORWARD или пользовательское имя);
  • политика_доступа_по_умолчанию - политика доступа (ACCEPT, DROP, REJECT);
  • счетчик_пакетов - начальное значение счетчика пакетов, прошедших через цепочку;
  • счетчик_байт - начальное значение счетчика байт, прошедших через цепочку.


Политика доступа может принимать значения:



  • ACCEPT – пакет пропускается;
  • DROP – пакет молча отклоняется;
  • REJECT – отклонение пакета с уведомлением отправителю;
  • Прочерк "-" - что означает неясно, нужно разбираться.



Политика доступа по-умолчанию применяется в том случае, если небыло найдено ни одного правила для соответствующего пакета.



Наборы правил


После перечисления цепочек внутри таблицы, размещается область перечисления правил. Набор правил выглядит вот так:



-A INPUT -j RH-Firewall-1-INPUT

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

-A RH-Firewall-1-INPUT -p esp -j ACCEPT

...



по сути, это опции консольной утилиты iptables. Команды и параметры приведены ниже:




Параметр

Описание

Пример

Команды

--append (-A)

Добавить в указанную цепочку и указанную таблицу заданное правило в КОНЕЦ списка.

iptables -A FORWARD критерии -j действие

--delete (-D)

Удаляет заданное номером(ами) или правилом(ами) правило(а). Первый пример удаляет все правила с номерами 10,12 во всех цепочках, в таблицах filter, второй пример удаляет заданное правило из таблицы mangle в цепочке PREROUTING.

iptables -D 10,12
iptables -t mangle -D PREROUTING критерии -j действие

--rename-chain (-E)

Изменить имя цепочки.

iptables -E OLD_CHAIN NEW_CHAIN

--flush (-F)

Очистка всех правил текущей таблицы. Ко всем пакетам, которые относятся к уже установленным соединениям, применяем терминальное действие ACCEPT — пропустить

iptables -F

--insert (-I)

Вставляет заданное правило в место, заданное номером.

iptables -I FORWARD 5 критерии -j действие

--list (сокр. -L)

Просмотр существующих правил (без явного указания таблицы - отображается таблица filter всех цепочек).

iptables -L

--policy (-P)

Устанавливает стандартную политику для заданной цепочки.

iptables -t mangle -P PREROUTING DROP

--replace (-R)

Заменяет заданное номером правило на заданное в критериях.

iptables -R POSROUTING 7 | критерии -j действие

--delete-chain (-X)

Удалить ВСЕ созданные вручную цепочки (оставить только стандартные INPUT, OUTPUT, FORWARD, PREROUTING и POSTROUTING).

iptables -X

--zero (-Z)

Обнуляет счетчики переданных данных в цепочке.

iptables -Z INPUT

Параметры

--numeric (-n)

Не резолвит адреса и протоколы при выводе.

--line-numbers

Указывать номера правил при выводе (может использоваться совместно с -L).

iptables -L --line-numbers

--help (-h)

помощь по утилите, куда же без нее

-t таблица

Задает название таблицы, над которой необходимо совершить действие. В примере сбрасывается таблица nat во всех цепочках.

iptables -t nat -F

--verbose (-v)

Детальный вывод.

iptables -L -v



Правила бывают как минимум двух видов:


1. Правила связывания цепочек. Выглядят такие правила так:

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT

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

2. Правила с условием и действием. Примеры таких правил:

-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT

Такие правила содержат имя цепочки, условие и наименование действия в конце команды. Действие предваряется ключем -j (что обозначает jump, т. е. переход к действию такому то)



Комментарии


Строки с текстовыми комментариями должны начинаться с символа решетки "#".


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования