Использование межсетевого экранаnetfilterдляобеспечения — КиберПедия 

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Использование межсетевого экранаnetfilterдляобеспечения

2022-10-10 18
Использование межсетевого экранаnetfilterдляобеспечения 0.00 из 5.00 0 оценок
Заказать работу

ИСПОЛЬЗОВАНИЕ МЕЖСЕТЕВОГО ЭКРАНАNETFILTERДЛЯОБЕСПЕЧЕНИЯ

СЕТЕВОЙБЕЗОПАСНОСТИВОСLINUX

УЧЕБНОЕПОСОБИЕ

 

 

 

 

 


Содержание

Списокаббревиатур........................................................................... 4

Введение............................................................................................... 5

Раздел1.Общиесведенияо межсетевыхэкранах............................... 7

1.1. Возможностимежсетевыхэкранов............................................. 8

1.2. Краткиесведения окомпьютерныхсетях.................................. 10

1.3. Краткиесведения обОС Linux................................................. 12

Вопросыкразделу1......................................................................... 14

Раздел2.АрхитектурасистемыNetfilter........................................... 15

2.1. Основныекомпоненты системыNetfilter.................................. 15

2.2. Порядокпрохождения пакетоввсистеме Netfilter.................... 17

Вопросыкразделу2......................................................................... 20

Раздел3.Фильтрациянасетевомитранспортномуровнях............. 21

3.1. Общиесведения........................................................................ 21

3.2. Действиявтаблице filter............................................................ 23

3.3. Действиявтаблице mangle........................................................ 24

3.4. Действиявтаблицеnat............................................................... 26

3.5. Действиявтаблицахrawиrawpost............................................. 27

3.6. Пользовательскиецепочки ипереходы.................................... 28

3.7. Универсальныекритерии......................................................... 30

Вопросыкразделу3......................................................................... 33

Раздел4.Отслеживание состояниясоединений.............................. 34

4.1. Работасистемыconntrackисостояния соединений................... 34

4.2. Критериисостояния соединения.............................................. 38

4.3. НаборыIP-адресов................................................................... 40

Вопросыкразделу4......................................................................... 43

Раздел5.Требованиякмежсетевым экранам.................................. 44

5.1. Нормативнаябаза..................................................................... 44

5.2. Профилизащиты и политикибезопасности............................. 47

Вопросыкразделу5......................................................................... 52

Заключение....................................................................................... 53

Списоклитературы.......................................................................... 54


Списокаббревиатур

АСУТП—автоматическаясистемауправлениятехнологическимпро-цессом.

АТС —автоматическаятелефоннаястанция.БД    —базаданных.

ГИС —геоинформационнаясистема.ИБ —информационная безопасность.ИС —информационнаясистема.

ИСПДн —информационная система персональных данных.ЛВС —локальнаявычислительная сеть.

МЭ  —межсетевойэкран.

ОС   —операционнаясистема.

ПО   —программное обеспечение.ПЗ —профильзащиты.

СЗИ —система защиты информации.СПД —сетьпередачиданных.

 

DPI —Deep PacketInspection.

ICMP—Internet Control Message Protocol.MTU—MaximumTransmission Unit.

OSI—Open Systems Interconnection.TCP—Transmission Control Protocol.UDP—UserDatagram Protocol.


Введение

Внастоящеевремя наблюдается рост количестваинформационныхугроз и факторов, приводящих к нестабильному функционированию сетейпередачи данных (СПД). Основными предпосылками к появлению уязви-мостей являются массовость применения и усложнение иерархии вычис-лительных сетей и функциональности сетевых сервисов, увеличение гете-рогенностипрограммных и аппаратныхсредств.

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

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

Настоящее учебное пособие посвящено различным аспектам приме-нениясистемыNetfilterядраОСLinux,обеспечивающейфункциональ-ность межсетевого экрана с отслеживанием состояний соединений и рядомдругих полезных возможностей. В пособии рассмотрены общие сведения осетевомстекеTCP/IPимежсетевыхэкранах,архитектурасистемыNetfilter, методы обеспечения фильтрации пакетов на сетевом и транспорт-ном уровнях, работа механизма отслеживания соединений и возможностифильтрации пакетов на основе этого механизма, а также кратко рассмотре-ны требования, предъявляемые контролирующими государственными ор-ганизациямикмежсетевым экранам.

Учебное пособие содержит 5 разделов и список рекомендуемой лите-ратуры. Каждый раздел сопровождается вопросами для контроля усвоенияизученного материала.


Учебное пособие предназначено для обучающихся по направлениюподготовки10.03.01Информационнаябезопасность,изучающихдисци-плины, связанные с информационной безопасностью и, в частности, с се-тевой безопасностью и современными методами противодействия сетевымугрозам. Освоение изложенного материала требует знания основ информа-тики, компьютерных сетей, операционных систем, а также базовых знанийо структурахданныхи алгоритмах.


Раздел1.

КраткиесведенияобОСLinux

