Knockd 不执行敲击命令

Knockd 不执行敲击命令

我正在尝试设置敲门守护进程,但它似乎没有执行敲门命令。为了调试该问题,我使用了这个简单的配置,该配置是对文档中的示例进行了稍微编辑:

[options]
        logfile = /var/log/knockd.log
[openSSH]
        sequence    = 7000,8000,9000
        seq_timeout = 10
        tcpflags    = syn
        command     = /usr/bin/touch /tmp/knock
[closeSSH]
        sequence    = 9000,8000,7000
        seq_timeout = 10
        tcpflags    = syn
        command     = /usr/bin/rm /tmp/knock

knock -v 192.168.0.2 7000 8000 9000我什至可以证明,通过在非守护进程模式下运行 kockd 并记录输出,knock 正在检测发送的数据包,如下所示sudo knockd -c /etc/knockd.conf -ienp2s0 -Dv > log。文件内容log如下:

config: new section: 'options'
config: log file: /var/log/knockd.log
config: new section: 'openSSH'
config: openSSH: sequence: 7000:tcp,8000:tcp,9000:tcp
config: openSSH: seq_timeout: 10
config: tcp flag: SYN
config: openSSH: start_command: /usr/bin/touch /tmp/knock
config: new section: 'closeSSH'
config: closeSSH: sequence: 9000:tcp,8000:tcp,7000:tcp
config: closeSSH: seq_timeout: 10
config: tcp flag: SYN
config: closeSSH: start_command: /usr/bin/rm /tmp/knock
ethernet interface detected
listening on enp2s0...
-------- snip -------
2024-00-11 13:08:17: tcp: 192.168.0.182:34892 -> 192.168.0.2:7000 74 bytes
2024-00-11 13:08:17: tcp: 192.168.0.182:49042 -> 192.168.0.2:8000 74 bytes
2024-00-11 13:08:17: tcp: 192.168.0.182:47252 -> 192.168.0.2:9000 74 bytes
waiting for child processes...
closing...

并且不会在 中创建任何文件/tmp/knock。我缺少什么?

答案1

重定向命令输出以进行其他日志记录。修改命令以将输出和错误重定向到文件:

[openSSH]
sequence    = 7000,8000,9000
seq_timeout = 10
tcpflags    = syn
command     = /bin/touch /tmp/knock 2>/tmp/knock_error
[closeSSH]
sequence    = 9000,8000,7000
seq_timeout = 10
tcpflags    = syn
command     = /bin/rm /tmp/knock 2>/tmp/knock_error

这样,您就可以检查 的内容了/tmp/knock_error

如果您使用SELinuxAppArmor,它们可能会阻止命令的执行。检查他们的日志或暂时禁用。

还有dmesg& lsof

dmesg触发敲门序列后运行。查找可能与knockd执行的命令相关的任何内核消息、网络错误或警告。

使用lsof并查看是否有任何进程持有该/tmp/knock文件的锁定。这可以帮助您确定文件是否正在创建但未删除,或者是否有任何进程可能使文件保持打开状态。

sudo lsof /tmp/knock

查看系统更新日志以了解可能存在问题的最新更改。

cat /var/log/pacman.log

使用iptables -L -n -v并检查防火墙是否允许指定的敲门序列。

此外,您还可以通过以下方式验证进程状态knockdps aux | grep knockd

您可以安装审计,或者如果您已安装它,则可以检查其日志中的审核事件。

sudo ausearch -m avc -ts recent

您可以使用journalctl来显示最新的日志/详细信息。journalctl -xe

Arch Linux 也可能使用rsyslog.

cat /var/log/syslog

我暂时能想到的就这些了!

相关内容