6835

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

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

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

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

Русский

2013-01-08

79 KB

61 чел.

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


 

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

20526. Расчёт полупроводникового выпрямителя 20.5 KB
  Расчёт полупроводникового выпрямителя. Цель работы: Научится элементарному расчету выпрямителя. Наиболее широкое распространение получила схема мостового выпрямителя схема состоит из 4 диодов Д1 Д4. Вторичные обмотки трёхфазного выпрямителя соединены Звездой .
20527. Изучение соединения резисторов 70 KB
  Цель работы: Изучить на практике признаки параллельного и последовательного и смешанного соединение резисторов. Общее сопротивление цепи из нескольких последовательных соединение резисторов равно сумме сопротивлений этих резисторов. Параллельным называется такое соединение проводников при котором соединение между собой как усл. Смешанным или последовательно параллельным называется такое соединение при котором на одних участках электрические цепи они соединены параллельно а на других последовательно.
20528. Проверка закона Ома для участка цепи и всей цепи. Проверка закона Кирхгофа 37.5 KB
  Проверка закона Ома для участка цепи и всей цепи. Цель работы: Практически убедится в физических сущности закона Ома для участка цепи. Как показывают опыты ток на участке цепи прямо пропорционально напряжении на этом участке цепи и обратно пропорционально сопротивлении того же участка это закон Ома Рассмотрим полную цепь: ток в этой цепи определяется по формуле закон Ома для полной цепи.цепи с одной ЭДС прямо пропорционален этой ЭДС и обратно пропорционален сумме сопротивлении внешней и внутренней участков цепи.
20529. Измерение мощности и энергии 44 KB
  [Вт] [Вт] 100 Вт = 1 гектоватт [гВт] 1000 Вт = 1 киловатт [кВт] 1000000 Вт = 1 мегаватт [МВт] Электрическая мощность измеряется ваттметром Электрическая энергия измеряется счетчиком электрической энергии.1 № опыта Данные наблюдений Результаты вычислений U I tc P Wэнер R Pобщ 1 220 07 600 154 924 гВт 3143 704 2 220 11 3600 242 8712 гВт 1222 3 220 14 4900 308 15092 гВт 714 Р=UI=22007 = 154; W1=154600=92400=924 гВт P2=UI2=2201.1 = 242; W2=2423600=871200=8712 гВт P3=UI3=2201.4 =...
20530. Определение удельного сопротивления материалов 56 KB
  Цель работы: Опытным путем определить удельное сопротивление проводниковых материалов. Теоретическое основание: Сопротивление проводника характеризует его способность препятствовать прохождения тока. Для того чтобы при расчетах учесть способность разных проводников проводить ток вводится понятие удельное сопротивление. Удельное сопротивление это сопротивление проводника длиной 1м и поперечное сечение 1 мм2 Сопротивление проводника зависит не только от материала из которого он изготовлен оно зависит и от его размеров длины и поперечного...
20531. Создание и редактирование простейших таблиц в EXEL 91.5 KB
  Интервал или блок ячеек задается адресами левой верхней и правой нижней ячеек разделенных двоеточием например А1:C4; B1:B10. Для выделения блока ячеек можно использовать мышь перемещать при нажатой левой кнопке или клавиши управления курсором при нажатой клавише Shift. Для удобства представления данных в EXСEL применяются различные форматы ячеек числовой денежный научный процент дата и др. Присвоить формат ячейке или блоку ячеек предварительно выделив их можно с помощью команды Ячейки меню Формат или нажав правую кнопку мыши и...
20532. Создание и редактирование различных видов диаграмм в Excel 74 KB
  Диаграмма это графическое представление числовых данных. Ряды данных это наборы значений которые требуется изобразить на диаграмме. Например при построении диаграммы дохода компании за последнее десятилетие рядом данных является набор значений дохода за каждый год. Математический аналог рядов данных это значения функции Y.
20533. Встроенные функции EXCEL. Статистический анализ 101 KB
  Встроенные функции EXCEL. Простейший способ получения полной информации о любой из них заключается в переходе на вкладку Поиск из меню после чего необходимо напечатать имя нужной функции и нажать кнопку Показать. Для удобства функции в EXCEL разбиты по категориям матаматические финансовые статистические и т. Зная к какой категории относится функция справку о ней можно получить следующим образом: Щелкните на закладке Содержание в верхней части окна а затем последовательно пункты Создание формул и проверка книг Функции листа.
20534. Создание, дополнение и чтение файла данных 80 KB
  Создать файл данных со следующей структурой: шифр товара наименование план выпуска на каждый квартал фактический выпуск в каждом квартале. выпуск Факт. выпуск План. выпуск Факт.