Этот вопрос тревожно похож на вопрос о том, как написать алгоритм шифрования. Ответы на оба вопроса должны заканчиваться легкими напоминаниями о стандартных отраслевых решениях, которые уже:
- воплощают годы опыта и постоянного совершенствования,
- , вероятно, гораздо более безопасны, чем любое домашнее решение, а
- учитывают вспомогательные требования, такие как эффективность.
Брандмауэр должен эффективно и точно проверять каждый пакет, и поэтому он работает в ядре ОС или в сетевых стеках. Ошибки или неэффективность ставят под угрозу безопасность и производительность всей машины и всех последующих.
Создание собственного низкоуровневого брандмауэра - отличное упражнение, которое обеспечит обучение многим технологиям. Но для любого реального приложения гораздо безопаснее и разумнее построить оболочку на основе существующего API брандмауэра. Под Windows команда netsh
сделает это; Linux использует netfilter
и iptables
. Поиск в Google любого из них укажет вам на теорию, примеры и другую полезную информацию.
Итак, для начала, Я бы освежил TCP / IP (в частности, информацию заголовка: порты и протоколы), затем узнаю о различных типах атак и способах их обнаружения. Узнайте о каждой интересующей операционной системе и о том, как она взаимодействует со стеками сети. Наконец, подумайте об администрировании и ведении журнала: как вы будете настраивать брандмауэр и отслеживать через него пакеты, чтобы убедиться, что он делает то, что вам нужно?
Удачи!