UFW,全称 Uncomplicated Firewall,是通过 iptables 实现的防火墙工具。ufw 是对 iptables 的封装,iptables 的规则太过于复杂,不适合新手。这篇文章也是如何增强VPS安全性的扩展篇,在修改了SSH端口,登录用户之后,最好清楚自己开放了VPS的哪些端口访问,把他们用 ufw 管理起来,防止被滥用。
安装
Ubuntu 默认已经安装如果没有安装,使用一行命令即可:
sudo apt update && sudo apt install ufw
配置及使用
默认情况下,ufw 的配置文件在 /etc/default/ufw
,然后用户定义的防火墙规则文件会存在 /etc/ufw/*.rules
和 /lib/ufw/*.rules
。
UFW 默认允许所哟出站连接,拒绝所有入站连接
sudo ufw default deny incoming
sudo ufw default allow outgoing
允许管理IPv6
sudo vim /etc/defaulf/ufw
然后修改
IPV6=yes
允许SSH连接
sudo ufw allow ssh
# 等价于
sudo ufw allow 22
如果修改了SSH连接端口,记住相应的允许端口连接。
允许HTTP/HTTPS
sudo ufw allow http
# 等价于
sudo ufw allow 80
sudo ufw allow https
sudo ufw allow 443
默认情况下 ufw allow 不加 in
是指允许入站连接,如果要允许出站,加上 out
sudo ufw allow in port
sudo ufw allow out port
允许指定端口的协议
sudo ufw allow ftp
# 等价于
sudo ufw allow 21/tcp
允许指定范围的端口连接和协议
sudo ufw allow 6000:6005/tcp
sudo ufw allow 7000:7005/udp
允许指定的IP连接
默认情况下相应的端口允许所有IP连接,通过from指定允许某IP的连接
sudo ufw allow from 123.45.67.89
sudo ufw allow from 123.45.67.89 to any port 22
如果要允许子网的连接
sudo ufw allow from 15.15.15.0/24
sudo ufw allow from 15.15.15.0/24 to any port 22
拒绝连接
和允许连接一样,只要将相应的allow换成 deny
即可
删除规则
首先查看当前的规则,并且打印出规则号
sudo ufw status numbered
每条规则前都有一个序号
sudo ufw delete [number]
也可以通过协议删除
sudo ufw delete allow http
# 等价于
sudo ufw delete allow 80
查看UFW状态
sudo ufw status verbose
sudo ufw show added
启用禁用UFW
sudo ufw enable
sudo ufw disable
ufw 默认会开机启动,如果没有,手动设置
sudo systemctl start ufw
sudo systemctl enable ufw
启用日志
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 表示不需要。
重置防火墙
这条命令将禁用 ufw,并删除所有定义的规则
sudo ufw reset
默认情况下, ufw 会备份规则。