Фильтрациянасетевомитранспортномуровнях — КиберПедия 

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

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

Фильтрациянасетевомитранспортномуровнях

2022-10-10 12
Фильтрациянасетевомитранспортномуровнях 0.00 из 5.00 0 оценок
Заказать работу

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

Основная настройка МЭ осуществляется с помощью утилит 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

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

 


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

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

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

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

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...



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

0.049 с.