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

В Google есть немногое по этой теме, кроме людей, задающих этот же вопрос.

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

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

20.08.2008 17:25:03
3 ОТВЕТА
РЕШЕНИЕ

Для Windows 2000 / XP есть статья с примерами CodeProject Разработка брандмауэров для Windows 2000 / XP.

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

9
20.08.2008 17:30:31

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

2
20.08.2008 17:30:49
Перехват API может быть полезен для так называемого «брандмауэра приложений», но для сетевого брандмауэра вам необходимо работать на уровне стека сетевых драйверов.
jdigital 21.11.2008 23:48:06

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

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

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

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

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

Удачи!

7
23.11.2008 05:07:59