ОС Linux является Unix-подобной операционной системой на базе яд-ра Linux (kernel.org). ОС Linux работает на множестве аппаратных архи-тектур, включая x86/x86_64, ARM, PowerPC и MIPS. ОС Linux доступнапользователям в форме дистрибутивов, которые представляют собой набо-ры ядра, системных программ и прикладных программных пакетов. Дис-трибутивы отличаются друг от друга составом этих наборов, необходимо-стью сборки из исходных кодов, региональной спецификой. Наиболее по-пулярныедистрибутивывнастоящиймомент:LinuxMint,Ubuntu,Debian,ArchLinux.

 

Ядро Linux монолитное, с возможностью загрузки дополнительныхмодулей. Начиная с версии ядра 2.3 поддерживается МЭ Netfilter. Большаячасть административной работы в ОС Linux выполняется в терминале —интерфейсекомандной строки (рис.1.2).

Рисунок1.2.ТерминалвОСLinux


Для установки модулей системы Netfilter в конкретном дистрибутивеОС Linux необходимо воспользоваться пакетным менеджером. В разныхдистрибутивахпакетные менеджеры разные:

- вдистрибутивах,основанныхнаDebian:dpkgиapt(aptitude);

- вдистрибутивахRedHat—rpm;

- вGentoo—Portage;

- вArchLinux—Pacmanит.д.

Справочная система в ОС Linux состоит из множества компонентов, втерминале доступна справка с помощью команд man и info. Например,man iptables позволит вывести краткую справку по утилите iptables(для выходанужнонажать<q>).

Некоторые команды для выполнения требуют прав суперпользователя(root):

$iptables-L

iptablesv1.6.1:can'tinitializeiptablestable`filter':Permissiondenied (youmustberoot)

Вбольшинстведистрибутивовможнозапуститьихспомощьюsudo:

$sudoiptables-L

Если требуется вводить большое количество команд, требующих ад-министративныхпривилегий,можнозапуститькомандныйинтерпретаторсправами root:

$sudobash

Для просмотра сетевых интерфейсов и сетевых настроек можно вос-пользоватьсялибо командойifconfig,либокомандойipaddr:

#ipaddr

1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUN-

KNOWNgroupdefaultqlen1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet127.0.0.1/8scopehostlo

valid_lftforeverpreferred_lftforever

Для просмотра соединений можно воспользоваться командой

netstat:

#netstat-4plunt

ActiveInternetconnections(onlyservers)

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname

tcp000.0.0.0:873 0.0.0.0:*LISTEN4520/rsync

tcp000.0.0.0:26050.0.0.0:*LISTEN4279/bgpd

tcp000.0.0.0:127830.0.0.0:*LISTEN4661/sshd

tcp000.0.0.0:80800.0.0.0:*LISTEN4395/nginx:master

tcp000.0.0.0:100500.0.0.0:*LISTEN1578/zabbix_agentd

udp00109.239.132.98:1230.0.0.0:*4431/ntpd


Для проверки работы МЭ часто бывает необходимо сымитировать об-ращение на заданный IP-адрес и порт. Для этого проще всего использоватьутилиту telnet. Для того, чтобы установить соединение с приложением,слушающимнапорту 8080,на хосте садресом 10.12.0.1:

$telnet10.12.0.18080

Также для этой цели можно использовать утилиту netcat (nc). Го-раздо больше возможностей предоставляет утилита hping3 (в том числевозможностьимитироватьпростыеDoS-атаки).

Для просмотра и изменения некоторых настроек ОС можно использо-вать утилиту sysctl. Например, для того чтобы разрешить на локальномхосте осуществлять транзит пакетов между интерфейсами (что необходимодляработыхоставкачествемаршрутизатора),следуетвыполнитькоманду

#sysctl-wnet.ipv4.ip_forward=1

Дляпросмотразагруженныхмодулейядраможновоспользоватьсякомандойlsmod.Например,длятогочтобыубедиться,чтомодульipt_NETFLOWзагружен,можно выполнитьследующуюкоманду:

# lsmod | grep ipt_ipt_NETFLOW537721

 

 

Вопросыкразделу1

1. Перечислитеосновныевозможностимежсетевыхэкранов.

2. ЧемстекTCP/IPотличается отстекаOSI?

3. ДлячегонужныIP-адреса?Какихтиповонибывают?

4. Длячего нужныMAC-адреса?

5. Чтотакое порт?

6. Длячегонужнатрансляциясетевыхадресов(NAT)?

7. ЧемпротоколUDPотличаетсяотпротоколаTCP?

8. ДлячегонеобходимпротоколICMP?

9. СпомощьюкакойкомандывОСLinuxможноузнать,какиеIP-адресаприсвоены сетевым интерфейсам?

10. КаквОСLinuxразрешитьпропусктранзитноготрафика?


Раздел2.

АрхитектурасистемыNetfilter

Вопросыкразделу2

1. Перечислитеосновныеловушки,используемыеМЭNetfilter.Каконисвязаны стаблицами ицепочками?

2. Чемпользовательскиецепочкиотличаютсяотвстроенных?

3. Естьлиупользовательских цепочекдействиепо умолчанию?

4. ПеречислитеосновныетаблицыМЭNetfilter.

5. ОпишитепорядокпрохожденияпакетовпоцепочкамитаблицамNetfilter.

6. Приведитепримерытерминальныхинетерминальныхдействий.

7. КакиеосновныекомпонентыядравходятвсоставМЭNetfilter?

