ufw是Ubuntu系列发行版自带的类似iptables的防火墙管理软件,底层也是基于netfilter的。ufw是Uncomplicated FireWall的简称,真正地简化了 iptables,它从出现的这几年,已经成为 Ubuntu 和 Debian 等系统上的默认防火墙。而且 ufw 出乎意料的简单,这对新管理员来说是一个福音,否则他们可能需要投入大量时间来学习防火墙管理。ufw默认关闭,开放所有端口。
1、更新系统
#Arch Linux
sudo pacman -Syu
#Debian / Ubuntu
sudo apt-get update && sudo apt-get upgrade
2、安装防火墙
#Arch Linux
sudo pacman -S ufw
#Debian / Ubuntu
sudo apt-get install ufw
3、检查防火墙的状态
ufw status
4、防火墙版本
ufw version
5、开启/关闭防火墙
ufw enable|disable
6、启用
sudo ufw enable
sudo ufw default deny
7、禁用
sudo ufw allow|deny [service]
一般情况下只需要打开少量端口允许入站就可保证服务的正常使用了。我们先从默认规则开始,ufw default命令是设置UFW对传入传出连接的默认响应动作,我们首先设置拒绝所有传入并允许所有传出。
sudo ufw default allow outgoing
sudo ufw default deny incoming
#允许 SSH 的22 端口的传入传出连接
sudo ufw allow ssh
sudo ufw allow 22
#阻止特定端口上的流量
sudo ufw deny 1234
#设置基于TCP或UPD的规则,例如允许80端口的TCP传入传出连接
sudo ufw allow 80/tcp
sudo ufw allow http/tcp
#允许来自 2000 端口上的 TCP 包
sudo ufw allow 2000/udp
#允许从一个IP连接
sudo ufw allow from 192.168.1.1
#允许特定子网的连接
sudo ufw allow from 192.168.1.0/24
#允许连接到特定的网络接口
ufw allow in on eth2 to any port 3306
#允许 IP + 端口 + 协议的组合
sudo ufw allow from 192.168.1.1 to any port 80 proto tcp
#拒绝 HTTP 的流量
sudo ufw delete allow 80
#列出规则
sudo ufw status numbered
#删除某一个规则
sudo ufw delete 2
#就会删除 [ 2] 25/tcp ALLOW IN Anywhere#转换日志状态
ufw logging on|off
#允许端口范围
ufw allow 8000:8100/tcp
ufw allow 8000:8100/udp
#禁用UFW
ufw disable
#开启UFW
ufw enable
#重置UFW
ufw reset
#before.rules
/etc/ufw/before.rules,在运行你通过命令行设置的规则【前】运行的任何规则。同目录中的 before6.rules 文件用于 IPv6 。
#after.rules
/etc/ufw/after.rules,在运行你通过命令行设置的规则【后】运行的任何规则。同目录中的 after6.rules 文件用于 IPv6 。
默认配置文件
/etc/default/ufw,从此处可以设置是否启用 IPv6,可以设置默认规则,并可以设置 UFW 以管理内置防火墙链。
#启用日志记录
sudo ufw logging on
启用日志后可以使用 sudo ufw logging low|medium|high 设置日志级别,默认是low。
日志文件储存在 /var/logs/ufw
Nov 20 20:13:21 <hostname> kernel: [UFW BLOCK] IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=1.1.1.1 DST=2.2.2.2 LEN=40 TOS=0x00 PREC=0x00 TTL=249 ID=8475 PROTO=TCP SPT=48247 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0
参数说明:
[UFW BLOCK]: 这是记录事件的描述开始的位置。在此例中,它表示阻止了连接。
IN: 如果它包含一个值,那么代表该事件是传入事件
OUT: 如果它包含一个值,那么代表事件是传出事件
MAC: 目的地和源 MAC 地址的组合
SRC: 包源的 IP
DST: 包目的地的 IP
LEN: 数据包长度
TTL: 数据包 TTL,或称为 time to live。在找到目的地之前,它将在路由器之间跳跃,直到它过期。
PROTO: 数据包的协议
SPT: 包的源端口
DPT: 包的目标端口
WINDOW: 发送方可以接收的数据包的大小
SYN URGP: 指示是否需要三次握手。0 表示不需要。
参数配置文件/etc/ufw/ufw.conf
防火墙日志文件/var/log/ufw.log
路由转发参数配置文件/etc/ufw/sysctl.conf
应用定义文件目录/etc/ufw/applications.d