赞
踩
这几天部署了一些服务,有用到UFW来管理防火墙规则,十分好用,下面大致记录一下其安装及使用方法,方便后续可以快速应用。
UFW,或称Uncomplicated Firewall,是iptables的一个接口,为不熟悉防火墙概念的初学者提供了易于使用的界面,同时支持IPv4和IPv6,广受欢迎。
# apt-get install ufw -y
CentOS默认软件源不提供UFW,所以你需要安装EPEL软件源,运行以下命令:
# yum install epel-release -y
安装完成后使用以下命令安装UFW:
# yum install --enablerepo="epel" ufw -y
UFW安装后,可以通过以下命令来启动UFW服务并使其在启动时启动(一般在完成默认配置后再重启):
# ufw enable
如果运行ufw命令时报Command Not Found
错误,可以使用whereis ufw
来确定ufw的位置,之后你也可以顺手设置一下alias。
接下来,使用以下命令检查UFW的状态,可以看到以下输出:
- # ufw status
- Status: active
还可以通过运行以下命令来禁用UFW防火墙(后面可以通过enable命令随时启用服务):
# ufw disable
如果你决定要重新开始,则可以使用reset命令:
# ufw reset
这将禁用UFW并删除之前定义的任何规则。
最新版的UFW默认启用了IPV6配置,你也可以通过以下命令进行检查,可以看到以下输出:
- # cat /etc/default/ufw | grep -i ipv6
- IPV6=yes
如果输出为IPV6=no
,可以使用vim编辑该文件将其改为yes。
默认情况下,UFW默认策略设置为阻止所有传入流量并允许所有传出流量,你可以使用以下命令来设置自己的默认策略:
- # ufw default allow outgoing
- # ufw default deny incoming
如果现在重启机器(这会儿不要这么做),UFW配置会在重启后生效,它将拒绝所有传入的连接。因为我们没有允许SSH连接,这意味着,重启过后我们将无法远程连接到服务器。如果我们希望服务器响应这些类型的请求,我们就需要明确指定允许传入连接的规则 (例如SSH或HTTP连接)。
要将防火墙配置为允许传入SSH连接,可以使用以下命令:
# ufw allow ssh
这将创建防火墙规则-允许端口22上的所有连接,这是SSH守护程序默认监听的端口,类似的快捷指令还有 ufw allow http
、ufw allow https
。
实际上也可以通过直接指定端口来创建等效规则,下面这条命令将产生相同的结果:
# ufw allow 22
如果你的SSH守护程序配置在其他端口,则需要手动指定相应的端口。
UFW可以基于TCP或UDP协议来过滤数据包,命令如下:
- # ufw allow 80/tcp
- # ufw allow 21/udp
之后使用以下命令检查已添加规则的状态,应该可以看到如下输出:
- # ufw status verbose
- Status: active
- Logging: on (low)
- Default: deny (incoming), allow (outgoing), deny (routed)
- New profiles: skip
- To Action From
- 80/tcp ALLOW IN Anywhere
- 21/udp ALLOW IN Anywhere
- 80/tcp (v6) ALLOW IN Anywhere (v6)
- 21/udp (v6) ALLOW IN Anywhere (v6)
还可以使用以下命令随时拒绝指定端口任何传入和传出的流量:
- # ufw deny 80
- # ufw deny 21
如果要删除HTTP允许的规则,只需在原始规则前加上delete即可,如下所示:
- # ufw delete allow http
- # ufw delete deny 21
也可以按编号删除规则,使用以下命令查看规则及其编号:
- # ufw status numbered
- OutputStatus: active
- To Action From
- -- ------ ----
- [ 1] 22/tcp ALLOW IN Anywhere
- [ 2] 443/tcp ALLOW IN Anywhere
- [ 3] 22/tcp (v6) ALLOW IN Anywhere (v6)
- [ 4] 443/tcp (v6) ALLOW IN Anywhere (v6)
举个例子,要删除允许端口443上的HTTPS连接规则,也就是编号2(注意删除完规则后编号会更新):
# ufw delete 2
在设置完规则后,重启机器即可完成UFW配置。
某些应用程序使用多个端口而不是单个端口,你可能需要使用UFW指定端口范围,指定端口范围时,必须指定规则应适用的协议( tcp或udp )。
例如,要允许使用端口9000-9002范围内的连接,可以使用以下命令:
- # ufw allow 9000:9002/tcp
- # ufw allow 9000:9002/udp
出于某些情况,你可能需要允许/禁用来自特定IP地址的连接,如下:
- # ufw allow from 192.168.29.36
- # ufw deny from 192.168.29.36
还可以在UFW中允许IP地址范围,以下命令将允许从192.168.1.1到192.168.1.254的所有连接:
# ufw allow from 192.168.1.0/24
要允许IP地址192.168.29.36连接特定的端口80,可以运行以下命令:
# ufw allow from 192.168.29.36 to any port 80
进一步的,可以指定TCP/UDP:
# ufw allow from 192.168.29.36 to any port 80 proto tcp
来个复杂点的例子,
- # ufw deny from 192.168.0.4 to any port 22
- # ufw deny from 192.168.0.10 to any port 22
- # ufw allow from 192.168.0.0/24 to any port 22
以上命令将会阻止从192.168.0.4和192.168.0.10访问端口22,但允许所有其他IP访问端口22。
以上大致简述了UFW的基本使用,日常使用基本够用。除此之外,UFW还支持更多的高级特性例如允许与特定网络接口的连接、配置NAT等等,你可以通过查看帮助文档或者搜索引擎了解其他高级命令的使用。
1、How to Install and Use UFW Firewall on Linux
2、如何在Debian 10上使用UFW设置防火墙
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。