8. ПоддерживаетлиNetfilterотслеживаниесоединений?

9. Длячегонужныутилитыiptables-saveиiptables-restore?

10. Чтосделаеткоманда“iptables-save|grepPREROUTING”?


Раздел3.

Общиесведения

Основная настройка МЭ осуществляется с помощью утилит iptables иip6tables. В дальнейшем будет рассмотрена в основном функциональностьiptables, так как с точки зрения конфигурирования МЭ отличий не так ужмного. Детальное рассмотрение отличий протоколовIPv4 и IPv6 выходитзарамкинастоящего пособияиможетбытьнайдено вдругих работах.

В общем виде синтаксис команды iptables может быть определен сле-дующимобразом:

iptables[таблица]команда[цепочка[параметры]]

Квадратные скобки означают необязательность компонента, то есть,например, имя таблицы можно не указывать (в этом случае подразумевает-ся работа с таблицей filter). При каждом вызове должна быть задана ко-манда и в зависимости от нее цепочка, с которой необходимо работать, идополнительныепараметры,собственноопределяющиекритерии,дей-ствия и другую необходимую информацию. Команда в сокращенной фор-ме обозначается заглавной буквой (например, -L), но может задаваться и вполной форме (например, --list; обратите внимание на два символа де-фиса).

Дляуказанияименитаблицыиспользуетсяопция-t,например,

-t nat. Вывести список правил можно с помощью команды -L (--list).Следующая команда выводит список правил таблицы filter, поскольку явнотаблицане задается:

#iptables-L

ChainINPUT(policyACCEPT)

target protoptsource destination

 

ChainFORWARD(policyACCEPT)

target protoptsource destination

 

ChainOUTPUT(policyACCEPT)

target protoptsource destination

Здесь и далее «машинным» шрифтом показан ввод в консоли, а сим-вол “#” в приглашении командной строки показывает, что команда выпол-няется с правами администратора системы. В указанном случае можно ви-деть,чтовсецепочки таблицыfilter не содержатправил.

Ключ-n заставляетвыводитьвместосимволическихименхостовIP-адреса,-v—включитьввыводинформациюосчетчиках,а


--linenumbers—пронумероватьправила(номераправилиспользуют-сявдругихкомандах;правиланумеруются с единицы):

#iptables-L-traw-nv--line-numbers

ChainPREROUTING(policyACCEPT2612Gpackets,3028Tbytes)

numpktsbytestargetprotoptinoutsource                                            destination1176G311TCTall--**0.0.0.0/084.130.160.64/27CT

notrack

2205G296TCTall--**0.0.0.0/00.0.0.0/0match-setnotrackdstCTnotrack

310G526GCTtcp--**0.0.0.0/084.130.160.0/21tcp

flags:0x17/0x02CTnotrack

 

ChainOUTPUT(policyACCEPT13Gpackets,28Tbytes)

Numpktsbytestargetprotoptinoutsourcedestination

Команда -A (--append) позволяет добавить новое правило в конецзаданной цепочки в заданной таблице, команда -I (--insert) позволяетвставить правило в заданную цепочку заданной таблицы на заданную но-мером позицию (остальные правила сдвигаются вниз; если же номер не за-дан,правилодобавляетсявначалоцепочки),команда-R (--replace)позволяет заменить правило с заданным номером, -D (--delete) позволя-ет удалить правило либо с заданным номером, либо с заданной специфи-кацией (то есть, например, можно при вызове iptables заменить -A на -D исоответствующее правило будет удалено), команда -F (--flush) удаляетвсе правила из заданной цепочки, либо правила из всех цепочек заданнойтаблицы(если цепочка неуказана).

Команда -S (--list-rules) подобно команде -L выводит списокправил,новформате,пригодномдляиспользованиясутилитойiptables-restore:

#iptables-S-traw

-PPREROUTINGACCEPT

-POUTPUTACCEPT

-A PREROUTING -d 94.230.160.64/27 -m comment --comment "notrackincomingconnectionstonatusers" -jCT--notrack

-APREROUTING-mset--match-setnotrackdst-mcomment

--comment "notrack incoming connections to users with externalip"-jCT --notrack

-A PREROUTING -d 94.230.160.0/21 -p tcp -m tcp --tcp-flagsFIN,SYN,RST,ACKSYN -jCT-notrack

С помощью команды -C (--check) можно проверить, существует липравило с заданной спецификацией в заданной цепочке заданной таблицы.В случае успешности проверки iptables передает ОС код возврата 0 (узнатькод возврата предыдущей команды можно, например, с помощью команды“echo $?”). Команда -Z (--zero) позволяет обнулить счетчики для за-данного по номеру правила, либо для всех правил в цепочке, либо для пра-вилво всехцепочках заданной таблицы.


Для того чтобы задать действие по умолчанию, в базовой таблице ис-пользуется команда -P (--policy). Например, для того чтобы в качестведействия по умолчанию в цепочке INPUT таблицы filter отбрасывать паке-ты,нужновыполнитьследующуюкоманду:

#iptables-PINPUTDROP

