Debian 包含多个软件包,这些软件包提供了用于管理防火墙的工具,其中 iptables 作为基本系统的一部分安装。对于初学者来说,学习如何使用 iptables 工具正确配置和管理防火墙可能很复杂,但 UFW 简化了它。
UFW(Uncomplicated Firewall)是一个用户友好的前端,用于管理 iptables 防火墙规则,其主要目标是使管理 iptables 更容易,或者顾名思义,不复杂。
在本教程中,我们将向您展示如何在 Debian 9 上使用 UFW 设置防火墙。
先决条件#
在继续本教程之前,请确保您登录的用户已须藤权限
.
安装UFW#
Debian 9 中默认没有安装 UFW。您可以安装ufw
通过键入以下内容进行打包:
sudo apt install ufw
检查 UFW 状态#
安装过程完成后,您可以使用以下命令检查 UFW 的状态:
sudo ufw status verbose
输出将如下所示:
Status: inactive
默认情况下,UFW 处于禁用状态。安装不会自动激活防火墙以避免服务器被锁定。
如果激活 UFW,输出将类似于以下内容:
UFW 默认政策#
默认情况下,UFW 将阻止所有传入连接并允许所有出站连接。这意味着任何试图访问您的服务器的人都将无法连接,除非您专门打开该端口,而您的服务器上运行的所有应用程序和服务都将能够访问外界。
默认策略定义在/etc/default/ufw
文件并可以使用更改sudo ufw default <policy> <chain>
命令。
防火墙策略是构建更详细的用户定义规则的基础。在大多数情况下,最初的 UFW 默认策略是一个很好的起点。
应用简介#
安装软件包时apt 它将添加一个应用程序配置文件到/etc/ufw/applications.d
描述服务并包含 UFW 设置的目录。
要列出您的系统上可用的所有应用程序配置文件,请输入:
sudo ufw app list
根据系统上安装的软件包,输出将类似于以下内容:
Available applications:
DNS
IMAP
IMAPS
OpenSSH
POP3
POP3S
Postfix
Postfix SMTPS
Postfix Submission
...
要查找有关特定配置文件和包含的规则的更多信息,请使用以下命令:
sudo ufw app info OpenSSH
Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp
A上面的输出告诉我们 OpenSSH 配置文件打开了端口22
.
允许 SSH 连接#
在首先启用 UFW 防火墙之前,我们需要允许传入的 SSH 连接。
如果您从远程位置连接到服务器(几乎总是这种情况),并且在明确允许传入 SSH 连接之前启用 UFW 防火墙,您将无法再连接到 Debian 服务器。
要将 UFW 防火墙配置为允许传入 SSH 连接,请运行以下命令:
sudo ufw allow OpenSSH
Rules updated
Rules updated (v6)
如果 SSH 服务器是监听端口 除了默认端口 22 之外,您还需要打开该端口。
例如,您的 ssh 服务器侦听端口8822
,然后您可以使用以下命令来允许该端口上的连接:
sudo ufw allow 8822/tcp
启用UFW#
现在您的 UFW 防火墙已配置为允许传入 SSH 连接,您可以通过运行以下命令来启用它:
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
您将收到警告,启用防火墙可能会中断现有的 ssh 连接,只需键入y
并击中Enter
.
允许其他端口上的连接#
根据服务器上运行的应用程序和您的具体需求,您还需要允许对某些其他端口的传入访问。
以下是如何允许某些最常见服务的传入连接的几个示例:
打开端口 80 - HTTP#
可以使用以下命令允许 HTTP 连接:
sudo ufw allow http
而不是http
配置文件,您可以使用端口号,80
:
sudo ufw allow 80/tcp
打开端口 443 - HTTPS#
可以使用以下命令允许 HTTPS 连接:
sudo ufw allow https
为了达到同样的目的而不是https
您可以使用端口号,443
:
sudo ufw allow 443/tcp
开放8080端口#
如果你跑Tomcat 或任何其他侦听端口 8080 的应用程序,您可以允许传入连接:
sudo ufw allow 8080/tcp
允许端口范围#
使用 UFW,您还可以允许访问端口范围。当允许使用 UFW 的端口范围时,您必须指定协议,tcp
or udp
.
例如,允许来自以下端口的端口7100
to 7200
双方tcp
and udp
,运行以下命令:
sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp
允许特定 IP 地址#
如果要允许从特定 IP 地址访问所有端口,请使用ufw allow from
命令后跟 IP 地址:
sudo ufw allow from 64.63.62.61
允许特定端口上的特定 IP 地址#
要允许访问特定端口,假设 IP 地址为 64.63.62.61 的工作计算机的端口 22,请使用以下命令:
sudo ufw allow from 64.63.62.61 to any port 22
允许子网#
允许来自 IP 地址子网的连接的命令与使用单个 IP 地址时相同,唯一的区别是您需要指定网络掩码。例如,如果要允许 192.168.1.1 到 192.168.1.254 范围内的 IP 地址访问端口3360
(MySQL )您将运行以下命令:
sudo ufw allow from 192.168.1.0/24 to any port 3306
允许连接到特定网络接口#
要允许访问特定端口(假设端口)3360
在特定的网络接口上eth2
, 使用allow in on
命令后跟接口名称:
sudo ufw allow in on eth2 to any port 3306
拒绝连接#
所有传入连接的默认策略设置为deny
这意味着 UFW 将阻止所有传入连接,除非您专门打开连接。
假设您打开了端口80
and 443
并且您的服务器正受到来自23.24.25.0/24
网络。拒绝来自的所有连接23.24.25.0/24
,运行以下命令:
sudo ufw deny from 23.24.25.0/24
如果您只想拒绝对端口的访问80
and 443
from 23.24.25.0/24
你会使用:
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
编写拒绝规则与编写允许规则相同,只需替换allow
with deny
.
删除 UFW 规则#
有两种不同的方法可以删除 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
第二种方法是通过指定实际规则来删除规则。例如,如果您添加了打开端口的规则8069
你可以用以下方法删除它:
sudo ufw delete allow 8069
禁用 UFW#
如果出于任何原因您想要停止 UFW 并停用所有规则,请运行:
sudo ufw disable
稍后如果您想重新启用 UTF 并激活所有规则,只需键入:
sudo ufw enable
重置UFW#
重置 UFW 将禁用 UFW,并删除所有活动规则。如果您想恢复所有更改并重新开始,这会很有帮助。
要重置 UFW,只需输入以下命令:
sudo ufw reset
结论#
您已经学习了如何在 Debian 9 计算机上安装和配置 UFW 防火墙。请务必允许系统正常运行所需的所有传入连接,同时限制所有不必要的连接。
如果您有疑问,请随时在下面发表评论。