下一届世界杯_世界杯揭幕战 - bjshiyanji.com

端口敲门教程,防止端口被扫被爆破的简单方法
2025-07-03 15:13:46

简介端口敲门通过关闭SSH端口,服务器监听预设的端口序列,当客户端按正确顺序敲门后,防火墙规则动态开放SSH端口,仅允许敲门成功的IP访问,阻止未授权访问。

提示: 为了防止把自己关在门外,建议先测试再上生产环境,以下配置我是亲自测试过的能正常运行。

正式开始1:安装iptables大部分常见的Linux发行版已经默认安装了,无需额外安装,并且你安装了Docker后也是肯定安装了iptables。可以运行iptables --version查看版本。如果没有安装,可以执行这个命令安装:

sudo apt update && sudo apt install iptables -y2:安装端口敲门程序knockdsudo apt update && sudo apt install knockd -y3:配置knockdknockd的默认配置文件路径在/etc/knockd.conf

[options]

UseSyslog

logfile = /var/log/knockd.log

# 开启SSH访问 - 只允许敲门的IP访问

[openSSH]

sequence = 5003,5001

seq_timeout = 15

start_command = /sbin/iptables -C INPUT -s %IP% -p tcp --dport 22 -j ACCEPT || /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT

tcpflags = syn

cmd_timeout = 10

# 关闭所有SSH访问 - 阻止所有IP

[closeSSH]

sequence = 7001

seq_timeout = 15

start_command = /sbin/iptables -C INPUT -p tcp --dport 22 -j DROP || /sbin/iptables -I INPUT 1 -p tcp --dport 22 -j DROP && /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT 2>/dev/null

tcpflags = syn

cmd_timeout = 10可以将配置中的syn改成all,代表需要成功建立tcp三次握手才能触发敲门。也可以多增加几个敲门端口,也可以改成仅udp敲门,这样的话会加大触发敲门动作的难度

4:启动knockdsudo systemctl enable knockd

sudo systemctl start knockd5:关门网页访问7001端口关闭SSH服务,阻止所有IP访问SSH可以断开SSH连接,然后重新连接测试一下

6:敲门按顺序网页访问5003和5001端口,即使网页返回无响应也能成功触发敲门,需要15秒内完成动作,敲门后会自动放行敲门的IP允许连接SSH。

Liunx可以使用wget等命令敲门

wget小提示:wget可以快速测试某个端口通不通,不通的话会直接返回拒绝连接

(可选)关闭端口敲门停止并禁用knockd

sudo systemctl stop knockd

sudo systemctl disable knockd清除防火墙所有的自定义规则

sudo iptables -F以上配置可以根据自己需求修改端口敲门不仅限于SSH端口,还能实现更多玩法。