UNИX, весна 2009, 01 лекция (от 25 февраля)

Материал из eSyr's wiki.

(Различия между версиями)
Перейти к: навигация, поиск

158.250.19.110 (Обсуждение)
(Новая: Для того, чтобы сделать пропуск на ВМиК, нужно сдать Евгению Сыромятникову или Артему Гавриченкову ма...)
К следующему изменению →

Версия 17:13, 25 февраля 2009

Для того, чтобы сделать пропуск на ВМиК, нужно сдать Евгению Сыромятникову или Артему Гавриченкову матовую фотографию 3X4.

На этот семестр запланирована довольно сложная тема. Лектор сам не знает, почему он решил ее взять. Наверное, потому что N лет назад, когда читался другой курс, к нему был пристегнут курс «Межсетевые экраны». Человек, прошедший путь аналогичному в прошлом семестре ощущает себя невольно слегка обманутым. TCP/IP закончился, но задач уровня повседневной жизни мы не решаем, кроме разве пинга. Есть зазор между TCP/IP и реальными задачами. Эксплуатация требует TCP/IP.

Этих пользовательских задач чертова прорва. Мы можем вспомнить кусочек по поводу P2P трафика. Если переходить от разговора про реализацию TCP/IP к реализации пользовательских задач, нужно выбрать задачу потолще. Задача, которая часто используется — задача межсетевого экранирования, оно же файрвол. Слово нерусское, используют брандмауэр (специальная стена, препятствующая распространению огня, файрволл — то же самое). Изначально идея была такая, что они препятствуют распространению зловредного огня.

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

Возвращаемся к межсетевому экранированию.

Лектора зовут Георгий Курячий, читает спецкурс кафедры АСВК. Название курса меняется каждый раз. Есть сайт uneex.ru. На сайте есть три направления — наши лекции, семинары по тематике, а также проекты с участниками семинара. Правильно писать «UNИX». Лектор работает в АльтЛинукс «специалистом в области всего». Кроме линукса разговор будет о FreeBSD.

Нужно начать с того, что четко разделить три категории сущностей, употребляемых, говоря об этом деле. Цели. Нет цели, чтобы плохо ходили пакеты. Задачи. Что мы хотим для этого сделать? Цель — предотвратить вторжение злоумышленников, задача — закрыть определенные порты и пр. Инструменты — что мы используем для решения задач. Берем файрволл и закрываем в нем порты.

Межсетевой экран — это инструмент. Он не является задачей сам для себя. Нет задачи ухудшать качество связи, выбрасывать пакеты, изолировать от Интернета.

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

Если про задачу еще можно предполагать основные вещи, то цели достаточно туманны. Для любой цели межсетевой экран является одним из инструментов, не всегда он даже решает конкретную задачу. Межсетевые экраны — важная часть, но отнюдь не единственная. Курс называется «Межсетевые экраны», а не «Сетевое администрирование».

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

Лектор забыл сказать, что говорить вслух нужно громко, так устроена аудитория.

4 килобайта в час — для целей глубокого издевательства.

Инструмент. Речь идет о том, что есть две сети, чаще всего ужасный Интернет и розовая пушистая локальная сеть, и есть компьютер между ними. Это наиболее популярный случай, возможны и другие варианты. Есть стек TCP/IP с четырьмя уровнями, которые сами по себе немножко сеть. Аппаратный уровень, интерфейсный уровень (условно Ethernet, с пакетами, отправителями-получателями и пр.), сетевой уровень (IP, тоже с пакетами и прочим), транспортный уровень (добавляются потоки и прочее), прикладной уровень (тоже с какими-то отправителями-получателями).

Какое воздействие мы собираемся причинять трафику? Условно можно разделить воздействие на три категории. Ограничение (либо урезание), перераспределение (когда компьютер подсоединен к нескольким сетям, куда направить трафик, как раскидать пакеты; характеристики не меняются), модификация (грязными ручонками залезаем в пакет и что-то правим, пакет послал не Вася, а Барак Обама). Можно отнестись и по-другому, но задача ограничения возникает, когда нужно не давать то, чего не надо, задача перераспределения — логика передачи, задача модификации — воздействуем на контекст.

Также общая задача учета трафика. Типичный пример — клиент на оплату трафика. Посмотреть, кто выедает больше трафика. Следует понимать, что задача учета стоит особняком и модифицируем данные. Сетевой трафик — объект изучения, а работаем с чем-то другим, выписываем чек или предпринимаем административные действия против человека, пожравшего наш трафик. Учет стоит в стороне. Отдача соответствующей статистики. Инструменты, которые анализируют, занимаются математикой — внешние. Классификация натянутая, потому что инструменты, как правило, включают в себя все элементы. Задача учета стоит особняком, немного по учет разговор тоже будет.

