Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей. |
Межсетевое экранирование в Linux
Взаимодействие правил и цепочек
Для каждой таблицы в цепочке определена политика обработки пакетов по умолчанию (тех, которые не соответствуют ни одному правилу данной таблицы). Политика по умолчанию может быть, например, разрешающая ( 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. Установка политики по умолчанию для цепочки
# 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
# iptables -A OUTPUT -o lo -j ACCEPT # iptables -A INPUT -i lo -j ACCEPT
Краткие итоги
- Подсистема netfilter, входящая в состав ядра Linux, используется для фильтрации сетевых пакетов, а также для реализации сложных схем манипуляции сетевыми пакетами, в т.ч. трансляции сетевых адресов ( NAT ). Для управления netfilter используется утилита iptables.
- Сетевые пакеты в подсистеме netfilter проходят последовательность цепочек ( chain ). Каждая цепочка включает заданный набор таблиц, содержащих упорядоченные списки правил. Каждое правило содержит параметры выбора и выполняемое действие при соответствии содержимого пакета параметрам.
- Для фильтрации пакетов, предназначенных данному узлу используются правила таблицы filter цепочки INPUT, для проходящих пакетов — цепочки FORWARD, для пакетов, созданных данным узлом — OUTPUT.
- Для каждой цепочки задается политика для пакетов, не удовлетворяющих ни одному правилу цепочки. При добавлении правил iptables следует учитывать то, что их порядок в цепочке имеет значение. Возможность сетевого взаимодействия с участием данного узла или узлов, трафик которых проходит через данный узел, определяется действием на сетевые пакеты всех цепочек, через которые они проходят.
Упражнения
Используя стенд на основе VirtaulBox, описанный в упражнении "Маршрутизация в Linux" , настроить фильтрацию трафика на маршрутизаторе:
- Разрешить IP-трафик от сети 192.168.0.0/24 к маршрутизатору на интерфейсе eth1 ; весь остальной входящий трафик маршрутизатора на интерфейсе eth1 запретить.
- Разрешить проходящий IP-трафик для сети 192.168.0.0/24; проходящий трафик других сетей запретить.
- Запретить ICMP-трафик от сети 192.168.0.0/24 к сети 192.168.9.0/24.
- Запретить проходящий IP-трафик от сети 192.168.0.0/24 к сети 192.168.10.0/24.
- Запретить 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. самостоятельно.