使用knockwall with shorewall

我想将旧的纯iptables防火墙configuration迁移到shorewall设置。 我得到的基础知识,但我一直无法复制我现有的敲门设置:

  • 我有一个“ tmpknock ”链,打开一些端口,例如端口22,持续30秒(如果多个人同时尝试login,则tmpknock链中同时允许多个IP)。
  • 我有一个' permknock '链,永远打开一些端口(比如80),但是一次只能有一个IP(当下一个端口试图从另一个IP端口敲下时 ,这个端口就被replace掉了 ),这就允许我testing一些服务目前不向公众开放)

/etc/knockd.conf中的设置很简单:

[tmpAndPermKnock] sequence = 10000,11000,12000 seq_timeout = 9 tcpflags = syn start_command = /sbin/iptables -I tmpknock -s %IP% -j ACCEPT; /sbin/iptables -F permknock; /sbin/iptables -I permknock -s %IP% -j ACCEPT cmd_timeout = 30 stop_command = /sbin/iptables -D tmpknock -s %IP% -j ACCEPT 

现在我可以很容易地从现有的链条链接到这些链条,例如:

 iptables -A open-in -p tcp --dport 22 -j tmpknock iptables -A open-in -p tcp --dport 80 -j permknock 

我怎样才能将这与一个简单的shorewall设置? 我真的刚刚开始与shorewall,并不知道如何执行跳转到我的锁链。 我想,这将是这样的:

/ etc / shorewall / rules不起作用 ):

 #ACTION SOURCE DEST PROTO DEST JUMP(tmpknock) net fw tcp 22 JUMP(permknock) net fw tcp 80 

…但在http://shorewall.net/manpages/shorewall-rules.html中没有JUMP操作…

这似乎没有一个很好的解决scheme(布沃尔Shorewall): – /似乎有两个select:

  1. 用Perl写一个自定义的Shorewall模块。 有一些关于编写模块来实现敲门的文档,要么使用最近的匹配目标,要么使用手动链 。
  2. 写一个start 扩展脚本 (在Shorewall设置好所有的规则之后运行)来插入跳转规则到INPUT链中的敲击链。