Табличка 3 на 4, сбоку сбор статистики. Расшатываем убеждения людей, которые ставят знак равенства между межсетевым экраном и iptables. Iptables занимает не все клеточки таблицы, а где-то он далеко не главный инструмент.

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

Это должна быть специфичная проприетарщина, про которую известно, что она паленая, лазит в ядро и делает бинарные патчи. Реально в жизни такие ситуации никогда не встречались. Может быть, немного времени осталось до появления. Уже есть SUSE Personal Firewall. Если хватит времени, можно поизучать эту маргинальную часть ПО.

Этот миф развенчать с ходу не удастся. Хочется развенчать миф, что файрволл — это iptables или еще что-то. Посмотрим на табличку и попробуем вообразить цели, с которыми мы будем производить действия.

С какой целью мы будем производить ограничение трафика на интерфейсном уровне? Есть идея, что есть некая сеть, в которую с некоторой вероятностью может влезть варяг со своим MAC-адресом. Нужно ограничить его до ближайшего экрана. В случае, когда мы не прорываемся выше интерфейсного уровня, не так много мы можем узнать о трафике. Тем не менее, достаточно реальная ситуация, когда ограничение работает. Есть свитч, в нем работает политика урезания трафика по MAC-адресу. Он строит табличку передачи, и передает фрейм только туда, где есть получатель. В остальные соски он не передает.

Как вообразить, зачем перераспределять пакеты на интерфейсном уровне? Придумать такую задачу нелегко. Касательно преобразования ситуация примерно та же самая. Перераспределение. Задача выброса пакетов на определенный сосок, чтобы админ подключиться и послушать, что говорят другие машины друг другу.

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

Уровень сети. Тут мы понимаем, что количество возможных задач, которые мы можем решать, увеличивается. Один из самых частых вариантов использования — ограничение по IP-адресу. В старом FreeBSD-файрволе был ipfilter. На этом уровне задача достаточно актуальна. Проблема идентификации (достаточно уникальной) и маршрутизации. По факту идентификации мы можем решить, пропускать человека или нет. Есть стандарт, описанный в RFC, описывающий перенаправление трафика. В зависимости от policy, бывает source-based routing принимается решение на основании адреса отправителя. Пример: бесплатный (дохлый) и платный (хороший) Интернет. По IP-адресу ограничиваем. Делим людей на категории.

Модификация. NAT — модифицируем отправителя пакета. Есть задачи, которые на уровне IP хорошо не решаются. Зафильтровать абонента по адресу мы можем, но если мы запрещаем какой-то сервис, придется ограничивать и порт. Транспортный уровень.

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

Перераспределение. Лектору не очень понятная идея переадресация TCP-соединения. Пример — проброс портов. Проксирование.

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

На прикладном уровне задач примерно столько же, сколько прикладных протоколов, а может, и больше. Невообразимое количество. Пример: хотим вырезать из трафика неприличные картинки. Задача достаточно нетрадиционная. Задача антиспама. Выкроить те письма, про которые пользователь думает, что они ему не нужны. Чтобы пользователь не передавал секретной информации. Или чтобы пользователи не сидели в контакте. IP может меняться, могут использоваться прокси.

Идея шифрования — специфическая идея, которую можно отдельно рассмотреть. Нет прямого отношения к межсетевым экранам.

Тема межсетевых экранов не упирается в отдельно взятый инструмент. Решаются различными способами. Особенно это относится к прикладному уровню, там на каждое приложение свой файрволл. Файрволл уровня 5 (прикладного) может быть просто антиспамом, нужно смотреть, какие приложения поддерживает такой файрволл.

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

Файрволл уровня приложения чаще всего связан с конкретным приложением. Антиспам, антивирус, контент-фильтрация. Функции файрволла играют соответствующие приложения, условно — одно приложение — один файрволл.

На сетевом и транспортном уровне можно работать в целом. TCP, UDP, еще пара-тройка протоколов, еще IP. Разговора про IPv6 не будет ввиду того, что лектор практически не работал.

Аппаратный уровень, его специально не рассматривали, т.к. это — провода.

Первый оборот цикла закончен. На этом лекцию закончим.

От аудитории розовый слон — придумать какие-то темы, которые было бы интересно рассмотреть в рамках этого курса.

tc, iproute2, учет, ip rule, QoS, противодействие атакам, load balancing, shorewall + язык описания файрволл, архитектура файрволлов (TCP/IP).

На этом закруглимся. Дальше — межсетевой экран на интерфейсном уровне.


UNИX, весна 2009


Лекции

01 02 03 04 05 06 07 08 09 11


Календарь

Февраль
25
Март
04 11 18 25
Апрель
01 08 15 22
Май
06


Эта статья является конспектом лекции.

Эта статья ещё не вычитана. Пожалуйста, вычитайте её и исправьте ошибки, если они есть.
Личные инструменты
Разделы