Лабораторная работа 5 НАСТРОЙКА СЕТЕВОГО ЭКРАНА IPTABLES 1 Что такое пакетный фильтр? Пакетный фильтр – это программа, предназначенная для управления передачей пакетов данных между сетевыми узлами. Классы пакетов: 1. пакет предназначен узлу; 2. пакет создан самим узлом; 3. пакет является транзитным (не для нас и не нам). В Linux пакетным фильтром является iptables. Поддержка фильтрации реализована на уровне ядра операционной системы. Фильтрация осуществляется на основе правил, объединяемых в таблицы и цепочки. Правило имеет вид: условие | действие | модификаторы «Условие» задает для каких пакетов будет выполняться «действие». «Модификаторы» – уточняют действие (например задают другой адрес назначения пакета). 2 Таблицы пакетного фильтра iptables В фильтре iptables имеется три таблицы: RAW – содержит правила, используемые для управления логической обработкой пакета; MANGLE - используется для изменения содержимого заголовков пакета; NAT – включает правила, определяющие изменение адресов источника и приемника (трансляция адресов); FILTER задает правила фильтрации пакетов. В таблицах присутствуют стандартные цепочки: INPUT – содержит правила, используемые для обработки пакетов, предназначенных данному узлу; OUTPUT используется для обработки пакетов, генерируемых данным узлом; FORWARD – включает правила, обрабатывающие транзитные пакеты; PREROUTING содержит правила, которые должны быть выполнены до процедуры маршрутизации пакета. POSTROUTING - включает правила, выполняемые над пакетом «на выходе». Просмотр цепочек завершается при нахождении первого подходящего правила или по правилу «по умолчанию». Исключение – цель LOG. 3 RAW MANGLE X X X X PREROUTING POSTROUTING X NAT FILTER OUTPUT FORWARD INPUT Прохождение пакета по таблицам и стандартным цепочкам X X X X X X X X 4 Работа с утилитой iptables Формат вызова команды: iptables –t <table> <операция> [<цепочка> [<условие>] –j <действие> [<модификаторы>]] Операция: L – вывести информацию о таблице; A – добавить правило в конец цепочки; D – удалить указанное правило из цепочки; F – удалить все правила из цепочки; P – задать действие «по умолчанию», применяемое к пакетам, проходящим через цепочку (только для стандартных цепочек); N – создать пользовательскую цепочку Действие: ACCEPT – разрешить прохождение пакета; DROP – запретить прохождение пакета (откинуть пакет); REJECT – запретить прохождение пакета и сообщить об этом LOG – сделать запись в системный журнал о пакете. iptables –t filter –A INPUT –j LOG –log-prefix “filter-input” iptables –t mangle –L 5 Условие формируется из комбинации (например): -s – адрес источника (сеть или узел) -d – адрес получателя (сеть или узел) -p – протокол Модификаторы (которые нам понадобятся): --icmp-type -- тип пакета ICMP; --sport – номер порта, с которого был послан пакет; --dport – номер порта, на который был послан пакет; --to-destination – адрес для замены в поле «получатель» --from-source – адрес для замены в поле «источник» iptables –t filter –A INPUT –s 10.0.16.0/20 -j DROP iptables –t filter –A FORWARD –s 10.0.16.0/20 –d 192.168.0.1 –p tcp –dport 22 –j ACCEPT 6 7 Примеры работы Заблокируем все «проходящие» пакеты: iptables –t filter –P FORWARD DROP Создадим пользовательскую цепочку: iptables –t filter –N MyCHAIN Создадим правила в стандартных цепочках, которые будут использовать нашу новую цепочку: iptables –t filter –A INPUT –s 192.168.20.0/24 –j MyCHAIN iptables –t filter –A OUTPUT –d 192.168.20.0/24 –j MyCHAIN iptables –t filter –A FORWARD –s 192.168.20.0/24 –j MyCHAIN iptables –t filter –A FORWARD –d 192.168.20.0/24 –j MyCHAIN 8 Наша цепочка принимает решения о пакета из сети или в сеть 192.168.20.0/24: iptables –t filter –A MyCHAIN –j DROP В пользовательских цепочках можно использовать цель RETURN, которая завершает просмотр пользовательской цепочки и возвращается на уровень вверх. 9 Сохранение настроек пакетного фильтра Параметры сохраняются в файле /etc/sysconfig/iptables 10 Network address translation Пакет: источник – 192.168.1.1 приемник – 195.190.105.242 Пакет: источник – 195.149.206.244 приемник – 195.190.105.242 Пакет: источник – 192.168.1.1 приемник – 195.190.105.242 Пакет: источник – 192.168.1.1 приемник – 192.168.10.1 11 Network address translation Пакет: источник – 192.168.1.1 приемник – 195.190.105.242 Пакет: источник – 195.149.206.244 приемник – 195.190.105.242 Iptables –t nat –A POSTROUTING –s 192.168.1.1 –j SNAT –to-source 195.149.206.244 –o eth1 12 Network address translation Iptables –t nat –A PREROUTING –d 195.190.105.242 –p tcp –dport 80\ –j DNAT –to-destination 192.168.10.1:8080 –i eth0 Пакет: источник – 192.168.1.1 приемник – 195.190.105.242 Пакет: источник – 192.168.1.1 приемник – 192.168.10.1 13