Для манипулирования пользовательскими цепочками существуют трикоманды:-N (--new-chain)позволяетсоздатьновуюцепочку,-X(--delete-chain)позволяетудалитьцепочкусзаданнымименем,-E(--rename-chain)позволяетпереименоватьцепочку.Удалитьможнотолько цепочку, не содержащую правил, и на которую нет ссылок из дру-гихцепочек.

 

Действиявтаблицеfilter

Таблица filter предназначена для пропуска или запрета соединений ипакетов, то есть для того, что называется фильтрацией трафика. Настоящаятаблица содержит цепочки INPUT, FORWARD и OUTPUT. Обычными дей-ствиями, которые применяются правилами в указанной таблице, являютсяACCEPT,DROPиREJECT.

В том случае, если пакет надо пропустить (то есть прекратить его об-работкувтекущейбазовойцепочке),применяетсядействиеACCEPT.Вэтом случае пакет в соответствии с алгоритмом обработки пакетов, опи-санным в главе 2, может продолжить свой путь по правилам других базо-выхцепочек вдругихтаблицах:

#iptables-PINPUTDROP

#iptables-AINPUT-s84.103.20.1-jACCEPT

В этом случае приложениям на локальном хосте запрещается полу-чать любые пакеты, кроме тех, которые исходят от хоста 84.103.20.1. Дей-ствие ACCEPT может быть применено и в пользовательской таблице. Вэтом случае пакет точно так же покинет базовую таблицу (что отличаетсяотдействияRETURN,см.далее).

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

#iptables-PINPUTACCEPT

#iptables-AINPUT-s84.103.20.1-jDROP

Здесь приложениям на локальном хосте запрещается получать пакетыотхоста84.103.20.1.Пакетыотлюбых другиххостовнеотбрасываются.

Действие REJECT похоже на DROP, но отличается от него тем, что ис-точникуотброшенногопакетаотправляетсяуведомлениепопротоколуICMPоботказевдоставкепакета.Поумолчаниюоботказесообщается


отправкойICMP-пакетатипа“icmp-port-unreachable”.Принеобхо-димости отправить ICMP-ответ другого типа можно воспользоваться оп-цией --reject-with:

# iptables -A INPUT -s 84.103.20.1 -j REJECT --reject-withicmp-host-prohibited

ДопустимыетипыICMP-ответов:“icmp-net-unreachable”,“icmp-host-unreachable”, “icmp-proto-unreachable”, “icmp-net-prohibited”,“icmp-host-prohibited”.

В случае, если необходимо прервать TCP-соединение средствами про-токола TCP (отправив источнику пакет RST), также следует применить оп-цию--reject-with,носдругим типом ответа:

#iptables-AINPUT-ptcp-s84.103.20.1-jREJECT

--reject-withtcp-reset

В большинстве случаев при необходимости заблокировать трафик отхоста или сети используют действие DROP, так как отсутствие каких-либоответов затрудняет процедуру сканирования хоста или сети, которую мо-жетпроводитьзлоумышленник.

 

Действиявтаблицеmangle

Таблица mangle предназначена для модификации атрибутов пакетов, атакже классификации и маркировки пакетов и соединений. Настоящая таб-лицасодержитцепочкиPREROUTING,INPUT,FORWARD,OUTPUT иPOSTROUTING. Обычными действиями, которые применяются правилами вуказанно таблице, являются TTL (HL для IP6v), TOS, DSCP, TCPMSS, ECN,TCPOPTSTRIP, TPROXY, MARK и CONNMARK. Рассмотрим некоторые из нихподробнее.

Действие TTL позволяет задать значение полю TTL (Time To Live) па-кета. В соответствии с правилами протокола IPv4 на каждом хопе (припрохождении очередного маршрутизатора) значение поля TTL уменьшает-ся на единицу, и при достижении этим значением нуля пакет уничтожает-ся. Широко известен прием, позволяющий отменить уменьшение значенияполя TTL на маршрутизаторе, что приводит к его «прозрачности» для ути-литтипаtraceroute:

#iptables-tmangle-IPREROUTING-jTTL--ttl-inc1

Поддерживаются опции --ttl-set (установить поле TTL в заданноезначение),--ttl-inc(увеличитьзначениеполяназаданнуювеличину)и

--ttl-dec(уменьшить значение поляна заданную величину).

Аналогом действия TTL для IPv6 является действие HL, изменяющеезначение поля HL (Hop Limit). Поддерживаются опции --hl-set (устано-витьполе HLв заданноезначение),--hl-inc(увеличить значениеполя на


заданную величину) и --hl-dec (уменьшить значение поля на заданнуювеличину).

ДействиеDSCPспомощьюопций--set-dscpи--set-dscp-classпозволяет управлять значением поля DS в заголовке IP-пакета, что можетбыть необходимо для управления и классификации трафика с целью под-держки механизмов качества обслуживания (QoS). Действие TOS с опция-ми--set-tos,--and-tos,--or-tos и--xor-tos, посути,аналогичнои позволяет манипулировать всеми битами поля TOS (а не только млад-шими шестью,как действиеDSCP).

