Опубликован: 26.07.2011 | Уровень: для всех | Доступ: платный
Лекция 11:

Межсетевое экранирование в Linux

< Лекция 10 || Лекция 11: 12 || Лекция 12 >

Взаимодействие правил и цепочек

Для каждой таблицы в цепочке определена политика обработки пакетов по умолчанию (тех, которые не соответствуют ни одному правилу данной таблицы). Политика по умолчанию может быть, например, разрешающая ( ACCEPT ), т. е. передавать пакеты в следующую таблицу, или запрещающая ( DROP ), т. е. уничтожать пакеты ( пример 11.3).

Для того, чтобы установить запрещающую политику (уничтожения без сообщения адресату) для проходящих пакетов, не удовлетворяющих ни одному правилу нужно использовать iptables с ключом -P c указанием цепочки и действия:

# iptables -P FORWARD DROP
# iptables -L FORWARD
Chain FORWARD (policy DROP)
target     prot opt source               destination
Листинг 11.3. Установка политики по умолчанию для цепочки
Примечание: Указанная в пример 11.3 команда фактически устанавливает запрещающую политику по умолчанию только в таблице filter цепочки FORWARD. В таблице mangle данной цепочки политика по умолчанию не изменилась:
# iptables -t mangle -L FORWARD
Chain FORWARD (policy ACCEPT)
target     prot opt source

Так как политику фильтрации пакетов в цепочке принято определять в таблице filter, то в контексте фильтрации имеется ввиду, что задается политика по умолчанию для всей цепочки (здесь и далее по тексту).

При добавлении правил iptables следует учитывать то, что их порядок в цепочке имеет значение ( пример 11.4). Чтобы вставить правило в произвольное место существующей цепочки, укажите ключ -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
Листинг 11.4. Добавление правила в заданную позицию в цепочке

Для того, чтобы сделать исключение для узла 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
Примечание: При запретительной политике по умолчанию для цепочек INPUT и OUTPUT необходимо разрешить трафик интерфейса loopback (lo):
# iptables -A OUTPUT -o lo -j ACCEPT
# iptables -A INPUT -i lo -j ACCEPT

Краткие итоги

  1. Подсистема netfilter, входящая в состав ядра Linux, используется для фильтрации сетевых пакетов, а также для реализации сложных схем манипуляции сетевыми пакетами, в т.ч. трансляции сетевых адресов ( NAT ). Для управления netfilter используется утилита iptables.
  2. Сетевые пакеты в подсистеме netfilter проходят последовательность цепочек ( chain ). Каждая цепочка включает заданный набор таблиц, содержащих упорядоченные списки правил. Каждое правило содержит параметры выбора и выполняемое действие при соответствии содержимого пакета параметрам.
  3. Для фильтрации пакетов, предназначенных данному узлу используются правила таблицы filter цепочки INPUT, для проходящих пакетов — цепочки FORWARD, для пакетов, созданных данным узлом — OUTPUT.
  4. Для каждой цепочки задается политика для пакетов, не удовлетворяющих ни одному правилу цепочки. При добавлении правил iptables следует учитывать то, что их порядок в цепочке имеет значение. Возможность сетевого взаимодействия с участием данного узла или узлов, трафик которых проходит через данный узел, определяется действием на сетевые пакеты всех цепочек, через которые они проходят.

Упражнения

Используя стенд на основе VirtaulBox, описанный в упражнении "Маршрутизация в Linux" , настроить фильтрацию трафика на маршрутизаторе:

  1. Разрешить IP-трафик от сети 192.168.0.0/24 к маршрутизатору на интерфейсе eth1 ; весь остальной входящий трафик маршрутизатора на интерфейсе eth1 запретить.
  2. Разрешить проходящий IP-трафик для сети 192.168.0.0/24; проходящий трафик других сетей запретить.
  3. Запретить ICMP-трафик от сети 192.168.0.0/24 к сети 192.168.9.0/24.
  4. Запретить проходящий IP-трафик от сети 192.168.0.0/24 к сети 192.168.10.0/24.
  5. Запретить IP-трафик от сети 192.168.0.0/24 к узлу 192.168.11.11

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. самостоятельно.

< Лекция 10 || Лекция 11: 12 || Лекция 12 >
Нияз Сабиров
Нияз Сабиров

Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей.

Елена Сапегова
Елена Сапегова

для получения диплома нужно ли кроме теоретической части еще и практическую делать? написание самого диплома требуется?

Сергей Тристан
Сергей Тристан
Россия, Москва
Андрей Фомушкин
Андрей Фомушкин
Россия, Орехово-Зуево