ufw简易防火墙管理工具“食用指南”
前段时间在自己的“吃灰派”上部署了一些服务,用到了ufw来便捷地管理防火墙规则。对于一般安全需求的服务来说,整体的使用体验还不错,所以准备用一篇专栏的篇幅来记录使用方法,方便自己以后随时能快速查阅与应用。
简单介绍一下ufw,全称是Uncomplicated Firewall,是Debian类GNU/Linux发行版默认防火墙工具。相比于直接操作iptabels,ufw工具对不熟悉防火墙概念的初学者更加友好,同时支持IPv4和IPv6。
。。。(  ̄ ︶  ̄ ) ↗ 。。。
以Debian10 GNU/Linux为例,下载和安装ufw,在命令行中执行:
等待ufw及其相关的依赖包下载、安装完成……
安装完成后,可以通过以下命令启动ufw服务,并在服务重启后生效:
且慢,先别着急启动服务,在此之前还得调整现有的防火墙规则。默认情况下,ufw默认策略设置为阻止所有传入流量并允许所有传出流量,效果与以下设置相同:
如果当前重启ufw服务的话(暂且先别这么做),默认规则会在服务重启后生效,防火墙将拒绝所有传入的连接。倘若当前正在使用的是ssh连接,这意味着重启过后将无法远程连接到这台服务器,所以在此之前需要明确指定放行规则 。
允许防火墙传入ssh连接,可以使用以下命令:
如果你已经提前了解到ssh服务默认监听的是22号端口的话,等效命令如下:
如果为了安全考虑,你的ssh服务不再使用默认的端口,则需要手动指定相应的端口
除此之外,ufw服务还可以根据TCP/UDP协议来过滤某个端口的数据包,例如:
与之对应的是,想要过滤某个端口的传入数据包,例如:
现在可以使用以下命令查看当前已设置的规则:
如果需要删除某一个规则,只需要在原始规则之前加上delete就可,或者按照编号删除规则:
什么?不知道当前规则编号,请见上一条第三项灰色注释:
善用帮助命令与文档,能够解决99%的问题:
。。。 ( ¬ ‿ ¬ ) 。。。
下面加深一下难度,
操作特定范围的端口规则:
你甚至还可以设置指定的协议规则:
某些特殊的情况下,需要允许或禁止特定的ip连接服务器的所有端口:
高级一点的还有,对某特定范围的ip进行操作:
允许特定的ip连接特定端口:
进一步可以指定协议:
这些高级规则配置归根结底是一些基本配置命令的组合应用。
再来举一些复杂的例子:
熟悉基础规则的话,只需要将复杂规则拆分就能很好地理解实际作用。
ufw默认启用了IPV6设置,相关的配置文件位于:
查看配置内容,找到IPV6=yes
,如果在平时使用的过程中不需要用到ipv6的规则,可以使用编辑该配置将其改为no,重启服务后生效。
之前有提到一条命令 sudo ufw allow ssh ,让人不解的是ufw是怎么知道ssh服务具体绑定哪些端口的呢?其实一些主流的服务都会有默认绑定的端口,只要这个服务名声在外、用户群体庞大,那么默认端口也就约定俗成了(不服?不服来干  ̄へ ̄ )
ufw内置了一些应用服务配置,无需用户详细了解一些主流服务需要的端口信息,只要用户自己没有修改默认端口配置,就可以快速使用ufw命令进行操作,使用以下命令查看ufw可用的内置应用服务信息:
种类繁多,任君挑选!
另外,在此基础上补充一条常用的规则:
ufw工具的强大之处既在于它的简单易用,也在于操作的灵活性,得到了iptables的真传。
。。。 [ ] ~ (  ̄ ▽  ̄ ) ~ * 。。。
参考文献:https://help.ubuntu.com/community/UFW