Как бы мне начать писать свой собственный брандмауэр?
-
09-06-2019 - |
Вопрос
В Google практически ничего нет на эту тему, кроме людей, задающих этот самый вопрос.
Как бы мне начать писать свой собственный брандмауэр?
Я собираюсь написать его для платформы Windows, но мне также была бы интересна эта информация и для других операционных систем.
Решение
Для Windows 2000 / XP есть статья с примерами CodeProject Разработка брандмауэров для Windows 2000 / XP
Для Vista, я думаю, вам нужно будет использовать Платформа фильтрации Windows
Другие советы
Этот вопрос пугающе похож на те, которые задают вопрос о том, как написать алгоритм шифрования.Ответы на оба вопроса должны заканчиваться ненавязчивыми напоминаниями о стандартных отраслевых решениях, которые уже:
- воплощение многолетнего опыта и постоянного совершенствования,
- вероятно, они гораздо более безопасны, чем любое домашнее решение, и
- учитывайте вспомогательные требования, такие как эффективность.
Брандмауэр должен проверять каждый передача пакетов эффективна и точна, и поэтому она выполняется в ядре операционной системы или сетевых стеках.Ошибки или неэффективность ставят под угрозу безопасность и производительность всей машины и тех, кто работает ниже по потоку.
Создание собственного низкоуровневого брандмауэра - отличное упражнение, которое позволит получить представление о многих технологиях.Но для любого реального приложения гораздо безопаснее и разумнее создать оболочку вокруг существующего API брандмауэра.Под окнами, в netsh
команда сделает это;Linux использует netfilter
и iptables
.Погуглив любой из них, вы найдете множество теорий, примеров и другой полезной информации.
Итак, для начала, Я бы освежил информацию о TCP / IP (в частности, информацию о заголовке:порты и протоколы), затем узнайте о различных типах атак и о том, как их обнаружить.Узнайте о каждой интересующей вас операционной системе и о том, как она взаимодействует с сетевыми стеками.Наконец, подумайте об администрировании и ведении журнала:как вы настроите свой брандмауэр и будете отслеживать пакеты через него, чтобы убедиться, что он выполняет то, что вы хотите?
Удачи вам!
Обычный подход заключается в использовании перехвата API.Google может научить вас этому.Просто подключайте все важные сетевые материалы, такие как connect
's и listens
- это так, и откажись от того, чего ты хочешь.