knock端口敲门服务

端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。

knock安装

apt install knockd

knock配置

$ vim /etc/knockd.conf
[options]
        # UseSyslog
        LogFile = var/knock/knock.log

[openSSH]
        # 定义敲门暗号顺序
        sequence    = 7000,8000,9000
        # 设置超时时间,时间太小可能会出错
        seq_timeout = 30
        # 设置敲门成功后所执行的命令
     # 在ubuntu系统iptables规则默认是禁止所有的规则,如果直接添加规则默认是在drop all规则之后,因此需要先删除drop all的规则再添加所要设置的规则,最后重新添加drop all的规则。
     # command = /sbin/iptables -D INPUT -p tcp --dport 22 -j DROP && /sbin/iptables -A INPUT -s [允许远程的IP] -p tcp --dport 22 -j ACCEPT && /sbin/iptables -A INPUT -p tcp --dport 22 -j DROP
        command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags    = syn

[closeSSH]
        sequence    = 9000,8000,7000
        seq_timeout = 30
        command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags    = syn

[openHTTPS]
        sequence    = 12345,54321,24680,13579
        seq_timeout = 5
        command     = /usr/local/sbin/knock_add -i -c INPUT -p tcp -d 443 -f %IP%
        tcpflags    = syn

启动knock服务

systemctl start knockd

案例

[options]
        UseSyslog

[openSSH]
        sequence    = 14,29,43
        seq_timeout = 15
        command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags    = syn

[closeSSH]
        sequence    = 62,40,46
        seq_timeout = 15
        command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags    = syn

开启与关闭

knock 192.168.1.108 14 29 43   #开启端口
knock 192.168.1.108 62.40.46   #关闭端口

knock -v 192.168.1.104 159:tcp 27391:tcp 4:tcp  #开启远程服务器的端口,具体看服务器knock配置文件

原文地址

https://www.cnblogs.com/f-carey/p/16066178.html

posted @ 2022-11-26 13:45  Cx330Lm  阅读(184)  评论(0编辑  收藏  举报