Презерватив для Windows

Фленов Михаил

Xakep, номер #068, стр. 068-098-1

horrific@vr-online.ru www.vr-online.ru

Пишем свой собственный Firewall на Delphi

В наше время, когда на каждом углу бродят такие, как ты :), приходится основательно защищать свой комп. Сразу после установки ОС мы натягиваем на нее презерватив в виде файрвола и надеемся на лучшие времена и победу коммунизма. Я не буду рассуждать, какой из файеров лучше, но самый удобный – это тот, что создан собственными руками.

Принцип работы

Что такое файрвол? Это правила, по которым можно пропускать или нет определенные пакеты через сетевую карту. Как же это происходит? Все очень просто, только для начала надо вспомнить сетевую модель OSI (это семь заповедей для любого хакера и программиста сетевых приложений). Чтобы припомнить, что это такое, посмотри на рисунок 1, где слева показаны четыре уровня из модели MS, а справа - 7 справочных уровней. Я уже не раз говорил, что Билли выпендривается и всегда делает не так, как предлагает стандарт, но это сути дела не меняет.

Каждый пакет при отправке формируется на уровне приложения и спускается до уровня сетевого интерфейса. На приемнике происходит обратное: пакет, наоборот, поднимается до уровня приложения (от сетевой карты до программы). Если пытаться реализовать защиту на уровне приложения, то каждая программа должна будет иметь свой файрвол, и нет гарантии, что хакер такое чудо не взломает. Да и защищать каждую программу в отдельности достаточно сильно напрягает. А ведь смысл файрвола - сделать так, чтобы программа вообще не видела запрещенные пакеты или злые компьютеры хакеров.

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

Если проверку сделать после разбора (на уровне приложения), от такой защиты не будет никакого проку.

Он думает о нас…

В Win9x у программиста не было никакой возможности для работы ниже уровня приложений. Из-за этого программерам приходилось выделять пот ведрами, когда они писали сниферы или сетевые экраны (Firewall) (как мы с тобой и выделывались в далеком 2001 :) - прим. Dr). Но начиная с Windows 2000, в наших руках появились отличные функции для создания правил, по которым можно запретить доступ к компьютеру с определенного адреса (группы адресов) или на отдельный порт своей машины.

ЛИТРЕД – СИМБИОЗУ: что значит эта фраза??? Что куда или в чем фильтруется?

Необходимые нам функции спрятаны в сервисе маршрутизации и удаленного доступа, где есть целый раздел Packet Filtering (фильтрация пакетов). Знающие английский язык могут почитать про фильтрацию на сайте MS: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rras/rras/packet_filtering_reference.asp. Информации здесь не так уж и много, но можно найти что-то полезное и интересное.

Содержание  Вперед на стр. 068-098-2
ttfb: 29.881000518799 ms