6835

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

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

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

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

Русский

2013-01-08

79 KB

55 чел.

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


 

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

41446. ДИСОЦІАЦІЯ КИСЛОТ ОСНОВ ТА СОЛЕЙ 932.5 KB
  Основні положенн тeopiї eлeктpoлiтичрoї диcoцiцiї. Cтупiнь eлeктpoлітичнoї диcoцiцiї.Основні положенн тeopiї eлeктpoлiтичнoї диcoцiцiї. Cтупiнь eлeктpoлітичнoї диcoцiцiї.
41447. Суть гідролізу, його види. Складання рівнянь гідролізу різних солей 476.5 KB
  Суть гідролізу його види.Складання рівнянь гідролізу різних солей.Суть гідролізуйого види. Як показано в прикладі розчин став лужним внаслідок гідролізу солі СНзСООNа.
41448. OKИCHO-BIДHOBHI PEAKЦIЇ 764.5 KB
  З змiнoю cтyпeня oкиcнeння eлeмeнтiв якi вxoдять дo cклдy виxiдниx peчoвин т пpoдyктiв peкцiї xiмiчнi peкцiї мoжн пoдiлити н двi гpyпи. Цe peкцiї: пoдвiйнoгo oбмiнy бo витicнeння кoмплeкcoyтвopeння дeякi peкцiї poзклдy peкцiї iзoмepизцiї пoлiмepизцiї coцiцiї тoщo: Дo дpyгoї гpyпи нлeжть peкцiї щo вiдбyвютьcя iз змiнoю cтyпeнiв oкиcнeння eлeмeнтiв peгyючиx peчoвин т пpoдyктiв peкцiї. Tкi peкцiї нзивютьcя oкucнoвiднoвнuмu нпpиклд: У пpoцeci цiєї peкцiї cтyпiнь oкиcнeння Цинкy змiнюєтьcя вiд 0 дo 2 Гiдpoгeнy вiд 1 дo 0....
41449. EЛEKTPOЛIЗ, ЙОГО СУТЬ ТА ЗНАЧЕННЯ 1012 KB
  Суть електролізу Особливості електролізу розплавів та розчинів. Практичне значення електролізу. Суть електролізу Особливості електролізу розплавів та розчинів. : Закони електролізу вперше були сформульовані видатним англійським фізиком М.
41450. ВЛАСТИВОСТІ ГАЛОГЕНІВ. ВОДНЕВІ СПОЛУКИ ГАЛОГЕНІВ 851.5 KB
  Добування і властивості хлору. На відміну від Хлору Брому Йоду й Астату Флуор в усіх своїх сполуках виявляє ступінь окиснення тільки З електронних структур видно що в атомах Хлору Брому Йоду й Астату в зовнішньому електронному шарі є вакантні dорбіталі. πЗв'язок помітно зміцнює молекулу і тому енергія дисоціації молекули хлору СІ2 239кДж моль значно більша ніж молекули фтору F2 1588 кДж моль.
41451. ОКСИГЕНОВМІСНІ СПОЛУКИ ГАЛОГЕНІВ 837 KB
  Оксигеновмiсні сполуки хлору їх особливості.Оксигеновмiсні сполуки хлору їх особливості. Непрямим способом добуто ряд сполук Хлору з Оксигеном але всі вони нестійкі. За температури 25С порівняно стійкими є такі оксигеновмісні сполуки Хлору: СІ2О СlO2 Сl2О6 Сl2O7.
41452. СІРКА. КИСНЕВІ ТА ВОДНЕВІ СПОЛУКИ СІРКИ 877.5 KB
  Оскільки атом Оксигену містить тільки два неспарені електрони він може лише двояко сполучатись у молекули: О О і О О О й утворювати тільки дві алотропні видозміни: кисень та озон.8 Полоній Po 6s26p46d0 0137 843 254 Оксиген та кисень. Кисень проста речовина утворена Оксигеном міститься в атмосферному повітрі у зв'язаному стані Оксиген входить до складу води кварцу силікатів алюмосилікатів сполук тваринного і рослинного походження. Вперше кисень у чистому вигляді добув шведський хімік К.
41453. СІРЧАНА КИСЛОТА, ЇЇ ВЛАСТИВОСТІ, ОДЕРЖАННЯ. СУЛЬФІТИ, СУЛЬФАТИ 764.5 KB
  Biдoмo кiльк cпoлyк Cyльфypy з Oкcигeнoм. Пpктичнe знчeння мють двi з ниx: oкcид cyльфypyIV т oкcид cyльфypyVI. Oкcид cyльфypyIV дoбyвють cплювнням npocтoї peчoвини cipки бo виплювнням пipитy. Oкcид cyльфypylV yтвopюєтьcя ткoж пiд чc пepeбiгy дeякиx мeтлypгiйниx пpoцeciв пiд чc cплювння км'янoro вyгiлля дo cклдy якoгo звжди вxoдить cipк.
41454. НЕМЕТАЛИ V ГРУПИ. АЗОТ. ВОДНЕВІ СПОЛУКИ АЗОТА 672 KB
  Hiтpиди 5eлeмeнтiв I т II гpyп пepioдичнoї cиcтeми кpиcтлiчнi peчoвини дocить ктивнi cпoлyки; вoни лeгкo poзклдютьcя вoдoю з yтвopeнням лyгy й мiкy: Hiтpиди seлeмeнтiв мeтлiчнi cпoлyки. Peгyючи з вoднeм y pзi пpoпycкння eлeктpичнoї icкpи зoт yтвopює дeякy кiлькicть мiкy: Цeй cпociб дoбyвння мiкy бyв зпpoпoнoвний нiмeцьким xiмiкoм Ф. Згiднo з пpинципoм лe Штeльє для yтвopeння мiкy нйcпpиятливiшими бyдyть виcoкий тиcк i низьк тeмпepтyp. Ocкiльки з низькиx тeмпepтyp peкцiя вiдбyвєтьcя пoвiльнo тo для пpиcкopeння пpoцecy cинтeз мiкy вeдyть...