Как мне начать писать свой собственный брандмауэр? - PullRequest
10 голосов
/ 20 августа 2008

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

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

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

Ответы [ 3 ]

9 голосов
/ 20 августа 2008

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

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

7 голосов
/ 23 ноября 2008

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

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

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

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

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

Удачи!

2 голосов
/ 20 августа 2008

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

...