ПредусмотренавозможностьманипуляцийсTCP-сегментами.ДляэтогоприменяютсядействияTCPMSS,ECN иTCPOPSTRIP.Спомощьюдействия TCPMSS можно установить значение поля MSS (Maximum Seg-ment Size) в исходящих или транзитных TCP сегментах. В тех случаях, ко-гда по каким-либо причинам ICMP-сообщения о необходимости фрагмен-тации не могут быть доставлены, возникает ситуация, известная как “pathMTU discovery black hole”. Одним из возможных способов в этой ситуацииможетбытьуменьшениемаксимальногоразмераTCP-сегмента:

#iptables-tmangle-IFORWARD-ptcp-jTCPMSS--set-mss1400

либоего«подгонка»подминимальнодопустимыйMTUспомощьюопции

--clamp-mss-to-pmtu:

#iptables-tmangle-IFORWARD-ptcp--tcp-flagsSYN,ACKSYN

-jTCPMSS--clamp-mss-to-pmtu

Действие ECN позволяет обнулить флаги CWR и ECE в TCP-заголовке(и, таким образом, не затрагивает ECN-биты в IP-заголовке), что можетбыть необходимо в редких случаях решения проблем с работой алгоритмауправлениянасыщениемTCP-соединения.

Действие TCPOPTSTRIP позволяет удалить заданные опции из заго-ловкаTCP-пакета,чтотакжеявляетсядостаточноредкоиспользуемойвозможностью.Например,дляудаленияопцииMSSизTCP-сегментов,уходящих схоста,можновыполнитькоманду:

#iptables-tmangle-APOSTROUTING-ptcp-jTCPOPTSTRIP

--strip-optionsmss

Действие MARK позволяет задать специальную отметку пакету (марки-ровку), которая не изменяет сам пакет, но позволяет идентифицироватьпакет в других подсистемах ядра (например, в подсистеме ограниченияскоростисоединений).Спомощьюопций--set-mark,--set-xmark,

--or-mark, --and-mark и --xor-mark можно установить и изменить32-битнуюотметку.ЦелесообразноделатьэтовцепочкеPREROUTING.Отметка действует в пределах сетевого стека локального хоста, то есть неможетбытьпередана на другой хост:

#iptables-tmangle-APREROUTING-d84.130.10.11-ptcp-mtcp

--dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -j MARK --set-xmark0x60/0xffffffff


ДействиеCONNMARKпозволяетпромаркироватьсоединение.Спомо-щьюопций--set-mark,--set-xmark,--or-mark,--and-markи

--xor-markможноустановить32-битнуюотметку.Кромеэтого,можноперенести               отметку из пакета в соединение с помощью опции

--save-markи  выполнить обратное действие с помощью опции

--restore-mark.

ДействиеTPROXYпозволяетобеспечитьподдержкупрозрачногопрок-сирования(дляработыэтогомеханизманеобходимсоответствующийпрокси-сервер, например, squid или nginx). Подробное описание работынастоящего механизмавыходитзарамкинастоящего пособия.

Как было указано в главе 2, правила цепочек таблицы mangle пакетыпроходят раньше, чем правила цепочек таблиц nat и filter, что позволяетиспользовать классификацию соединений и постановку маркеров на паке-ты в правилах этих таблиц (например, для управления трансляцией адре-сов).

 

Действиявтаблицеnat

Таблица nat предназначена для операций трансляции сетевых адресов.НастоящаятаблицасодержитцепочкиPREROUTING,OUTPUT,POSTROUTING. Трансляция сетевых адресов имеет смысл, если выполняет-ся на маршрутизаторе, то есть хосте, имеющем несколько интерфейсов,подключенным к разным сетям, и пропускающим трафик из одной сети вдругую. Обычными действиями, которые применяются правилами в ука-заннойтаблице, являютсяSNAT, MASQUERADE,DNATиREDIRECT.

Действие SNAT позволяет подменять адрес источника в уходящих смаршрутизаторатранзитныхпакетахигарантируетобратнуюзаменувтранзитных пакетах, приходящих в качестве ответов. Его целесообразноприменять в цепочке POSTROUTING. Пусть, например, у маршрутизатораесть два интерфейса: eth0 подключен к локальной сети 192.168.11.0/24 иимеет адрес 192.168.11.1, а eth1 подключен к сети 84.103.100.0/30 и имеетвнешний(глобальномаршрутизируемый)адрес84.103.100.1(тоесть

«смотрит» в Интернет). В этом случае для того, чтобы хосты локальной се-ти имели доступ к Интернету и могли получать ответы от хостов из Ин-тернета,необходимоорганизоватьтрансляциюадресов:

# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source84.103.100.1

С помощью опции -o <имя_интерфейса>можно ограничить дей-ствие правила заданным сетевым интерфейсом. Действие MASQUERADE ра-ботает аналогично действию SNAT, но имеет смысл только в тех случаях,когда адрес на внешнем интерфейсе маршрутизатора не является статиче-ским.


Действие DNAT позволяет подменять адрес назначения в пакетах, при-ходящихнамаршрутизатор,чтоприводит,посути,кпереадресации,или

«пробросу», запросов (в широком смысле), адресованных маршрутизатору,другому хосту. Как правило, «проброс» внутрь локальной сети выполняет-ся только для некоторых портов. Например, если внутри сети работает веб-сервер на порту 8080 хоста 192.168.11.42, который нужно сделать доступ-ным из Интернета, можно организовать трансляцию адресов следующимобразом:

