6835

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

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

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

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

Русский

2013-01-08

79 KB

58 чел.

Фильтрация сетевого трафика в 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


 

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

41953. Требования безопасности. Общие требования безопасности 1.59 MB
  Костромской государственный технологический университет 2011 Цель работы: приобретение навыков самостоятельных действий и поведения студентов направленных на сохранение жизни каждого пострадавшего до прибытия спасательных служб использование любого шанса для его спасения. Первую медицинскую помощь необходимо оказывать до прибытия медицинского персонала или до появления признаков жизни у пострадавшего или до появления признаков наступления биологической смерти трупных пятен окоченения. Наиболее эффективным способом искусственного...
41954. Социальная структура общества. Понятие и виды социальных групп 16.25 KB
  Социальная структура общества – это определенная форма устойчивых связей и отношений, обусловливающих создание социальных групп и институтов. Можно сказать, что социальная структура формирует стабильность и устойчивость общества. Согласно одному из множества определений, социальная структура представляет собой устойчивую связь элементов в социальной системе.
41957. IBM 196.71 KB
  1 Генеральный деректор IBM 1. История 1888 1924: основание IBM В 1890 году на территории США проходила перепись населения. 1930е 1940е годы В годы Великой депрессии удержаться на плаву IBM помогли только многомиллионные доходы.
41958. Вивчення елементів середовища СУБД MS Access 195.98 KB
  До складу системного меню СУБД MS ccess входять: рядок заголовка рядок панелі інструментів рядок стану елементи середовища СУБД. Вікно СУБД ccess систематизовані об'єкти БД таблиці запити форми звіти макроси та модулі об'єкти БД. Описання виконаної роботи: Головне вікно ccess має вигляд: Для створення нової бази даних у СУБД MS ccess існують такі способи: 1 у ході запуску ccess без застосування майстра; 2 у ході запуску ccess із застосуванням майстра; 3 з меню Файл у вже запущеному ccess; 4 з...
41959. Проектування бази даних реляційного типу 213.18 KB
  Вивчення порядку методів та засобів інформаційного моделювання предметної області створення таблиць бази даних проектування логічної структури реляційної бази даних нормалізації баз даних. Теоретична частина: Реляційна база даних це множини взаємопов'язаних відношень які зберігають значення інформаційних показників деякої сукупності об'єктів реального світу. Частина реального світу що відображається у базі даних називається предметною областю.
41960. Проектування запитів до бази даних 603.51 KB
  Вивчення засобів розроблення запитів RQBE виглядів запитів їх виконання та застосування для роботи з реляційними базами даних. Теоретична частина: Запити застосовуються користувачем для вибірки з бази даних інформації яка його цікавить тобто відповідає певним критеріям. Якщо необхідно скласти запит на підставі декількох таблиць то між цими таблицями попередньо необхідно встановити відношення зв'язуючи поля одне з одним.
41961. Проектування засобів введення та редагування даних 334.34 KB
  Теоретична частина: Форма один з об'єктів баз даних. Форма це бланк що підлягає заповненню або маска що накладається на набір даних. Існують такі види екранних форм: стовпцева рядкова таблична вільна таблична діаграмна субформа.