简介:端口敲门通过关闭SSH端口,服务器监听预设的端口序列,当客户端按正确顺序敲门
后,防火墙规则动态开放SSH端口,仅允许敲门成功的IP访问,阻止未授权访问。端口敲门不仅限于SSH端口,还能实现更多玩法。
1:安装iptables
大部分常见的Linux发行版已经默认安装了,无需额外安装,并且你安装了Docker后也是肯定安装了iptables
。可以运行iptables --version
查看版本。如果没有安装,可以执行这个命令安装:
sudo apt update && sudo apt install iptables -y
2:安装端口敲门程序knockd
sudo apt update && sudo apt install knockd -y
3:配置knockd
knockd
的默认配置文件路径在/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
4:启动knockd
sudo systemctl enable knockd
sudo systemctl start knockd
5:关门
网页访问7001
端口关闭SSH服务,阻止所有IP访问SSH
6:敲门
按顺序网页访问5003
和5001
端口,需要15秒内完成动作,敲门后会自动放行敲门的IP允许连接SSH。
Liunx可以使用wget等命令敲门。
我给的示例配置敲门很轻松,只要能请求端口就能触发敲门,当然你也可以设置复杂一点,比如仅udp,或者成功建立三次握手等等。注意别把自己也关在门外进不来了。
(可选)关闭端口敲门
停止并禁用knockd
sudo systemctl stop knockd
sudo systemctl disable knockd
清除防火墙所有的自定义规则
sudo iptables -F
- 端口敲门不仅限于SSH端口,还能实现更多玩法。
❤️转载请注明出处❤️