最近重装了手上的一台VPS另作他用,顺便把系统由原来的Debian9换成Debian11。重装后第一件事是马上把SSH的端口从22改为其他端口。结果悲催了,系统重启后SSH连不上。这个新的系统是带了防火墙的,新的SSH端口被白名单制的规则拦截了。所以还要修改防火墙规则让新端口的访问通过。
幸运的是,虽然SSH端口的访问被拦截,由于这台基于KVM的VPS的供应商的控制台可以通过VNC直接操作这台虚拟机,我还是能登录到这台VPS的终端。登录后,马上用iptables添加了一条规则。SSH立马就可以通过新端口访问了。
iptables -A INPUT -p tcp --dport 12345 -j ACCEPT
接下来,想通过iptables save的方式把规则保存下来,不然重启后新的规则就失效了。燃鹅,Debian是和CentOS是不一样的。百度了一下,Ubuntu/Debian系的Linux保存iptables规则的方法是不一样的。简单来说,就是要用iptables-save命令把规则保存为一个文件,然后在/etc/network/if-pre-up.d/添加一个脚本,通过iptables-restore在网卡启动阶段恢复防护墙规则。
当我用iptables-save把防火墙规则保存下来后发现,规则里面有很多ufw开头的规则,这是以前在CentOS里面没见过。又百度了一下,原来Ubuntu/Debian还有一层叫ufw(Uncomplicated FireWall)的防火墙。这东西简化了iptables的设置,是个大大的好用的东西。那如果要放行上面的12345端口要怎么做呢?就一句命令就完事了。
ufw allow 12345
ufw会把结果保存到/etc/ufw/user.rules和/etc/ufw/user6.rules里面。系统重启后依然生效。
官方的帮助文档在这里:http://manpages.ubuntu.com/manpages/trusty/man8/ufw.8.html
文章评论