6835

Фильтрация сетевого трафика в iptables

Лабораторная работа

Информатика, кибернетика и программирование

Фильтрация сетевого трафика в iptables В общем случае правила фильтрации могут использовать любые данные заголовков IP (IP-адреса источника и получателя), ICMP (type и code), UDP (порт - источник и порт - получатель), TCP (порт - источник,...

Русский

2013-01-08

79 KB

60 чел.

Фильтрация сетевого трафика в iptables

В общем случае правила фильтрации могут использовать любые данные заголовков IP (IP-адреса источника и получателя), ICMP (type и code), UDP (порт - источник и порт – получатель), TCP (порт – источник, порт-получатель, флаги), MAC (MAC- адрес источника и получателя). Кроме того, правила фильтрации могут учитывать входной и выходной интерфейс обрабатываемого пакета.

Если обрабатываемый пакет удовлетворяет правилу фильтрации, к нему применяется «действие» (передать пакет дальше, сбросить пакет, сбросить пакет и направить источнику пакета icmp-сообщение, записать сигнатуру пакета пакет в Log). Политика фильтрации трафика может иметь строгий (запрещено все, что не разрешено явно) или не строгий характер (разрешено все, что явно не запрещено).

За фильтрацию пакетов в iptables отвечают 3 цепочки правил: INPUT, OUTPUT и FORWARD.  

  •  INPUT – пакеты, предназначающиеся Вашему узлу. То есть входящий трафик. Транзитный трафик сюда не попадает.
  •  FORWARD – пакеты, которые предназначены для другого узла, то есть транзитный трафик.
  •  OUTPUT - пакеты, которые уходят от узла, или исходящий трафик. Транзитный трафик сюда не попадает.

*Для передачи транзитного трафика возможно вам потребуется включить функцию маршрутизации в ядре net.ipv4.ip_forward = 1

(в Linux это делается как echo 1 > /proc/sys/net/ipv4/ip_forward)

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

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

iptables -t ТАБЛИЦА -A ЦЕПОЧКА ПАРАМЕТРЫ_ПАКЕТА -j ДЕЙСТВИЕ

Создание правил

Работают с цепочками так: iptables <опция> <цепочка>

Для работы с цепочками предусмотрены следующие опции:

  •  -A - добавление нового правила в цепочку. Правило будет добавлено в конец цепочки:

iptables -A INPUT --dport 80 -j DROP

iptables -A INPUT --dport 80 -j ACCEPT

  •  -I - добавление правила не в конец цепочки,а туда куда вы укажите. Например, команда iptablesI INPUT 2 bla-bla-bla - сделает данное правило вторым.
  •  -D (-delelte) - удаление правила. Например, для удаления пятого правила введите: iptablesD INPUT 5
  •  -R (-replace) – заменить одно правило другим

iptables -R INPUT 1 -s 193.0.0.193 -j DROP (меняем первое правило в списке)

  •  -F (-flash)- сброс правил (iptablesF INPUT – очистить все правила конкретной цепочки или iptables –F – сброс всех правил).
  •  -N - создание пользовательской цепочки. Если не хотите создавать кашу в каждой цепочке, то создайте несколько дополнительных цепочек. Синтаксис такой: iptablesN ЦЕПОЧКА. Только русские буквы, конечно, использовать нельзя.
  •  -X - удаление пользовательской цепочки.
  •  -L  - просмотр список правил цепочки

Например, iptables L или iptables –L INPUT или iptables -L -n –v, где

-n не транслировать IP-адреса в DNS

-v, –verbose более информативный вывод

–line-numbers вывести нумерацию строк

*Удалить цепочки INPUT, OUTPUT и FORWARD нельзя. Если удалить все правила в такой цепочке, то цепочка окажется пустой.

*Для сохранения и восстановления цепочек правил iptables в инсталяционом пакете обычно имеется 2 скрипта:

iptables-save > /path/to/iptables

iptables-restore < /path/to/iptables

Параметры пакетов

Итак, по каким параметрам можно фильтровать пакеты:

Источник пакета

Для фильтрации по источнику используется опция -s. Например, запретим все входящие пакеты с узла 192.168.133.133:

iptables -A INPUT -s 192.168.133.133 -j DROP

Можно использовать доменное имя для указания адреса хоста, то есть:

iptables -A INPUT -s test.host.jp -j DROP

Также можно указать целую подсеть (т.е. диапазон адресов):

iptables -A INPUT -s 192.168.133.0/24 -j DROP

Вы можете использовать отрицание (знак !). Например, все пакеты с хостов, отличных от 192.168.133.156 будут уничтожаться:

iptables -A INPUT ! -s 192.168.133.156 -j DROP

Адрес назначения

Для этого нужно использовать опцию -d. Например, запретим все исходящие пакеты на хост 192.168.156.156:

iptables -A OUTPUT -d 192.168.156.156 -j DROP

Как и в случае с источником пакета, можно использовать адреса подсети и доменные имена. Отрицание также работает.

Протокол

Опция -p указывает на протокол. Можно использовать all, icmp, tcp, udp или номер протокола (из файла /etc/protocols).

Порт источника

Указывает на порт, с которого был прислан пакет. Синтаксис такой:

iptables -A INPUT -p tcp --sport 80 -j ACCEPT

Для указания порта необходимо указать протокол (tcp или udp). Можно использовать отрицание.

Порт назначения

Порт назначения. Синтаксис: iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Как и в случае с портом источника, нужно указать протокол. Можно использовать отрицание.

Пакеты установления ТСР-соединения

Опция p tcp   --syn дает возможность применять правила только к TCP пакетам с флагом SYN (пакетам установления соединения). Например, с целью запретить устанавливать соединение с некоторым портом. И обратное, опция p tcp ! --syn означает все пакеты, кроме пакетов установления соединения.

Входящий и исходящий интерфейс

Опции i <interface_name> и o <interface_name> позволяют применять правила только к пакетам, поступающим (или отсылаемых) через определенный физический сетевой интерфейс (eth0, eth1, ppp0, ppp1…).

Фильтрация icmp пакетов

Опция p icmpicmp-type <type> позволяет указывать типы icmp- пакетов (наиболее популярные – echo-request и echo-reply).

Действия над пакетами

Правила в цепочке просматриваются последовательно на предмет соответствия текущему обрабатываемому пакету. Если пакет удовлетворяет правилу фильтрации, то к пакету применяется «действие». .Нужно указать, что надо с ним делать. Для этого служит опция -j. Рассмотрим основные действия:

  •  ACCEPT - разрешить пакет (и передать дальше).
  •  DROP - уничтожить пакет.
  •  REJECT - будет отправлено ICMP сообщение «порт недоступен».
  •  LOG - информация об этом пакете будет добавлена в системный журнал Syslog. Пакет при этом продолжает «движение» по цепочке дальше.

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

iptables -A INPUT -s 192.168.200.0/24 -j LOCAL_NET

Т.е. существует возможность создавать пользовательские цепочки, куда будут перенаправляться пакеты (проверка сигнатуры пакета переходит к пользовательской цепочке). Если пакет «пройдет» пользовательскую цепочку до конца и никакое действие над ним не будет выполнено, то он «вернется» в вызвавшую цепочку к следующему правилу.

Пример правил

В большинстве случаев пользователю достаточно выполнить такую последовательность комманд:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -i lo -j ACCEPT

iptables -P INPUT DROP

Примеры простых правил:

Заблокировать все входящие коннекты к 110 порту

iptables -A INPUT -p tcp --dport 110 -j DROP

Заблокировать входящие подключения по 80 порту на адрес 195.0.0.195

iptables -A INPUT -p tcp --dport 80 -d 195.0.0.195 -j DROP

Заблокировать входящие подключения по порту 80 tcp с адреса 193.0.0.193 на адрес 195.0.0.195

iptables -A INPUT -p tcp --dport 80 -s 193.0.0.193 -d 195.0.0.195 -j DROP

Указать входящий интерфейс eth0

iptables -A INPUT -p tcp --dport 80 -s 193.0.0.193 -i eth0 -j DROP

Можно также использовать символ отрицания !

Блокируем все подключения по 80 порту tcp отовсюду кроме сети 192.168.0.0/16

iptables -A INPUT -p tcp 80 -s ! 192.168.0.0/16 -j DROP

Модули

С использованием модулей iptables получит просто безграничные возможности. Для указания модуля используется опция -m. Например:

iptables -A INPUT -m модуль bla-bla

-m owner

Добавляет следующие опции (только для цепочки OUTPUT):

  •  --uid-owner UID - UID программы, пославшей пакет.
  •  --gid-owner GID - GID программы, пославшей пакет.
  •  --pid-owner PID - PID программы, пославшей пакет.
  •  --sid-owner SID - SID (идентификатор сессии; производится проверка SID пакета, значение SID наследуются дочерними процессами от "родителя").
  •  --cmd-owner NAME - имя программы, пославшей пакет.

-m multiport

Позволяет указывать фильтрацию не по одному порту, а сразу несколько:

  •  --source-ports порт1,порт2 - список портов, с которых пришел пакет;
  •  --sports порт1,порт2 - укороченый аналог --source-ports;
  •  --destination-ports порт1,порт2 - список портов назначения;
  •  --dports порт1,порт2 - укороченый аналог --destination-ports;
  •  --ports порт1,порт2 - проверяет как исходящий так и входящий порт пакета.

-m state

Предназначен для указания состояния пакета с помощью опции --state. Доступны следующие типы пакетов:

  •  NEW - пакет устанавливающий новое соединение.
  •  ESTABLISHED - пакет от уже установленного соединения.
  •  RELATED - новый пакет уже установленном соединении.
    •  

-m mac

Проверяет соответствие MAC-адреса в пакете с помощью опции --mac-source, например:

iptables -A INPUT -s 192.168.0.1 -m mac --mac-source 00:65:3F:ED:12:98 -j DROP

Дополнительная информация

Руководство по iptables 1.1.19 (Рус.): http://www.opennet.ru/docs/RUS/iptables/

Часто используемые сетевые порты:

FTP

TCP 20, 21

UUCP

TCP 540

SSH

TCP 22

RTCP

TCP 554

Telnet

TCP 23

MS Exchange

TCP 691

SMTP

TCP 25

MS SQL

TCP 1433, 1434

DNS

TCP,UDP 53

RADIUS

TCP 1645

DHCP

UDP 67,68

L2TP

TCP 1701

TFTP

UDP 69

MS PPTP

TCP 1723

HTTP

TCP 80, 8080

RADIUS

TCP 1812, 1813

Kerberos

TCP 88

NFS

TCP 2049

POP3

TCP 110

Oracle DB

TCP 2483, 2484

NNTP (Usenet)

TCP 119

HTTP Proxy

TCP 3128

NTP

UDP 123

MySQL

TCP 3306

Microsoft RPC

135

Terminal Server

TCP 3389

Службы Windows

135..139

RTP

TCP 5004, 5005

NETBIOS

TCP 137

SIP

5060

SNMP

UDP 161,162

PostgreSQL

TCP 5432

LDAP

TCP 389

X.Window

7000…7010

HTTPS

TCP 443

HTTP Proxy

TCP 8080

Microsoft DS

TCP 445

Webmin

TCP 10000

Kerberos

TCP 464

NetBus

TCP 12345

IKE (ISAKMP)

UDP 500

HalfLife

27015

SYSLOG

UDP 514

BackOrifice

31337

Варианты заданий:

  1.  Узнать, какие сетевые порты открыты на защищаемом хосте и какие программы их используют.

  1.  Запретить доступ к PC из внешних сетей

  1.  Разрешить исходящий ping – трафик.
  2.  Ограничить (запретить) входящий ping-трафик из внешней сети.

  1.  Запретить входящие ТСР- соединения из внешних сетей.

  1.  Запретить установление TELNET- соединения с данным компьютером.
  2.  Запретить SSH-трафик из внешней сети.

  1.  Разрешить пользователям внутренней сети использование почтовых сервисов SMTP и POP3. Запретить остальным использование почтовых сервисов.
  2.  Разрешить почтовому серверу обмен SMTP-трафиком с внешней сетью.
  3.  Запретить POP-трафик с внешними сетями.

  1.  Разрешить для внутренней сети использование FTP-сервера.
  2.  Разрешить всем пользователям внешней сети использование только web- и FTP-серверов.
  3.  Разрешить для внутренней сети использование только web-сервера
  4.  Запретить подключение к 80 порту Web – сервера.
  5.  Разрешить (запретить)  для PC использование только одного web-сервера во внешней сети.
  6.  Разрешить доступ к внешним web-серверам только через proxy-сервер.
  7.  Запретить трафик к определенным web-серверам во внешней сети.

  1.  Разрешите прохождение запросов между DNS-сервером во внутренней сети и внешними DNS-серверами.

  1.  Запретить использование TFTP – сервера с определенного IP -  адреса.
  2.  Разрешить подключение к MySQL – серверу только с определенного адреса.

PAGE  1


 

А также другие работы, которые могут Вас заинтересовать

51110. Исследование переходных характеристик типовых динамических звеньев 96.48 KB
  Для апериодического звена первого порядка графически определить постоянную времени и коэффициент передачи. Теоретические сведения Пусть имеем дифференциальное уравнение динамики звена второго порядка Его можно записать в общем виде 1 Где оператор Лапласа; постоянные времени; коэффициент усиления передаточное число. При сравнении красного и зеленного графиков можно сделать вывод о том что постоянная времени T1 прямо пропорциональна длительности переходного процесса т. чем больше постоянная времени T1 тем дольше идет...
51112. Изучение переходных характеристик типовых динамических звеньев 64.46 KB
  Цель: Изучение переходных характеристик типовых динамических звеньев. Задача: Ознакомиться с программой снятия переходных характеристик. Произвести снятие переходных характеристик для различных значений параметров.
51113. Разработка калькулятора с использованием формы и компонентов Button, Label и TextBox 64.94 KB
  Разработать калькулятор с использованием формы и компонентов Button, Label и TextBox. Сделать проверку вводимых значений, реализовать 4 действия: сложение, умножение, деление, вычитание. Код программы...
51114. Изучение переходных частотных типовых динамических звеньев 63.73 KB
  Сравнить полученные графики с табличными и сделать выводы. Теоретические сведения Частотными характеристиками называются формулы и графики характеризующие реакции звена или системы на синусоидальное входное воздействие в установившемся режиме вынужденные синусоидальные колебания звена. В данном случае имеет место опережение по фазе так как график лежит в первой четверти. Форсирующее звено 2го порядка 1 3000 V К=15 Т1=7 Т2=5 150000 V
51116. Метрологическая надежность средств измерений 427.81 KB
  Метрологической надежностью называют способность СИ сохранять установленное значение метрологических характеристик в течение заданного времени при определенных режимах и условиях эксплуатации.
51117. Исследование частотных характеристик типовых динамических звеньев 24.84 KB
  Цель работы: исследование амплитудных и фазовых частотных характеристик типовых динамических звеньев. Задачи: Ознакомиться с программой для исследования амплитудной частотной АЧХ и фазовой частотной ФЧХ характеристик типовых динамических звеньев. Произвести снятие частотных характеристик для различных значений параметров.