Подсистема netfilter представляет собой средство iptables используется для управления netfilter.
Сетевые пакеты в подсистеме netfilter проходят последовательность цепочек (chain). Каждая цепочка включает заданный набор таблиц (table), содержащих упорядоченные списки правил. Каждое правило содержит параметры выбора и выполняемое действие при соответствии содержимого пакета параметрам.
Существует пять типов стандартных цепочек, встроенных в систему :
Цепочки организованы в четыре таблицы :
raw — просматривается до передачи пакета системе определения состояний. Содержится в цепочках PREROUTING и OUTPUT.mangle — содержит правила модификации заголовка IP?пакетов. Среди прочего, поддерживает изменения полей TTL и TOS, и
маркеров пакета. Содержится во всех стандартных цепочках.nat — используется для трансляции сетевых адресов. Содержится в цепочках PREROUTING, OUTPUT, и POSTROUTING.filter — основная таблица, предназначенная для фильтрации
(рис 11.1) Прохождение пакета в подсистеме netfilter (взято из wikipedia.org) Следует отметить, что одноименные таблицы каждой цепочки независимы.
Входящий пакет (рис 11.1) начинает обрабатываться с цепочки PREROUTING в таблицах (определение состояний) и . Затем он обрабатывается правилами таблицы данной цепочки. На этом
этапе проверяется, необходима ли модификация адреса получателя пакета ( DNAT ). Важно сменить адрес получателя на данном этапе, так как
маршрут пакета определяется сразу после того, как он покинет цепочку PREROUTING.
Далее возможны два варианта:
mangle и filter, а
затем к нему применяются правила цепочки POSTROUTING. На данном этапе можно использовать SNAT/MASQUERADE (подмена
источника/маскировка). После этих действий пакет будет отправлен в сеть.Третий вариант - когда приложение на компьютере, отвечает на запрос или отправляет собственный пакет, то он обрабатывается
цепочкой OUTPUT таблиц . Затем к нему применяются правила цепочки OUTPUT таблицы , для определения, требуется ли использовать DNAT (модификация адреса получателя), пакет фильтруется цепочкой OUTPUT таблицы filter и выпускается в цепочку POSTROUTING. В случае успешного прохождения POSTROUTING пакет
выходит в сеть.
Непосредственно для фильтрации используются таблицы filter. Поэтому в рамках данной темы важно понимать, что для
фильтрации пакетов, предназначенных данному узлу необходимо модифицировать таблицу filter цепочки INPUT, для проходящих пакетов — цепочки FORWARD, для пакетов, созданных данным узлом
— OUTPUT.
Команда iptables позволяет редактировать правила таблиц netfilter. Каждое правило представляет собой запись, содержащую
в себе параметры отбора (критерии), определяющие, подпадает ли пакет под данное правило, и действие, которое необходимо выполнить в случае
соответствия параметрам отбора .
В общем виде правила записываются в виде:
iptables [-t table] command [match] [target/jump]
По умолчанию используется таблица filter, если же необходимо указать другую таблицу, то
следует использовать спецификатор -t с указанием имени таблицы. После имени таблицы указывается команда,
определяющая действие: вставить правило, или добавить правило в конец цепочки, или удалить правило и т. п. Match задает параметры
отбора. Target указывает, какое действие должно быть выполнено при условии выполнения критериев в правиле: передать пакет в другую
цепочку правил, "сбросить" пакет, выдать на
iptables требуются права Для просмотра существующих правил, команда iptables используется с ключом -L. Так, для просмотра всех цепочек таблицы filter ( -v — для более детального отображения):
# iptables -L -v
filter.Для просмотра цепочки FORWARD нужно указать имя цепочки:
# iptables -v -L FORWARD
Сбросить все правила (-F) и удалить определенные пользователем цепочки (-X):
# iptables -F # iptables -X
Для добавления правила в цепочку используется ключ -A. Например, чтобы добавить правило в цепочку POSTROUTING таблицы :
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Для того, чтобы добавить правило в цепочку FORWARD:
# iptables -A FORWARD -i eth0 --destination 192.168.1.0/24 -j ACCEPT
Ниже в виде таблицы приведены основные параметры отбора пакетов :
| Параметр | Описание | Пример |
|---|---|---|
--protocol (сокращено -p ) |
Определяет протокол. Опции tcp, udp, icmp, или любой другой
протокол определенный в /etc/protocols |
iptables -A INPUT -p tcp |
--source (-s) |
IP адрес источника пакета. Может быть определен несколькими путями.host.domain., или IP адрес: 10.10.10.3 |
iptables -A INPUT -s 10.10.10.3 |
-- |
IP адрес назначения пакета. Может быть определен несколькими путями - смотри — source |
iptables -A INPUT -- |
--source-port (--sport) |
Порт источник, возможно только для протоколов — protocol tcp, или — protocol udp |
iptables -A INPUT --protocol tcp --source-port 25 |
-- |
Порт назначения, возможно только для протоколов — protocol tcp, или — protocol udp |
iptables -A INPUT --protocol udp -- |
--state |
NEW (Все пакеты устанавливающие новое соединение) ESTABLISHED (Все пакеты, принадлежащие установленному соединению) RELATED (Пакеты, не принадлежащие установленному соединению, но связанные с ним. Например - FTP в активном режиме использует разные соединения для передачи данных. Эти соединения связаны.) INVALID (Пакеты, которые не могут быть по тем или иным причинам идентифицированы. Например, ICMP ошибки не принадлежащие существующим соединениям) |
iptables -A INPUT -m state --state NEW,ESTABLISHED |
--in-interface (сокращенно -i ) |
Определяет интерфейс, на который прибыл пакет. Полезно для |
iptables -t |
--out-interface (сокращенно -o ) |
Определяет интерфейс, с которого уйдет пакет. Полезно для |
iptables -t |
--tcp-flags |
Определяет TCP флаги пакета. Содержит 2 параметра: Список флагов которые следует проверить и список флагов которые должны быть установлены | |
-- |
Сокращение для ‘--tcp-flags . Поскольку проверяет TCP флаги, используется с — protocol tcp. В примере показан фильтр для пакетов с флагом NEW, но без флага . Обычно такие пакеты должны
быть выброшены ( DROP ). |
iptables -A INPUT --protocol tcp ! -- |
Действие, которое система выполнит, если пакет в одной из цепочек удовлетворяет условию, устанавливается с помощью ключа -j (--.
Можно также передать пакет в другую цепочку.
Стандартные действия:
-ACCEPT - пакет покидает данную цепочку и передается в следующую.-DROP - отбросить удовлетворяющий условию пакет.-REJECT - отбросить пакет, отправив отправителю ICMP-сообщение.-LOG - протоколировать пакет.-RETURN - возвратить пакет в предыдущую цепочку.-SNAT - применить nat .-DNAT - применить nat .-MASQUERADE — используется вместо SNAT при наличии соединения с динамическим IP.-MARK — используется для установки меток на пакеты.# iptables -A input -p tcp -s 192.168.0.0/16 --dport 80 -j ACCEPT
# iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.9.9 -j DROP
Для каждой таблицы в цепочке определена политика обработки пакетов по умолчанию (тех, которые не соответствуют ни одному
правилу данной таблицы). Политика по умолчанию может быть, например, разрешающая ( ACCEPT ), т. е. передавать пакеты в следующую
таблицу, или запрещающая ( ).
Для того, чтобы установить запрещающую политику (уничтожения без сообщения адресату) для проходящих пакетов, не удовлетворяющих ни одному правилу
нужно использовать iptables с ключом -P c указанием цепочки и действия:
# iptables -P FORWARD DROP # iptables -L FORWARD Chain FORWARD (policy DROP) target prot opt source destination
# iptables -t mangle -L FORWARD Chain FORWARD (policy ACCEPT) target prot opt source
Так как политику фильтрации пакетов в цепочке принято определять в таблице filter, то в
контексте фильтрации имеется ввиду, что задается политика по умолчанию для всей цепочки (здесь и далее по тексту).
При добавлении правил iptables следует учитывать то, что их порядок в цепочке имеет
значение (). Чтобы вставить правило в произвольное место существующей цепочки, укажите ключ -I,
затем название этой цепочки и позицию (1,2,3,...,n), в которой должно располагаться правило.
Пусть существует разрешительная политика по умолчанию для входящего локального трафика и запретительное правило на доступ к локальному HTTP-серверу из сети 192.168.0.0/16:
# iptables -L INPUT -v
Chain INPUT (policy ACCEPT 7 packets, 508 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp -- any any 192.168.0.0/16 anywhere tcp dpt:www
Для того, чтобы сделать исключение для узла 192.168.1.5 (входящему в сеть 192.168.0.0/16), соответствующее разрешительное правило, должно быть достижимо, поэтому его необходимо разместить перед запретительным:
# iptables -I INPUT 1 -p tcp -s 192.168.1.5 --dport 80 -j ACCEPT
# iptables -L INPUT -v
Chain INPUT (policy ACCEPT 7 packets, 508 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- any any 192.168.1.5 anywhere tcp dpt:www
0 0 DROP tcp -- any any 192.168.0.0/16 anywhere tcp dpt:www
Возможность сетевого взаимодействия с участием данного узла или узлов, трафик которых проходит через данный узел, определяется действием на сетевые пакеты всех цепочек, через которые они проходят ( Пример 11.5).
Для того, чтобы обеспечить доступ узла 192.168.1.5 к локальному HTTP-серверу при запретительной политики по умолчанию цепочек INPUT и OUTPUT, соответствующие разрешительные правила необходимо добавить как в цепочку INPUT, так и в цепочку OUTPUT:
# iptables -A INPUT -p tcp -s 192.168.1.5 --dport 80 -j ACCEPT
# iptables -A OUTPUT -p tcp -d 192.168.1.5 -j ACCEPT
# iptables -L INPUT -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4 336 ACCEPT all -- lo any anywhere anywhere
1536 123K ACCEPT all -- any any 192.168.56.1 anywhere
0 0 ACCEPT tcp -- any any 192.168.1.5 anywhere tcp dpt:www
# iptables -L OUTPUT -v
Chain OUTPUT (policy DROP 8 packets, 564 bytes)
pkts bytes target prot opt in out source destination
4 336 ACCEPT all -- any lo anywhere anywhere
1050 106K ACCEPT all -- any any anywhere 192.168.56.1
0 0 ACCEPT all -- any any anywhere 192.168.1.5
loopback (lo):# iptables -A OUTPUT -o lo -j ACCEPT # iptables -A INPUT -i lo -j ACCEPT
netfilter используется утилита iptables.netfilter проходят последовательность цепочек ( chain ). Каждая цепочка включает заданный
набор таблиц, содержащих упорядоченные списки правил. Каждое правило содержит параметры выбора и выполняемое действие при соответствии содержимого
пакета параметрам.filter цепочки INPUT, для проходящих
пакетов — цепочки FORWARD, для пакетов, созданных данным узлом — OUTPUT.iptables
следует учитывать то, что их порядок в цепочке имеет значение. Возможность сетевого взаимодействия с участием данного узла или узлов, трафик которых
проходит через данный узел, определяется действием на Используя стенд на основе VirtaulBox, описанный в упражнении "Маршрутизация в Linux", настроить
1.Реализовать п. 1 ( основная ВМ ):
# iptables -P INPUT DROP # iptables -A INPUT -i lo -p all -j ACCEPT # iptables -A INPUT -i eth1 --source 192.168.0.0/24 -j ACCEPT
2.Реализовать п. 2:
# iptables -P FORWARD DROP # iptables -A FORWARD -i eth1 --source 192.168.0.0/24 -j ACCEPT # iptables -A FORWARD -i eth2 --destination 192.168.0.0/24 -j ACCEPT # iptables -A FORWARD -i eth3 --destination 192.168.0.0/24 -j ACCEPT
3.Реализовать п. 3.
# iptables -I FORWARD 1 -i eth1 --source 192.168.0.0/24 --destination 192.168.9.0/24 --protocol icmp -j DROP
4.Реализовать пп. 4 и 5. самостоятельно.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.