Сетевое администрирование в UNIX, 03 лекция (от 01 марта)
Материал из eSyr's wiki.
Продолжим про файерволлы(фв).
В прошлый раз затронули iptables. Сегодня про ipfw. Если обращаться к нашему названию, то macos X изначально имеет ипфв. БЗД лицензия позволяет портировать фв на разные системы, в том числе на виндоус.
В целом это достаточно похожие фаерволы. Пакет проходит правила с первого по последнее. По поводу политики по умолчанию -- она allow. Но iptables -P её задает.
Если вы вдруг знакомы с бейсиком, то ипфв вам будет знаком. Есть правила, у каждого правила есть номер. Если в случае иптаблес мы можем добавлять правила в конец цепочки в начало цепочки, то в ипфв понятия цепочек и таблиц нет, есть одна большая программа, которую проходят все пакеты. Номер задается двумя байтами, последнее 65535. По нстройкам ядра это правило будет либо все блокировать, ллибо все разрешать. В iptables было множестов цепочек и множество таблиц. В чатсности была таблица NAT. И да вида ната -- либо по адресу-источнику, либо по адресу-приёмнику. В случае с другими фв, скажем ипфв или пф там вместо этого есть понятие
- nat
- binat
- rdr
nat -- это по адресу источника. То есть у ваас из внутренней сети происходит преобразование во внешнюю.
binat -- то что в иптаблез делают снат и днат. Когда пакет приходит
1. 10.1.0.0/24 -{4471}> 158.250.10.2 2. 10.1.0.3 <-> 158.250.10.3
,. Если есть правило вида 1 обратные пакеты проходят преобразование автоматически. Редирект это если
10.1.0.4:80 <-> 158.250.10.4:1080
Чаще всего используется для обратной связи. Например есть вебсевер, хочется на него ходить, но целый адрес отдавать не хочется.
В иптаблес есть возможность создавть свои цепочки (-N) и потом на них переходить. Похожая на прооцедурное программирование вещь. В частности есть -j jump, -r return(туда откуда джампали), есть goto -g.были в C, сделали -j A -g B -r -- вернет в -C.
В ипфв есть skipto -- перейти на номер правила такой то. И там и там при желании можно зациклить фаервол. В иптаблес можно написать правило без действия(например оно может считать сколько пакетов и байтов сквозь него прошло, ничего не делая с пакетом). В ипфв вместо этого используется скипту.
Собственно говоря в иптаблес есть цепочки input output. В ипфв есть понятие, что пакет приходит in и out. И соответственно для интерфейса recv, xinit.
В ипфв можно сказать, что пакет пришел через один интерфейс и уходит через второй. То есть можно задать правила которые применятся только к таким пакетам.
Точно также как в иптаблес пакеты не проходят по всем правилам то пакеты которые принимаются локальной машиной у них есть recv, но нет xmit.
Возникает проблема если правил в ипфв много, потому что пакет, прежде чем приянть решение, должен будет пройти все эти правила. В ипфв есть понятие таблицы ип адресов. запр src из тбл 1 разр src из сети 10.1.0.0/24
Вместо правил на каждый из адресов.
пф тоже единый фв, то есть в нем одном есть и бинат и правила фильтрации трафика, но в отличие от ипфв и иптаблес он действует наоборот. В нем срабатывает последнее подошедшее правило.
То есть в предыдущих мы сначала запрещали всем, а потом разрешали некотоым. В пфе наоборот -- попишем что этой сети разрешить, а потом пропишем кому заапртеить.
Пф немного оптимизирует порядок правил для оптимизации обработки. пф знает в какой интерфейс пакет поступил и куда пойдет. Если в правиле нет ни того ни того, правило будет отброшено. Как бы вы ни располагали правило если у вас правило привязано к одномуинтерфейсу а акет работает по другому вы не можете одним правилом которое привязано к интерфейсу два влиять а пакет связанный с интерфейсом один пока он не пройдет преобразование.
Если сравнивать их все три, то в иптейблз за счет изначальной несерьезности гораздо более богатая таблица преобразований. Классическая проблема -- что делать с фтп. фтп работает на 20 и 21 порту. Соответсвенно, есть клиент и сервер. Первое тцп соединение клиент устанавливает на 21 порт и по нему говорит что делать дальше. Поэтому соединени идут основные команды. А вот сервер свои данные, втом числе список файлов посылает.Активное фтп-- клиент сообщает серверу порт.
Проблема.Допусти сервер 10.1.0.10 Включим бинат. В пакете который он передаст клиенту он может сообщить только свой ипишник. Для фтп это было сделано специально чтобы можно было управлять через одну машину а данные получать по другому каналу или вообще с другой машины.
В случае фтп ипфв разбирается сам. Пф с фтп не разбирается и все что можно сделать -- запустить фтп прокси. Фтп прокси это юзер-спейс приложение. Происходит переключение контекста и падение производительности.
Одним из преимуществ таблицы является то что ее можно модифиировать на ходу.
[править] Проксирование
[править] Проксирование веба
[править] Transparent
В самом простом случае просто все пакеты, которы идут на 80ый порт принудительно перенаправляем на дугую машину. Специальный вид проксирования, потому что при обычном сеачнсе работы браузер коннектится к проксе и говорит дай мне то-то и то-то. Тут браузер посылает обычный хттп запрос. Кроме перенаправления надо иметь правило по которума трафи от машины до прокси разрешён иначе после редиректа он будет заблокирован. Плюсы -- ничего не надо настраивать, есть полный контроль за посещаемостью ресурсов. Минусы -- вы можете знать только ип с которого они посещаются. Ссл перехватить бессмысленно и бесполезно. Аська работать не будет, её надо прописывать.
Следующая вещь -- как бы рассказать вашим машинам куда они должны лезть. Вы можете на прокси сказать, что авторизованным пользоватлям разрешать столько то, а другим столько то. В сдлучае транпарент браузер не может передать никакие аутнетификационные данные и соответсвенно нет разделения.
Явно заданый прокси -- есть автризация, но её надо менять вручную на всех машинах если что.
Настройка автоматической прокси сильно отличается в зависимоси от того какой у вас браузер. Есть плохие браузеры, например ие. Он автоматически определяет прокси наиболее небезопасным образом. Первое что делает ие это пытается найти сайт wpad.d1.d2.ru(если он сам на host.d1.d2.ru) потом wpad.d2.ru, wpad.ru, а потом чуть ли не wpad.com. Ещё он лезет в нет биос ищет там машину с таки именем и к ней тоже лезет с "расскажи мне как проксировать".
ФФ использует только локальный днс и обращается к сайту, который так и называется впад. поскольку такого домена у нас нету вы всегда можжете себя в днс сервере прописать зону впад, назначить себя владельцем и отвечать что-нибудь. Если вы не контролируете днс, то пользователи вообще беззащитны(?). Впад.дат файл специального вида application/x-ns-proxy-autoconfig.он состоит из одной функции написанной на языке джаваскрипт.