Как бы я начал писать собственный брандмауэр?


8

Существует слишком мало информации о Google по этому вопросу, кроме людей, задающих этот самый вопрос.

Как бы я начал писать собственный брандмауэр?

Я ищу, чтобы написать один для платформы Windows, но мне также будет интересна эта информация и для других операционных систем.

8

Для Windows 2000/XP есть статья с примерами на CodeProject Developing Firewalls for Windows 2000/XP

для Vista Я думаю, вам нужно будет использовать Windows Filtering Platform


2

Обычный подход заключается в использовании API зацепов. Google может вас научить этому. Просто зацепите все важные сетевые материалы, например connect и listens, и откажитесь от того, что хотите.

  0

API-соединение может быть полезно для так называемого «брандмауэра приложений», но для сетевого брандмауэра вам необходимо работать на уровне стека сетевых драйверов. 21 ноя. 082008-11-21 23:48:06


6

Этот вопрос тревожно похож на тех, кто спрашивает, как написать алгоритм шифрования. Ответы на оба должны закончиться в нежных напоминания о стандартных отраслевых решений, которые уже:

  • воплощают многолетний опыт и постоянное совершенствование,
  • , вероятно, гораздо более безопасным, чем любой доморощенный растворе и
  • счет для вспомогательных требований, таких как эффективность.

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

Создание собственного низкоуровневого межсетевого экрана - отличное упражнение, которое обеспечит образование по многим технологиям. Но для любого реального приложения гораздо безопаснее и умнее создавать оболочку вокруг существующего API брандмауэра. В Windows команда netsh сделает это; Linux использует netfilter и iptables. Попытка любого из них укажет вам на множество теорий, примеров и другую полезную информацию.

Итак, для начала, Я бы подкрался по TCP/IP (в частности, информация заголовка: порты и протоколы), а затем узнайте о различных типах атак и о том, как их обнаружить. Узнайте о каждой интересующей операционной системе и о том, как она взаимодействует с сетевыми стеками. Наконец, подумайте об администрировании и протоколировании: как вы будете настраивать свой брандмауэр и трассировать пакеты через него, чтобы убедиться, что он делает то, что вы хотите?

Удачи вам!