远程服务器:
我想配置 iptables 来阻止所有传入流量..
但..系统完全启动后4分钟
这样我就可以拥有4 分钟即可通过 SSH 进行连接在
我被锁在门外之前。
实现这一目标的最佳方法是什么?
步骤1可能是:
chkconfig iptables off
什么是第2步 ?
答案1
您可以创建一个在系统启动时运行的脚本,以便它首先休眠 4 分钟,然后执行所需的 iptables 指令。
就像是:
#!/bin/bash
/etc/init.d/iptables stop
sleep 4m
/etc/init.d/iptables start
iptables -P INPUT DROP
为了在系统启动时执行它,请chmod +x yourscript.sh
在 /etc/init.d 下复制具有适当权限 ( ) 的脚本并更新您的 rc,例如:
update-rc.d yourscript.sh defaults 100
答案2
从安全角度来看,最好在运行任何应用程序之前就安装防火墙。
因此,您可能更适合使用knockd
.通过这种方式,您可以设置端口敲门序列,打开ssh
端口并在指定时间后关闭端口。
示例配置可以是:
/etc/knockd.conf
[options]
logfile = /var/log/knockd.log
[opencloseSSH]
sequence = 8081,8082,8083
seq_timeout = 5
tcpflags = syn
start_command = /usr/sbin/iptables -I IN_external_allow -i enp0s8 -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 15
stop_command = /usr/sbin/iptables -D IN_external_allow -i enp0s8 -s %IP% -p tcp --dport 22 -j ACCEPT
如果你想进入,你可以使用类似的东西:
nc -w 1 myhost 8081
nc -w 1 myhost 8082
nc -w 1 myhost 8083
ssh user@myhost
由于我们仅检查数据包,因此没有必要为上述端口设置侦听器syn
。不过,有必要在外部防火墙上打开端口,以便数据包可以到达您的主机。您还可以使用更常见的端口,例如 80,25,443,这些端口很可能已经开放。
根据配置,此序列必须在 5 秒内完成,15 秒后端口将再次关闭。现有会话将保持打开状态,因此可以安全使用。
也可以看看http://www.zeroflux.org/projects/knock有关如何配置此功能的详细信息。