UNИX, весна 2009, 01 лекция (от 25 февраля)
Материал из eSyr's wiki.
- Диктофонная запись: http://esyr.org/lections/audio/uneex_2009_summer/uneex_09_02_25.ogg
Содержание |
[править] Организационные моменты
Для того, чтобы сделать пропуск на ВМиК, нужно сдать Евгению Сыромятникову или Артему Гавриченкову матовую фотографию 3X4 и паспортные данные.
Лектора зовут Георгий Курячий, читает спецкурс кафедры АСВК. Название курса меняется каждый раз. Есть сайт uneex.ru. На сайте есть три направления — наши лекции, семинары по тематике, а также проекты с участниками семинара. Правильно писать «UNИX». Лектор работает в АльтЛинукс «специалистом в области всего». Кроме линукса разговор будет о FreeBSD.
Говорить вслух нужно громко, так устроена аудитория.
[править] Вступление
На этот семестр запланирована довольно сложная тема. Лектор сам не знает, почему он решил ее взять. Наверное, потому что N лет назад, когда читался другой курс, к нему был пристегнут курс «Межсетевые экраны». Человек, прошедший путь аналогичному в прошлом семестре ощущает себя невольно слегка обманутым. TCP/IP закончился, но задач уровня повседневной жизни мы не решаем, кроме разве пинга. Есть зазор между TCP/IP и реальными задачами. Эксплуатация требует TCP/IP.
Этих пользовательских задач чертова прорва. Мы можем вспомнить кусочек по поводу P2P трафика. Если переходить от разговора про реализацию TCP/IP к реализации пользовательских задач, нужно выбрать задачу потолще. Задача, которая часто используется — задача межсетевого экранирования, оно же файрвол. Слово нерусское, используют брандмауэр (специальная стена, препятствующая распространению огня, файрволл — то же самое). Изначально идея была такая, что они препятствуют распространению зловредного огня.
[править] Терминология
Лектор предпочитает термин «Межсетевые экраны» по следующей причине. Этим названием мы снимаем некую мифологию, которая видится в слове «брандмауэр». Препятствуем рапространению «инфернального огня».
[править] Сущности, связанные с экранированием
Нужно начать с того, что четко разделить три категории сущностей, употребляемых, говоря об этом деле. Цели. Нет цели, чтобы плохо ходили пакеты. Задачи. Что мы хотим для этого сделать? Цель — предотвратить вторжение злоумышленников, задача — закрыть определенные порты и пр. Инструменты — что мы используем для решения задач. Берем файрволл и закрываем в нем порты.
Межсетевой экран — это инструмент. Он не является задачей сам для себя. Нет задачи ухудшать качество связи, выбрасывать пакеты, изолировать от Интернета.
[править] Задачи
Бывают задачи равномерного распределения трафика между пользователями, изоляции определенных портов. Даже когда мы говорим про задачу, может быть задача ограничить скорость до 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).
На этом закруглимся. Дальше — межсетевой экран на интерфейсном уровне.
[править] Конспект eSyr
На этот семестр запланирована довольно сложная тема. Лектор сам не знает, почему он её решил рассказывать, наверное потому, что 5 лет назад тоже читался курс TCP/IP в UNIX и к нему был пристёгнут курс про межсетевые экраны. Во-вторыхз, наверное, всякий человек, который изучил TCP/IP примерно тем же способом, что и мы с вами, взял, прошёл, посмотрел, поддержка каких протоколов есть в сисиьтеме, чувствует себя несколько обманутым: вроде всё посмотрели, но никаких задач из тех, которые нвужны в реальной жизни, решать не научились, кроме ряда абстрактных. То есть существует некоторый зазор между .... Этих самых пользовательских задач чсёртова прорва, например, пожно вспомнить про p2p, и если переходить от разговора про tcp/ip к реализации польз. задач, можно выбрать задачу потолще, и общепризнано считается, что достаточно толстой задачей является межсетевое экранирование. Обычно, это также обозначают нерусским словом файрволл или русским брандмауэр. И общая идея у них такова, что они препятствуют распространнию какого-нибудь зловредного огря.
Лектор предпочитает исп. слово межсетевой экран, поск. таким образом снимается некая мифология, которая видится в слове брандмауер: устапновидл фаерволл и таким образом прептствую распространению инфернального огня.
Возвращаясь к межсетевому экранированию.
Здесь происходит спецкурс кафедры АСВК, название которого меняется каждый семестр. Название этого курса --- межсетевые экраны в UNIX, именно в UNIX, а не в Linux, поскольку также будет рассм. FreeBSD.
...
Возвращаясь к межсетевому экранированию. Если речь идёт о задачем МЭ, то лектору кажется, что необх. начть с того, что чтёко разделить на три категории рассм. сузгости:
- Цели. Для его мы исп. МЭ, чего мы хотим добиться. У нас нет задачи, чтобы у польз. плохо ходили пакеты, тем более цели.
- Задачи. Это ответ на вопрос, что мы хотим для этого сделать. Например: частично предотвратить проникн. злоумышленников в сеть, задача: обесп. невозм. подкл. со внеш. IP по опр. портам
- Инструмент. С помощью него решает задача. Например, в linux это iptables.
Почему лектор начал не с сетей, а с этой классич. тройки. Потому что когда речь идёт о МЭ, то в первую очередь идёт о инструменте. Он не является задачей. Нет задачи ухудшать качество связи, выбрасывать пакеты, изолировать от интернета.
Когда говорим о инстр., в первую очередь говорится о задачах, которые можно с его помощтб решать. Например, задачи балансировки трафика, ... .
Когда мы говорим о задачах, мы запросто можем поставить задачу ограничить трафик от какого-то пользователя до 4 килобайтов в час. Чего мы хотели добиться? Например, чтобы он пришёл с большой дубиной просить у нас это исправить.
Если про задачу мы можем предполагать какие-то основные вещи, о цели доаольно туманны, и в целях, которые мы хотим достичь, iptables является частью комплекса, и зачастую даже не позв. решить конкретную пользовательскую задачу без других вещей. ... Курса называется МЭ, а не сетевое администрирование.
Более ого, наверное, будет понятно, о чём будет идти речь прямо сейчас, ... Если мы говорим о МЭ как об инструменте, то что под ним мы олжны подразумевать: есть какие-то сети, и есть компьютер, который между сетями стоит. И чем мы хоитм заняться, так это тем, что возд. на этот траффик, чтобы достичь каких-то польз. задач.
Что такое осёл? Это такая зелёная скотина. eDonkey --- протокол для file sharing, для того, чтобы выкладывать сеть и скачивать из сети что угодно. Так повелось, что в ed сетях лежат оцифрованные фильмы, и поск. протокол симметричный, то если какой польз. заводит такую точку, то к нему сразу на весь траффик приходят польз. со всего интернета.
Возвращаясь к разгвоору о том, что это инстр. Почти всегда речь о том, что есть две сети: страшный ужасный интернета и наша маленькая пушистая розовая сеть. Но это необязательно, поск. бывают ситуации более странные. Просто ситуация Инт-ЛС это наиб. популяр. случай.
Но у нас есть TCP/IP, который имеет четыре уровня, которые тоже немножко сеть.
- Интерфейсный (Eth). На нём есть понятие пакета, есть понятие адр. отпр., адр. получателя и т. д.
- Сетевой (IP). Тут опять же есть те же понятия
- Транспортный (TCP, ...) Всё то же плюс добавляются понятия сеанса и т. д.
- Прикладной. Тут всё очень сильно расползается, но в классич. протоколах, таких, как FTP, HTTP, SMTP тут тоже есть понятие адреса, внутр. поля и так далее.
То есть, на каждом уровне мы имеем дело с сетевым траффиком, котрый модет быть объектом возд. МЭ.
Какое возд. можно причинять этому трафику. Условно это возд. можно разделить на три категории:
- Ограничение. Либо полное, либо урезание (шейпинг)
- Перераспределение. Когда есть выбор, особенно, если компьютер подк. к неск. сетям, куда нарпавить трафик. Или в случае load balancing. И так далее. Хаоактеристики пакета не меняются, меняются только абоненты
- Модификация. Это ситуация, огда мы залезаем грязными ручёнками внутрь пакета и что-то там меняем.
ЗАдача огр. возн. либо когда не давать то, чего не надо, либо разбросать то, чего не хватает.
Задача перенапр. возн., когда нужно изменить маршрут следования пакета.
Задача модиф. возникает в ситуациях, когда нам нужно сделать с самим содержимым.
В ряде случае добавляется задача учёта всего этого безобразия. ЗАдача учёта стоит немного особняком. В пред. трёх случаях мы работаем с самими пакетами, а в случае учёта мы трафик только набл., а работаем с другим: выписываем чек, и так далее.
Наш МЭ должен обл. инструментами по отдаче информации, а инструменты, которые занимаются анализом статистики, они внешние.
Это несколько натянутая классиф, поск. хорошие инструменты включают немножко всего.
Получается такая табличка, которая сама по себе 3 на 4. Тем самым мы расшатываем представление о том, что МЭ это iptables.
режде, чем мы начнём говорить про конкр. инструменты, лектор сразу скажет, про что действ. он будет расск., так жто про понимание фаерволла как полосатой плюшки, которая висит в углу и периодически спрашивает, пускать эту программу в интернет или не пускать. Это означает, что на компьютере установлено ПО, о котором не знает системный администратор, как следствие, система не настроена должным образом на фильтрацию такого контента.
Этот миф развенчать прямо с ходу не удасться, а зочется развенчать миф, что фаерволл это iptables/pf/whatever. Попробуем посмотреть на эту табличку и вообразить себе цели и задачи.
Огр | Перерасп | Модиф | Учёт | ||
Интерф | |||||
Сетевой | |||||
Транспортный | |||||
Прикладной |
Ограничение на инт. уровне. Не пускать варягов. Не так уж много мы выятнуть инф. из трафика, который ходит по eth. Тем не менее, есть ряд витуации, когда это работает. Например, eth-свич. В нём всё время работает политика урезания по mac-адресам. У него есть таблица маков, и когда идёт пакет, он передаёт его только туда, куда нужно, а не всем (как делает хаб)
Перераспределение на инт. уровне. Задача достаточно туманна.
Модификация на инт. уровне. Ситуация та же самая. Учитывая ситуацию, что когда у нас обесп. надёжности.
Что такое варяг? Это когда русичи пригласили варяг, и сказали княжьте нами. Левый человек, короче.
Так уж повелось, что многие задачи инт. уровня можно свести к задачам сетевого уровня. Самый простой способ: использовать vlan. Тогда каждый vlan выглядит как отдельный интерфейс, из которого лезет ip-трафик, с которым можно работать.
На ip-уровне количество задач увеличитвается. Например, фильтрафия по ip достаточно типична. Например, старый bsd-фильтр так и назывался: ip filter, ipf. То есть всякое ограничение привязано к адресации.
Что касается перенапр, то собственно этим маршрутизация и занимается.
Но возможны и более хитрые ситуации, тот же policy, source-based routing. Когда решение о том, куда перкладывать пакет, в зависимости от того, от кого пакет.
Задача огр. возн., потому что на сетевом уровне происх. идентификация. Задача перераспр. возн., поск. мы можем делить людей на категории.
Что касается модиф, то NAT как раз в том числе и подменяет IP.
...
Например, зафильтровать абонента мы можем, но вот чтобы запретить опр. порт , нужно уде оперир. понятиями уровня транспорта. Аналогично при шейпинге: нужно не сделать так, чтобы пакеты плохо ходили, а чтобы он не выжрал трафик.
В TCP есть порт-отправитель, порт-получатель, они идент. конкр. трафик, и уже тут можно управлять отдеьлными потоками. На уровне трансп. часто встреч. огр. по портам и с шейпингом.
Как транспортный уровень связан с портами? Напрямую. Идентификация идёт по ip и порту.
Перераспределение: проброс портов, проксирование. Сущ. разл. задачи. Их слегка больше, чем задач на уровне ip. Поскольку
На прикладном уровне задач примерно столько же, сколько проктоклов прикл. уровня, дажн больше.
Например: хотим из ходящего HTTP-трафика выковырять все неприличные картинки. Это задача слегка нетрадиционная.
Или задача антиспама. Выковырять те письма, про которые пользователь думает, что они ему не нужны.
или когда польз. уст. зашифр. соед. с той стороной, не передаёт конфиденц. информацию. То есть, мы должны
То есть задачи могут быть вполне феерические, или не феерические.
Вообще, идея шифр. это специф. идея модиф., которую, возм., стоит рассм. Поск это инструмент., он, возможно, не имеет прямого отн. к понятию МЭ.
В эту табличку лектор специально не пишет эти названия, возможно, будем писать их по ходу.
Чего лектор не сказал: две вещи
Вещь первая. Чаще всего функции, соотв. функциям МЭ на инртерф. уровне, выполняются аппаратно: мы покупаем железку, возможно даже с линуксом внутри, но работа с eth-фреймами, даже нетривиальная, это свойство свича.
Работа с приложениями выполн. обычно приложениями. Например, контент-фильтрафия, кэширование.... То есть, функции МЖ на прикл. уровне играют приложения.
И только на уровне сетевом и трансп. есть возм. управлять тим безобразием вцелом. Оно слегка ограничено, но обозримо.
Про ipv6 лектор говорить, вероятно, не будет по причине незнакомства лектора с ним в практическом плане.
В след. раз смотрим интерфейсный уровень. К слушателям предложение след.: мы не сможем заниматься всеми уровнями, и от слушателей традиционный розовый слон: придумать какие-то темы, которые интересно было рассм. в рамках данного курса.
Вопрос: что в рамках данного курса хотелось бы услышать: что вписывать в последнюю строку
- tc
- iproute2
- Учёт
- ip rule
- qos, особенно на входящий трафик
- противодействие атакам
- балансировка трафика между несколькими интернетами --- load balancing
- более высокоуровневые системы --- например, shorewall --- язык описания FW
- архитектура разных фаерволлов