使用 knockd 和 shorewall

使用 knockd 和 shorewall

我想将旧的纯 iptables 防火墙配置迁移到 shorewall 设置。我了解基础知识,但无法复制现有的 knockd 设置:

  • 我有一个 '敲击' 打开某些端口(例如端口 22)的链,持续 30 秒(如果多个人同时尝试登录,则 tmpknock 链中同时允许多个 IP!)。
  • 我有一个 '彼尔姆诺克' 链永久打开一些端口(例如 80),但每次只对一个 IP 打开(当下一个 IP 尝试从不同的 IP 敲击时,该 IP 会被替换 - 这使我能够测试一些当前尚未向公众开放的服务)

设置在/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/规则不起作用):

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

...但没有跳跃动作http://shorewall.net/manpages/shorewall-rules.html...

答案1

对此似乎没有一个很好的解决方案(嘘 Shorewall):-/ 似乎有两个选择:

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

相关内容