пример работы файерволла на интерфейсном уровне. Если на факультете воткнуться незарегистрированным компьютером в сеть, то выдастся страничка регистрации. Неизвестным адресам дхцп не выдает нормальные ип.
Интерфейсный уровень
мало
Сетевой уровень
Там много интересов сос тороны администратора и разных людей. Развесистая маршрутизация, перенаправление трафика. Или банальная фильрация клиентов по их ип-адресам. Блокировка ботов, подбирающих пароли.
Транспортный уровень
Самая интересная и вкусная область. Это и ограничение на суммарный поток трафиика. Запрет на использование каких-нибудь портов (ограничение пиринговых сетей). Если тцп соединение уже разрешено, то можно научить файерволл не проверять следующие пакеты этого соединения.
Прикладной уровень
Вопрос ограничения, преобразования, журналирования и анализа прикладноготрафик -- веб-страниц, почты, итп. Но это слишком обширная задача. Прикладных протоколов бесконечно много, парсер каждого не напишешь. Пример -- антивирус, вставленный в почтовый сервер.
Как это вообще устроено?
Есть операционная система, в ней есть ядро.
Пакет обрабатывается ип-стеком, и в некоторых местах отдается файерволлу. файервол его пержеёвывает и отдает, или не отдает, или отдает измененный.
Естественно, должна быть пользовательская утилита, которая может загрузить логику в файерволл. Из командной строки или по наступлению события в системе вы дожны куметь можифицировать логику файерволл.
Русский термин -- межсетевой экран. Файерволл же это перевод слова брэндмауэр.
В лекциях по сетям на факультете все еще любят слово брэндмауэр. Лектор предпочитает термин межсетевой экран.
Собственно межсетевой экран это особая организация ядра.
iptables
Особенности реализации файерволла в линуксе:
- есть ядерная часть и пользовательская утилита
- читая документацию по iptables, можно прочитать следующее: такой то фильтр опеределяет наличие такого то поля. Если он есть, вы можете задать реакцию. Если внимательно посмотреть на описания, то можно
- увидеть, что речь идет о пакетах разных уровней. Чтобы не заморачивать пользователю гоолову информацией о том, на каком уровне происходит взаимодействие. То, на каком уровне он будет обрабатываться
- определяется теми условиями, которые для него прописаны. Если бы смешения не было, было бы хуже.
- описание логики выглядит как список правил "условие-действие". Правила просматриваются начиная с первого, и как только условие подходит, выполняется действие. Если правил несколько, то применяется то правило, чьё условие оказалось первым в списке попадающих. first wins. Бывают еще файерволлы организованные по принципу last wins.
- правила объединены в цепочки, и этих цепочек несколько. Для каждой есть действия по умолчанию, которое происходит, если не одно правило не применилось. Имеется комманда перехода на другую цепочку. Есть фиктивные цепочки вида -j nat или -j drop, которые означают указание произвести над пакетом соответствующей действие.
- цепочки бывают разных типов. Предположим у вас всего 50 правил, по 5 штук в каждой цепочке. Разобраться что делают 50 правил в файерволле, если у них нет структуры, надо обладать жесткой фантазией. Поэтому
- авторы ввели два структурирующих начала:
- типы цепочек и типы правил. тип правила должен соответствовать типу цепочки.
- традиционно, когда вы ассматриваете спислок правил они группируются по типам. Понять из этого как происходит обход пакета невозможно. Есть три пути следования пакета:
- когда пакет предназначен для вас
- пакет порожден приложением на вашей машине
- пакет перекладывается из одного интерфейса в другой.
Утилита для обработки iptables называется iptables.
Что с ее помощью можно сделать?
По умолчанию она работает над цепочками.
- -a -- добавить цепочка -r -- заменить цепочка -i -- вставить цепочка -d номер правила цепочка
iptables save которая выдает список всех правил вашего файервола. iptables restore -- загрузить обратно.
contrack
Важный инструмен фв, который позволяет разбираться в тцп соединениях. Уже приводилось, когда он нужен -- один раз определить для тцп соедиения допустимость, и потом пропускать все его пакеты. другое применение -- нат.
helper
возможность глубже порыться в прикладном протоколе.
Вы можете фильтровать пакеты на основе того какой процесс их породил, или какой пользователь их породил.
recent
кэшировать и откладывать недавно произошедшие события. "если человек ндавно заходил вот по таки двум портам, то дать ему доступ по 22 порту". Способ организации простого порт кнокинг.
Не рассказали про шейпинг. Поверьте, он есть.