вообще, сложность файрволлов в логике правил а не в отдельных правилах.
Я много лет порываюсь регулярно придумать язык описания именно топологии сетей и интерфейсов, что бы потом генерить хоть ipfw хоть pf, а сам язык был именно удобным и работал в бизнес-терминах (DMZ, WAN, открытый LAN, закрытый LAN, сервисы — такое), и каждый раз понимаю, что задача очень нетривиальная и опускаю руки