UFW 的英文全称是 Uncomplicated Firewall ,字面上的理解就是“简单的防火墙”,它是 iptables 工具的一个对用户友好的前端。对初学者来说,使用 iptables 来配置和管理防火墙可能比较复杂,而使用 UFW 管理 iptables 防火墙规则,则相对容易很多,它极大的简化了 iptables 的管理过程。
通过本文牛奇网为您介绍如何在 Debian 9 上使用 UFW 设置防火墙。在继续本教程之前,请确保您的 Debian 用户拥有sudo 权限。
第 1 步 – 安装 UFW
默认情况下,Debian 中并未安装 UFW,执行下面的命令安装 UFW:
sudo apt install ufw
安装完成后,可以使用以下命令检查 UFW 的状态:
sudo ufw status verbose
因为我们尚未开启 UFW ,输出可能如下所示:
Status: inactive
第 2 步 – 配置 UFW 支持 IPv6(可选)
如果您的服务器开启了 ipv6,需要配置 UFW 支持 IPv6。使用 nano 或 vi 编辑器打开 UFW 配置文件:
sudo nano /etc/default/ufw
将配置中的IPV6
值设为 yes
,如下所示:
IPV6=yes
保存并关闭文件。现在,当启用 UFW 时,它将被配置为同时支持 IPv4 和 IPv6 。但在启用 UFW 之前,还需要确保防火墙允许通过 SSH 连接。我们从设置默认策略开始。
第 3 步 – 设置默认策略
默认情况下,UFW 被设置为拒绝所有传入连接,并允许所有传出连接,这意味着任何访问服务器的请求都无法连接。
执行下面的命令,设置默认的 UFW 策略:
sudo ufw default deny incoming
sudo ufw default allow outgoing
如果个人电脑使用这些策略是没问题的,但是服务器需要对外界的请求进行响应,所以需要对默认的策略进行更改。
第 4 步 – 允许 SSH 连接
如果现在启用 UFW 防火墙,它将拒绝所有传入的连接。如果要通过 SSH 连接服务器,我们需要创建允许合法传入连接(例如 SSH 或 HTTP 连接)的规则。
要将服务器配置为允许传入的 SSH 连接,可以执行以下命令:
sudo ufw allow ssh
这将创建一条新的防火墙规则,允许端口 22
上的所有连接,22 是 SSH 默认侦听的端口。
我们实际上可以直接开放指定端口,执行下面的命令开放 22 端口,这和上一条命令的效果相同:
sudo ufw allow 22
如果您已经配置 SSH 使用不同的端口,则必须开放对应的端口。例如,如果您的 SSH 服务器使用 2222
端口,可以执行下面的命令开放该端口:
sudo ufw allow 2222
现在防火墙已被配置为允许传入的 SSH 连接,我们现在就可以启用 UFW 了。
第 5 步 – 启用 UFW
执行以下命令启用 UFW :
sudo ufw enable
执行上面的命令后,将收到一条警告,指出该命令可能会中断现有的 SSH 连接。因为我们已经设置 UFW 允许 SSH 连接,所以我们输入“Y” 并回车。
现在可以使用以下命令再次检查 UFW 的状态:
sudo ufw status verbose
第 6 步 – 设置 UFW 开放其他端口
现在,可以根据要在服务器上部署的项目,配置 UFW 开放其他特定端口。
为 HTTP 访问开放 80 端口
可以执行以下命令允许 HTTP 连接:
sudo ufw allow http
也可以直接开放 HTTP 使用的端口号 80 :
sudo ufw allow 80/tcp
为 HTTPS 访问开放 443 端口
可以执行以下命令允许 HTTPS 连接:
sudo ufw allow https
也可以直接开放 HTTPS 使用的端口号 443 :
sudo ufw allow 443/tcp
开放 8080 端口
如果服务器上运行 Tomcat 或其他使用 8080 端口的程序,可以执行下面的命令开放 8080 端口:
sudo ufw allow 8080/tcp
开放特定端口范围
因为有一些程序要使用多个端口,因此可以使用 UFW 开放特定端口范围。例如,要允许使用 6000
– 6007
端口的 tcp 和 udp 连接,可以执行以下命令:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
使用 UFW 开放特定端口范围时,必须指定规则适用的协议(tcp
或 udp )。
开放特定 IP 地址
使用 UFW 时,还可以允许指定 IP 地址。例如,如果要允许来自特定 IP 地址的连接,如允许来自公司的 IP 地址 203.0.113.4
,可以执行如下的命令:
sudo ufw allow from 203.0.113.4
还可以指定允许 IP 地址连接的特定端口。例如,如果想允许 203.0.113.4
连接到端口 22
(SSH),可以执行以下命令:
sudo ufw allow from 203.0.113.4 to any port 22
允许子网访问
如果要允许 IP 地址的子网访问,例如,要允许从 203.0.113.1
到 203.0.113.254
的所有IP地址访问,可以执行以下命令:
sudo ufw allow from 203.0.113.0/24
同样,也可以指定 203.0.113.0/24
允许子网连接的目标端口:
sudo ufw allow from 203.0.113.0/24 to any port 22
与特定网络接口的连接
如果要创建仅适用于特定网络接口的防火墙规则,可以通过“allow in on”后跟网络接口名称来实现。
执行以下命令,查找网络接口:
ip addr
Output Excerpt
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .
突出显示的就是网络接口名称。它们通常被命名为 eth0
或者 enp3s2
这样的名称。
因此,如果您的服务器有一个名为 eth0
的公共网络接口,可以执行以下命令允许 HTTP 流量(端口80
)通过该接口:
sudo ufw allow in on eth0 to any port 80
这样将允许您的服务器接收来自公共互联网的 HTTP 请求。
或者,如果想要 MySQL 数据库服务器(端口3306
)允许专用网络接口 eth1
上的连接,可以执行以下命令:
sudo ufw allow in on eth1 to any port 3306
第 7 步 – 拒绝连接
默认情况下,UFW 将拒绝所有传入连接,如果我们已经开启了 80
和443
端口,并且服务器遭到 23.24.25.0/24
的网络攻击。我们可以执行如下命令,拒绝来自 23.24.25.0/24
的所有连接:
sudo ufw deny from 23.24.25.0/24
如果只想拒绝 23.24.25.0/24
对 80
和 443 端口的访问,可以执行如下的命令:
sudo ufw deny from 23.24.25.0/24 to any port 80
sudo ufw deny from 23.24.25.0/24 to any port 443
第 8 步 – 删除规则
要删除 UFW 规则有两种不同的方法,分别为通过规则编号和指定实际规则。如果您对 UFW 不是很熟悉,按规则编号删除 UFW 规则更容易。要通过规则编号删除规则,首先需要知道如何找到要删除的规则编号。
要找到规则编号,可以执行以下命令:
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 8080/tcp ALLOW IN Anywhere
例如,要删除第 3 条规则,即允许连接到 8080 端口的规则,可以执行下面的命令:
sudo ufw delete 3
此外,我们也可以直接指定要删除的规则。例如,我们可以执行下面的命令删除开放 80 端口的规则:
sudo ufw delete allow http
或者直接通过端口号:
sudo ufw delete allow 80
第 9 步 – 检查 UFW 状态和规则
可以使用以下命令检查 UFW 的状态:
sudo ufw status verbose
如果 UFW 被禁用,将看到如下内容:
Output
Status: inactive
如果 UFW 处于活动状态,则输出可能如下所示:
OutputStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
第 10 步 – 禁用或重置 UFW(可选)
如果不想继续使用 UFW,可以使用以下命令关闭它:
sudo ufw disable
执行该命令后,使用 UFW 创建的任何规则都将不再有效。如果以后需要激活它,可以运行如下命令:
sudo ufw enable
如果您已经配置了 UFW 规则,但想要重置 UFW 规则,可以使用 reset 命令:
sudo ufw reset
该命令将关闭 UFW 并删除之前定义的全部规则。
总结
通过上面的内容,牛奇网向您介绍了如何在 Debian 9 服务器上安装和配置 UFW 防火墙。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/how-to-setup-a-firewall-with-ufw-on-debian-9/