【Linux使用】之–UFW防火墙篇
#Linux #教程 #手册 #系统 #安全防护 #Ubuntu
Uncomplicated Firewall,简称UFW,是Ubuntu系统上默认的防火墙组件。UFW是为轻量化配置iptables而开发的一款工具。UFW提供一个非常友好的界面用于创建基于IPV4,IPV6的防火墙规则。UFW在 Ubuntu 8.04 LTS 后的所有发行版中默认可用。UFW的图形用户界面叫Gufw。
1. ufw防火墙状态查看及安装
ufw在ubuntu系统下一般是默认已安装,未启用状态。
1.1. 启用ufw
查看ufw服务状态:
service ufw status
查看ufw开启状态:
ufw status
启用:
ufw enable
1.2. 安装ufw
如果未按装,可以使用一下命令进行安装:
apt install ufw -y
UFW安装后,启动UFW服务并使其在启动时启动(一般在完成默认配置后再重启):
ufw enable
ufw status
输出结果:
Status: active
还可以通过运行以下命令来禁用UFW防火墙(后面可以通过enable命令随时启用服务):
ufw disable
2. 配置及使用
UFW配置文件情况
- 默认情况下,ufw的配置文件在
/etc/default/ufw
,然后用户定义的防火墙规则文件会存在/etc/ufw/*.rules
和/lib/ufw/*.rules
。 - 虽然可以通过命令行添加简单的规则,但仍有可能需要添加或删除更高级或特定的规则。 在运行通过终端输入的规则之前,UFW将运行一个文件
before.rules
,它允许回环接口、ping
和DHCP
等服务。要添加或改变这些规则,编辑/etc/ufw/before.rules
这个文件。 同一目录中的before6.rules
文件用于IPv6
。 - 还存在一个
after.rule
和after6.rule
文件,用于添加在 UFW运行你通过命令行输入的规则之后需要添加的任何规则。还有一个配置文件位于/etc/default/ufw
,从此处可以禁用或启用IPv6
,可以设置默认规则,并可以设置UFW以管理内置防火墙链。
2.1. 默认策略
UFW默认策略设置为阻止所有传入流量并允许所有传出流量,日常使用只需要打开部分端口接受传入连接,关闭其他的端口。ufw default
可以用于设置对传入和传出连接的默认设置,然后自己依据使用情况设置自己的规则:
ufw default allow outgoing
ufw default deny incoming
设置完后,UFW配置会在重启后生效,它将拒绝所有传入的连接。ssh也不例外,所以我们需要设置允许ssh连接:
ufw allow ssh
创建防火墙规则默认的22端口上的所有连接,如果已经修改了ssh的登录端口,需要按照下了命令指定开放对应的端口:
ufw allow 22
2.2. 基础使用
2.2.1. 开放端口,允许传入
ufw allow 22
UFW可以基于TCP或UDP协议来过滤对应端口的数据包:
ufw allow 80/tcp
ufw allow 21/udp
2.2.2. 查看状态或修改结果
ufw status verbose
或
ufw show added
有如下输出:
# 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 show added
ufw allow 80/tcp
ufw allow 21/udp
2.2.3. 关闭端口,拒绝传入
ufw deny 80
ufw deny 21
2.2.4. 删除规则
ufw delete allow 500
ufw delete allow http
ufw delete deny 21
也可以按编号删除规则,使用以下命令查看规则及其编号:
ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 80 ALLOW IN Anywhere
[ 2] 443 ALLOW IN Anywhere
[ 3] 25 ALLOW IN Anywhere
[ 4] 2591 ALLOW IN Anywhere
ufw delete 3
2.2.5. 特定端口范围
有些情况需要指定端口范围,但指定端口范围时,必须指定规则协议:
ufw allow 6500:6505/tcp
ufw allow 6600:6602/udp
2.2.6. 特定IP地址规则
允许/禁用来自特定IP地址的连接:
ufw allow from 192.168.0.2
ufw deny from 192.168.0.15
2.2.7. 特定IP地址范围
ufw allow from 192.168.0.0/24
2.2.8. 特定IP地址,特定端口
ufw allow from 192.168.0.2 to any port 22
2.2.9. 指定TCP/UDP协议
ufw allow from 192.168.0.2 to any port 22 proto tcp
2.2.10. 启用日志
sudo ufw logging on
sudo ufw logging off
sudo ufw logging low|medium|high # 指定日志级别日志文件/var/log/ufw.log
日志的格式
其中前面列出了主机防火墙日志的日期、时间、主机名,后面的内容意思是:
[UFW BLOCK]:表示事件描述的开始以及是何种事件。在此例中,它表示阻止了连接。
IN:如果它包含一个值,那么代表该事件是传入事件
OUT:如果它包含一个值,那么代表事件是传出事件
MAC:目的地和源 MAC 地址的组合
SRC:IP数据包的源IP
DST:目的地的IP
LEN:数据包长度
TTL:数据 TTL,或称为time to live。
PROTO:数据包的协议
SPT:数据包的源端口
DPT:目标端口
WINDOW:发送方可以接收的数据包的大小
SYN URGP:指示是否需要三次握手。 0 表示不需要。
2.2.11. 重置防火墙
禁用ufw,并删除所有定义的规则,默认情况下,ufw 会备份规则。
ufw reset
2.2.12. 对IPV6的支持
最新版的UFW默认启用了IPV6配置,你也可以通过以下命令进行检查,可以看到以下输出:
cat /etc/default/ufw | grep -i ipv6
输出结果:
IPV6=yes
如果输出为IPV6=no
,可以使用vim编辑该文件将其改为yes。
高级用法可登录Ubuntu Wiki:UFW - Community Help Wiki
评论区