# iptables -t nat -A PREROUTING -d 84.103.100.1 -p tcp --dport8080-jDNAT--to-destination192.168.11.42

При этом, разумеется, нужно удостовериться, что соединения на порт8080 не запрещены в таблице filter и разрешена передача пакетов по ужеустановленными связанным соединениям.

Действие REDIRECT позволяет «перенаправить» соединение на задан-ный портлокальногохоста,тоестьзаменитьномерпортавTCP- илиUDP-пакете и заменить адрес назначения на один из собственных адресов(использоватьадресдругогохоста нельзя). Например,команда

#iptables-tnat-APREROUTING-ieth0-ptcp--dport80-jRE-

DIRECT--to-port8080

перенаправит пакеты, приходящие из локальной сети и имеющие в каче-стве порта назначения 80 (HTTP-запросы), на порт 8080 маршрутизатора,на котором может «слушать» прокси-сервер. При этом также нужно удо-стовериться, что соединения на порты 80 и 8080 не запрещены в таблицеfilter и разрешена передача пакетов по уже установленным и связаннымсоединениям.

 

3.5. Действиявтаблицахrawиrawpost

Таблица raw предназначена для выполнения действий с пакетами допринятия решения об их обработке системой отслеживания соединений(conntrack). В этой таблице критерии, связанные с подсистемой отслежи-ваниясоединений,неработают.НастоящаятаблицасодержитцепочкиPREROUTING,OUTPUT.Обычнымидействиями,которыеприменяютсякпакетам, являются NOTRACK, CT и RAWDNAT. Таблица rawpost предназначе-на для размещения правил изменения адреса источника в обход системыconntrack. НастоящаятаблицасодержитцепочкуPOSTROUTING иедин-ственнымдопустимымдействиемвправилахэтойтаблицыявляетсяRAWSNAT.

Применение действия NOTRACK к пакету приводит к тому, что он пе-рестает отслеживаться системой conntrack, но продолжает свое прохожде-ние по сетевому стеку и правилам в цепочках других таблиц. Например,если требуется запретить отслеживание пакетов (например, чтобы разгру-зитьресурсымаршрутизатора,таккакбезспециальнойаппаратнойпод-


держки система conntrack требует времени центрального процессора и до-полнительных объемов памяти на каждое новое соединение), то применя-ется:

#iptables-traw-APREROUTING-d84.130.160.64/27-jNOTRACK

ДействиеCTпредставляетсобойрасширенныйвариантдействияNOTRACK и позволяет изменять некоторые настройки системы conntrack.Функционально аналогичным действию NOTRACK является действие CT сключом--no-track:

#iptables-traw-APREROUTING-d84.130.160.64/27-jCT

--no-track

С помощью ключа --helper можно подключить к обработке соеди-ненияодинизспециальныхмодулейподдержки(дляпротоколовFTP,SIPи других). С помощью ключа --ctevents можно задать список событий всистеме conntrack, которые будет порождать пакет (как правило, опять же сцельюуменьшенияпотребляемыхвычислительныхресурсов).

Действия RAWDNAT/RAWSNAT позволяют выполнить трансляцию сете-вых адресов и портов без учета состояний соединений, что при большомколичестве соединений (например, на загруженном маршрутизаторе) поз-воляетсущественноэкономитьресурсы.Например,комбинацияправил:

#iptables-traw-APREROUTING-d84.130.100.64-jRAWDNAT

--to-destination10.12.0.0/21

#iptables-trawpost-APOSTROUTING-s10.12.0.0/21-jRAWSNAT

--to-source84.130.100.64

функциональноэквивалентнаследующемуправилу

# iptables -t nat -A POSTROUTING -s 10.12.0.0/21 -j SNAT --to-source84.130.100.64

Однако на практике такой подход применяется редко, так как зача-стую без использования возможностей (критериев), предоставляемых си-стемойотслеживания соединений,обойтисьне получается.

 

Универсальныекритерии

Как уже упоминалось, каждое правило, которое задается с помощьюiptables,содержитодинилинесколькокритериев.Рассмотримодинизприведенныхранеепримеров:

# iptables -A FORWARD -m set --match-set out src -m set --match-setbanlistdst -jDROP

В этом правиле заданы два критерия (объединенных логическим И)для проверки принадлежности адресов источника и назначения различнымспискам адресов: первый критерий “-m set --match-set out src” ивторойкритерий“-mset--match-setbanlistdst”.Подробнеео


списках адресов и критериях проверки на принадлежность спискам адре-сов будет рассказано в разделе 4. Сейчас же рассмотрим несколько крите-риев, которые можносчитатьуниверсальными,тоестькоторыеможноуказывать почти в любых правилах (исключения, разумеется, есть) и кото-рыене требуютподключения дополнительных модулей.

Критерий -p, --protocol уже встречался ранее. Как можно понять,он позволяет указать протокол транспортного уровня (например, tcp, udp,icmp или all).Например,команда

#iptables-AINPUT-ptcp-jACCEPT

добавит правило, разрешающее принимать любые пакеты по протоколуTCP.

Если необходимо разрешить только пакеты, приходящие на опреде-ленный порт, то можно использовать дополнительную опцию рассматри-ваемого критерия —--sport.Команда

