UFW防火墙简单使用

什么是 UFW

UFW,即简单防火墙 Uncomplicated FireWall,是一个管理防火墙规则的前端,大部分 Linux 系统都可以使用。它的目的就是为了使防火墙配置简单而不是复杂。

1.安装

更新

#Arch Linux
pacman -Syu

#Debian / Ubuntu
apt-get update && sudo apt-get upgrade

在 Arch Linux 安装

pacman -S ufw

在 Debian / Ubuntu 安装

apt-get install ufw

在Ubuntu中,UFW默认已经安装好了,但在Arch 和 Debian 中需要手动安装。
默认UFW的规则是放通全部端口,即使你已经打开它并且后台运行了,它也不会强制执行任何防火墙规则,新增防火墙规则的部分在下面。

在 centos7 安装

安装 EPEL源

yum -y install epel-release

安装

yum -y install ufw

设置默认规则

一般情况下只需要打开少量端口允许入站就可保证服务的正常使用了。我们先从默认规则开始,ufw default命令是设置UFW对传入传出连接的默认响应动作,我们首先设置拒绝所有传入并允许所有传出。

ufw default allow outgoing
ufw default deny incoming

警告!
请勿运行上述命令后直接应用,否则会直接锁定你的服务器。确保在应用默认规则前放通了SSH和其他关键服务的端口。

添加基本规则

有两种方式添加规则: 端口号服务名

例如要允许 SSH 的22 端口的传入传出连接,你可以运行:

ufw allow ssh

或者是:

ufw allow 22

同样,如果你要阻止特定端口上的流量,例如1234,你可运行:

ufw deny 1234

为了适应不同的需求,你还可以设置基于TCP或UPD的规则,例如允许80端口的TCP传入传出连接:

ufw allow 80/tcp
ufw allow http/tcp

下面的例子会允许来自 2000 端口上的 TCP 包:

ufw allow 2000/udp

允许多个(TCP UDP)端口

ufw allow 22,25,80,443,9000/tcp

或者,您可以通过这种方式添加一定范围的端口

ufw allow 9009:9013/tcp

添加高级规则

除了简单的基于端口或协议的规则,UFW 还允许按照IP地址、子网、端口、协议的不同组合来设置高级规则。

例如允许从一个IP连接:

ufw allow from 192.168.1.1

允许特定子网的连接:

ufw allow from 192.168.1.0/24

允许 IP + 端口 + 协议的组合:

ufw allow from 192.168.1.1 to any port 80 proto tcp

所有例子的allow都可以根据需求改为denyproto tcp也可以根据你的需求改为proto udp

ipv6 规则设置

允许所有IPV6地址连接

ufw allow from ::/0

允许一个IPV6地址连接

ufw allow from 2409:8a25:d4ba:2b91:216:3cff:fe28:7351

允许一个IPV6 段地址连接

ufw allow from 2409:3a55:d4ba::/0

允许 IP + 端口 + 协议的组合:

运行所有IPV6地址连接 连接某个端口

ufw allow from ::/0 to any port 6699

允许一个IPV6地址连接 连接某个端口

ufw allow from 2409:8a25:d4ba:2b91:216:3cff:fe28:7351 to any port 6699

允许一个IPV6 段地址连接 连接某个端口

ufw allow from 2409:8a25:d4ba::/0 to any port 6699

删除规则

要删除某一条规则,就在相应的规则前加入delete。例如你想要拒绝 HTTP 的流量你可以运行:

ufw delete allow 80

同样的,可以使用服务名删除规则。

还有另一种方法删除规则,首先运行命令:

ufw status numbered

它会将所有正在使用的规则列出来,并且前面标上了序号例如:

Status: active
 
     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere                  
[ 2] 25/tcp                     ALLOW IN    Anywhere
[ 3] 80/tcp                     ALLOW IN    Anywhere                  
[ 4] 443/tcp                    ALLOW IN    Anywhere                  
[ 5] 22/tcp (v6)                ALLOW IN    Anywhere (v6)             
[ 6] 25/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 7] 80/tcp (v6)                ALLOW IN    Anywhere (v6)             
[ 8] 443/tcp (v6)               ALLOW IN    Anywhere (v6)

如果你想要删除某一个规则,输入sudo ufw delete [规则号码]即可,例如:

ufw delete 2 
#就会删除 [ 2] 25/tcp                     ALLOW IN    Anywhere

编辑 UFW 的配置文件

虽然可以直接通过命令行添加规则,但是如果你有需要添加更高级或特殊的规则可以编辑配置文件,UFW 有三个配置文件。

before.rules

/etc/ufw/before.rules,在运行你通过命令行设置的规则【】运行的任何规则。同目录中的 before6.rules 文件用于 IPv6 。

after.rules

/etc/ufw/after.rules,在运行你通过命令行设置的规则【】运行的任何规则。同目录中的 after6.rules 文件用于 IPv6 。

默认配置文件

/etc/default/ufw,从此处可以设置是否启用 IPv6,可以设置默认规则,并可以设置 UFW 以管理内置防火墙链。

查看 UFW 状态

查看 UFW 状态。该命令会显示所有规则列表,以及当前是否激活。

ufw status

启用关闭防火墙

当你设定好规则后,第一次运行ufw status 可能会提示Status: inactive。这时候就要使用以下命令激活防火墙规则了。

ufw enable

禁用防火墙规则使用以下命令:

ufw disable

日志

如需启用日志记录,使用以下命令:

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 表示不需要。

原文:https://tstrs.me/1480.html

# UFW 

本文由:星际难民
实践,测试,整理发布.如需转载请注明地址 本文标题:UFW防火墙简单使用
地址:https://530503.xyz/articles/2021/05/18/1621303792311.html

评论

取消