Базовый брандмауэр HTTP - PullRequest
       6

Базовый брандмауэр HTTP

0 голосов
/ 14 ноября 2009

Я начинаю работу над интеллектуальным брандмауэром, но прежде чем сделать это, мне нужно четко понять, как будет работать базовый брандмауэр. Так как мне и моей команде наиболее комфортно в C, мы будем использовать это.

Может ли кто-нибудь привести пример очень простого брандмауэра, написанного на C.

Ответы [ 2 ]

6 голосов
/ 14 ноября 2009

Разработка правильного брандмауэра не является тривиальной задачей. Вам необходимо полное понимание сетевого стека базовой операционной системы и различных протоколов на всех уровнях модели OSI.

Проект netfilter / iptables , отвечающий за наиболее широко используемое программное обеспечение для фильтрации пакетов для Linux, является открытым исходным кодом и должен предоставить вам хорошее представление о том, что входит в брандмауэр. Это, безусловно, не относится к категории «очень простых», но я бы с осторожностью относился к любому программному обеспечению брандмауэра, которое считается «очень простым».

2 голосов
/ 15 ноября 2009

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

Shorewall является примером такого брандмауэра, но он делает гораздо больше. Он позволяет вам устанавливать различные типы NAT, безопасность вокруг VPN и многое другое.

Похоже, что вы хотите сделать это полностью на C. Я бы порекомендовал получить исходный код для iptables и познакомиться с хуками ioctl, предоставляемыми его аналогом ядра. В этот момент вы сможете начать процесс написания своих собственных оболочек, которые выполняют то, что вам нужно.

NB. Root должен быть пользователем, запускающим ваше приложение, убедитесь, что вы разрабатываете его (или около того).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...