#iptables-AINPUT-ptcp--sport5001-jACCEPT

разрешит принимать TCP-пакеты, отправленные с порта номер 5001 неко-торого хоста. Аналогично если необходимо разрешить только пакеты, при-ходящие на определенный порт, то можно использовать дополнительнуюопцию--dport.Команда

#iptables-AINPUT-ptcp--sport5001--dport80-jACCEPT

разрешит обращаться к 80-му порту на локальном хосте только с 5001-гопортана удаленномхосте.

Задать соответствие правила пакетам, имеющим определенный адресисточника, можно с помощью критерия -s, --src. Параметрами критерияявляютсяперечисленныечереззапятую(еслинадозадатьбольшеодного)

IP-адресаилисетивформатеCIDR.Например,команда

# iptables -A INPUT -s 84.130.110.0/24,84.130.3.1 -p tcp --sport5001--dport80 -jACCEPT

разрешит обращаться к 80-му порту на локальном хосте только с 5001-гопортаудаленныххостовизподсети84.130.110.0/24илихоста84.130.3.1.

Задать соответствие правила пакетам, имеющим определенный адресназначения, можно с помощью критерия -d, --dst. Параметрами крите-рия являются перечисленные через запятую (если надо задать больше од-ного)IP-адреса илисети вформатеCIDR.Команда

#iptables-AINPUT-s84.130.110.0/24,84.130.3.1.-d10.12.0.1

-ptcp--sport5001--dport80-jACCEPT

позволитразрешитьобращатьсяк80-мупортуналокальномхостетолькос 5001-го порта удаленных хостов из подсети 84.130.110.0/24 или хоста84.130.3.1, при этом один из интерфейсов локального хоста должен иметьадрес10.12.0.1.


Следует обратить внимание, что выполнение приведенной выше ко-мандыфактическиприведеткдобавлениюдвухправилвцепочкуINPUT:

#iptables-L

ChainINPUT(policyACCEPT)

target protoptsourcedestination

ACCEPT tcp--84.130.110.0/2410.12.0.1tcpspt:5001dpt:80ACCEPT tcp--84.130.3.1                  10.12.0.1tcpspt:5001dpt:80

 

ChainFORWARD(policyACCEPT)

Target protoptsourcedestination

 

ChainOUTPUT(policyACCEPT)

Target protoptsourcedestination

С помощью критерия -i, --in-interface можно ограничить дей-ствиеправилатолькозаданнымвходящимсетевыминтерфейсом.

Например,команда

#iptables-AINPUT-ieth0-s84.130.110.0/24-ptcp--dport80

-jACCEPT

добавит правило, которое сработает только в том случае, когда TCP-пакетна порт 80, исходящий от хостов из подсети 84.130.110.0/24, прибудет наинтерфейс eth0. Настоящий критерий допустимо указывать в правилах, ко-торыедобавляютсявцепочкиPREROUTING,INPUTи FORWARD.

С помощью критерия -o, --out-interface можно ограничить дей-ствие правила только заданным исходящим сетевым интерфейсом. Напри-мер,команда

#iptables-AOUTPUT-oeth1-d84.130.42.0/24-jDROP

запретитлокальнымприложениямотправлятьлюбыепакетыхостамизподсети 84.130.42.0/24 с интерфейса eth1. Этот критерий допустимо указы-ватьвправилах,которыедобавляютсявцепочкиFORWARD,OUTPUT иPOSTROUTING.

Многие критерии (не только универсальные) можно инвертировать,поставивпереднимивосклицательныйзнак.Например,команда

#iptables-AOUTPUT-oeth1!-d84.130.42.0/24-jDROP

запретит локальным приложениям отправлять с интерфейсаeth1 любыепакеты любым хостам, кроме тех, которые входят в подсеть 84.130.42.0/24.Какие критерии поддерживают инвертирование, а какие нет, следует уточ-нятьвдокументации.


Вопросыкразделу3

1. Чемопция-Sкомандыiptablesотличаетсяотопции-L?

2. Запишитекоманду,позволяющуюудалитьчетвертоепосчетупра-вилоизцепочкиPREROUTINGтаблицыraw.

3. Спомощьюкакойкомандыможнозадатьдействиепоумолчанию?

4. ЧемдействиеREJECTотличаетсяот действияDROP?

5. ДлячегоиспользуетсядействиеMARK?Вкакихтаблицахегодопу-стимо использовать?

6. Верноли,чтоспомощьюдействияTPROXYможноосуществлятьпрозрачнуютрансляциюсоединений?

7. ЧемдействиеSNATотличаетсяот действияDNAT?

8. ВкакихтаблицахдопустимоиспользоватьдействиеCT?

9. Длячего нужныпользовательскиецепочкиправил?

10. Какие команды необходимо выполнить, чтобы запретить прило-жениям, работающим на локальном хосте, обращаться в сеть налюбыепорты, кроме 80?

11. Чтосделаеткоманда “iptables -I INPUT -i lo -j ACCEPT”?Какойсмыслвдобавлении этойкоманды вцепочку INPUT?

12. Чтосделаеткоманда“iptables -I INPUT -i eth0 -s192.168.0.0/16 -j DROP”? Какой смысл в добавлении этой ко-мандывцепочкуINPUT?


