Linux с последним 2.4 ядром + iptables
Дальше - смотря какой уровень firewalling требуется.
Если ставить на router-е и защищать всю сетку - то устанавливаешь reject как default policy в цепочке FORWARD, и потихоньку содзаешь разрешающие правила.
Можно содзать цепочки для разных сервисов/серверов и "прыгать" в них из других цепочек.
Можно даже NAT настроить через iptables - но лично я не пробовал.
Источники информации: man iptables
или
www.netfilter.org