Раздел4.

Критериисостояниясоединения

Рассмотримиспользованиекритерияconntrackвправилахiptables.Для того, чтобы выделить пакеты, относящиеся к соединению в заданныхсостояниях,используетсяопция--ctstate.Например,команды:

#iptables-FINPUT

#iptables-PINPUTDROP

#iptalbes-AINPUT-ptcp-mconntrack--ctstateESTAB-

LISHED,RELATED-jACCEPT

#iptables-AINPUT-ptcp--dport80-mconntrack--ctstateNEW

-jACCEPT


позволят принимать соединения от клиентов на порт 80 и пропускать паке-ты, относящиеся к установленным и связанным (например, ICMP-ответы судаленногохоста)соединениям,всеостальныепакетыбудутотброшены.

Обратите внимание, что приведенная выше комбинация правил — нетоже самое,что:

#iptables-FINPUT

#iptables-PINPUTDROP

#iptables-AINPUT-ptcp--dport80-jACCEPT

потому что во втором случае как минимум не будет обеспечена возмож-ность нормального обмена по протоколу ICMP. Именно поэтому в боль-шинстве практических случаев администраторы предпочитают в началоцепочки INPUTдобавить:

#iptables-AINPUT-picmp-jACCEPT

Уже упоминавшимся классическим примером, когда необходимо раз-решитьсвязанныесоединения,являетсянастройкаМЭнаFTP-сервере:

#iptables-FINPUT

#iptables-PINPUTDROP

# iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -jACCEPT

#iptables-AINPUT-ptcp--dport21-mconntrack--ctstateNEW

-jACCEPT

В таком случае упоминание RELATED важно для обеспечения нор-мальной работы пассивного режима передачи данных протокола FTP. Вуправляющем соединении от сервера клиенту будет передан номер портадля передачи данных, и при попытке клиента (ожидаемой) установить со-единение на этот новый порт будет создано связанное соединение и пакетыбудут пропущены. Убедиться в том, что обработчик для протокола FTP за-гружен,можноспомощьюкоманды:

# lsmod | grep ftpnf_conntrack_ftp                204800

nf_conntrack 131072 6 xt_conntrack, nf_conntrack_ipv4,nf_conntrack_pptp, nf_conntrack_netlink, nf_conntrack_proto_gre,nf_conntrack_ftp

Еслимодульненайден,егоможнозагрузитьспомощьюкоманды

#modprobenf_conntrack_ftp

Прочие опции текущего критерия (--ctstatus, --ctdir,

--ctorigsrc, --ctorigdst, --ctreplsrc, --ctrepldst, --ctexpireи другие) применяются редко. Например, с помощью опции --ctexpireможно выделить соединения, таймер которых находится в нужном диапа-зоне(время указывается всекундах).Команда:

#iptables-AINPUT-pudp-mconntrack--ctexpire30:100

-jREDIRECT--to-port8090


позволитперенаправитьнапорт8090«задержавшиеся»пакетывпотоке(в рамках соединения, которое будет удалено из таблицы conntrack через30-100 секунд). Применение этой опции имеет смысл в основном для от-ладки сетевых приложений. Для каждого протокола устанавливаются своитаймауты(см.раздел4.1).

 

НаборыIP-адресов

Когда необходимо добавить в цепочку МЭ большое количество одно-типных правил (с одинаковыми критериями), которые отличаются толькокритериями проверки на адреса источников/назначения или порты, имеетсмысл использовать модуль ядра ip_set и критерий -m setдля заменыгруппы правил на одно правило, использующее для проверки набор адре-сов(ipset).

Дляманипулированиянаборамиадресовпредназначенаутилитаipset.

Cеепомощьюможно:

- создатьиудалитьнабор;

- добавитьиудалитьэлементнабора;

- вывестисодержимоенабороввзаданномформате.

Послетогокакнаборысозданыизаполнены,ихможноиспользоватьвправилах, которыезадаются спомощьюкритерия-m setвiptables.

ЧтопредставляетсобойнаборыIP-адресов?Существуетнесколькотипов,которыеотличаютсяметодомпоискаитипомсохраняемыхданных.

Первыйметодпоиска— битовая карта (bitmap), онпредназначендля ускорения проверки вхождения элемента в набор, когда возможныезначенияэлементовпредставляютсобойсплошнойдиапазонзначений.Примером может быть IP-подсеть или диапазон портов. Каждому значе-ниюэлемента соответствуетодинбитбитовойкарты.

Второйметодпоиска— хеш-таблица (hash),он предназначендляускорения проверки вхождения элемента в набор, когда сплошным диапа-зономвозможныезначенияэлементовпредставитьнетвозможности,например, в случае составления набора из непоследовательных IP-адресовиликомбинацийIP-адресаиMAC-адреса.

Рассмотрим использование наборов адресов на конкретном примере, азатем кратко опишем существующие типы. Предположим, что перед ад-министратором локального хоста, работающего в качестве маршрутизато-ра и предоставляющего доступ в Интернет, стоит задача заблокировать об-ращенияхостовЛВСкнекоторымресурсамвИнтернете,заданнымIP-адресами и IP-подсетями. П<


Поделиться с друзьями:

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.216 с.