正常运行的防火墙是整个Linux系统安全性最关键的方面之一。 默认情况下,Debian和Ubuntu发行版带有一个名为UFW ( 简单防火墙 )的防火墙配置工具,它是用于在Ubuntu和Debian发行版上配置和管理防火墙的最流行且易于使用的命令行工具。
在本文中,我们将解释如何在Ubuntu和Debian发行版上安装和设置UFW防火墙。
先决条件
在开始阅读本文之前,请确保您已使用sudo用户或root帐户登录到Ubuntu或Debian服务器。 如果您没有sudo用户,则可以使用以下说明以root用户身份创建一个。
# adduser username # usermod -aG sudo username # su - username $ sudo whoami
在Ubuntu和Debian上安装UFW防火墙
应该在Ubuntu和Debian中默认安装UFW ( 简单防火墙 ),如果不是,则使用以下命令使用APT软件包管理器进行安装。
$ sudo apt install ufw
检查UFW防火墙
安装完成后,您可以通过输入来检查UFW的状态。
$ sudo ufw status verbose
首次安装时,默认情况下,UFW防火墙处于禁用状态,输出将类似于以下内容。
Status: inactive
启用UFW防火墙
您可以使用以下命令激活或启用UFW防火墙,该命令应加载防火墙并使其在启动时启动。
$ sudo ufw enable
要禁用UFW防火墙,请使用以下命令,该命令卸载防火墙并禁用防火墙在启动时启动。
$ sudo ufw disable
UFW默认策略
默认情况下,UFW防火墙拒绝每个传入连接并仅允许所有到服务器的出站连接。 这意味着,没有人可以访问您的服务器,除非您专门打开该端口,而服务器上的所有正在运行的服务或应用程序都可以访问外部网络。
默认的UFW防火墙策略位于/etc/default/ufw
文件中,可以使用以下命令进行更改。
$ sudo ufw default deny incoming $ sudo ufw default allow outgoing
UFW应用程序配置文件
使用APT软件包管理器安装软件包时,它将在/etc/ufw/applications.d
目录中包含一个应用程序配置文件,用于定义服务并保存UFW设置。
您可以使用以下命令列出服务器上的所有可用应用程序配置文件。
$ sudo ufw app list
根据系统上的软件包安装,输出将如下所示:
Available applications: APACHE APACHE Full APACHE SECURE CUPS OpenSSH Postfix Postfix SMTPS Postfix Submission
如果您想获取有关特定配置文件和定义规则的更多信息,可以使用以下命令。
$ sudo ufw app info 'Apache'
Profile: Apache Title: Web Server Description: Apache V2 is the next generation f the omnipresent Apache web server. Ports: 80/tcp
使用UFW启用IPv6
如果您的服务器配置了IPv6 ,请确保您的UFW配置了IPv6和IPv4支持。 要验证它,请使用您最喜爱的编辑器打开UFW配置文件。
$ sudo vi /etc/default/ufw
然后确保配置文件中的“IPV6”设置为"yes"
,如图所示。
IPV6=yes
保存并退出。 然后使用以下命令重新启动防火墙:
$ sudo ufw disable $ sudo ufw enable
在UFW上允许SSH连接
如果您现在启用了UFW防火墙,它将阻止所有传入的连接,并且如果您通过SSH从远程位置连接到服务器,则将无法再连接它。
让我们启用SSH连接到我们的服务器,使用以下命令停止发生这种情况:
$ sudo ufw allow ssh
如果您使用自定义SSH端口(例如端口2222 ),则需要使用以下命令在UFW防火墙上打开该端口。
$ sudo ufw allow 2222/tcp
要阻止所有SSH连接,请输入以下命令。
$ sudo ufw deny ssh/tcp $ sudo ufw deny 2222/tcp [If using custom SSH port]
在UFW上启用特定端口
您还可以在防火墙中打开特定的端口,以允许通过它连接到某个服务。 例如,如果您要设置默认情况下监听端口80 ( HTTP )和443 ( HTTPS )的Web服务器。
以下是如何允许传入连接到Apache服务的几个例子。
在UFW上打开80端口HTTP
$ sudo ufw allow http [By service name] $ sudo ufw allow 80/tcp [By port number] $ sudo ufw allow 'Apache' [By application profile]
在UFW上打开Port 443 HTTPS
$ sudo ufw allow http $ sudo ufw allow 443/tcp $ sudo ufw allow 'Apache Secure'
在UFW上允许端口范围
假设您有一些应用程序想要在一系列端口( 5000-5003 )上运行,则可以使用以下命令添加所有这些端口。
sudo ufw allow 5000:5003/tcp sudo ufw allow 5000:5003/udp
允许特定的IP地址
如果要允许来自特定IP地址192.168.56.1的所有端口上的连接,则需要在IP地址之前指定。
$ sudo ufw allow from 192.168.56.1
允许特定端口上的特定IP地址
要允许从本地计算机的IP地址为192.168.56.1的特定端口(例如端口22 )进行连接,则需要在IP地址后面添加任何端口和端口号 ,如图所示。
$ sudo ufw allow from 192.168.56.1 to any port 22
允许网络子网到特定的端口
要允许特定IP地址从192.168.1.1到192.168.1.254到端口22 ( SSH )的连接,请运行以下命令。
$ sudo ufw allow from 192.168.1.0/24 to any port 22
允许特定的网络接口
要允许连接到特定端口22 ( SSH )的特定网络接口eth2 ,请运行以下命令。
$ sudo ufw allow in on eth2 to any port 22
在UFW上拒绝连接
默认情况下,除非您专门在UFW上打开连接,否则所有传入连接都会被阻止。 例如,您已打开端口80和443,并且您的Web服务器受到来自未知网络11.12.13.0/24的攻击。
要阻止来自此特定11.12.13.0/24网络范围的所有连接,可以使用以下命令。
$ sudo ufw deny from 11.12.13.0/24
如果您只想阻止端口80和443上的连接,则可以使用以下命令。
$ sudo ufw deny from 11.12.13.0/24 to any port 80 $ sudo ufw deny from 11.12.13.0/24 to any port 443
删除UFW规则
有两种方法可以按规则编号和实际规则删除UFW规则。
要使用规则编号删除UFW规则,首先需要使用以下命令按数字列出规则。
$ sudo ufw status numbered
示例输出
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere
要删除规则编号1 ,请使用以下命令。
$ sudo ufw delete 1
第二种方法是使用实际规则删除规则,例如删除规则,使用协议指定端口号,如图所示。
$ sudo ufw delete allow 22/tcp
干运行UFW规则
您可以运行任何ufw命令,而无需使用--dry-run
标志实际对系统防火墙进行任何更改,这只是显示假设发生的更改。
$ sudo ufw --dry-run enable
重置UFW防火墙
由于某种原因,如果您希望删除/重置所有防火墙规则,请输入以下命令,它将恢复所有更改并重新开始。
$ sudo ufw reset $ sudo ufw status
UFW高级功能
UFW防火墙可以做任何iptables可以做的事情。 这可以通过使用不同的规则文件集来实现,这些文件无非是iptables-恢复相应的纯文本文件。
微调ufw和/或不允许通过ufw命令放置额外的iptables命令是编辑几个文本文件的问题。
- / etc / default / ufw :默认策略,IPv6支持和内核模块的主要配置。
- /etc/ufw/before[6].rules :这些文件中的规则是在通过ufw命令添加任何规则之前计算的。
- /etc/ufw/after[6].rules :这些文件中的规则是在通过ufw命令添加任何规则之后计算的。
- /etc/ufw/sysctl.conf :内核网络可调参数。
- /etc/ufw/ufw.conf :设置启动时是否启用ufw并设置LOGLEVEL。
而已! UFW是iptables的一个很好的前端,它具有易于使用的用户界面。 用户不需要记住复杂的iptables规则,因为UFW提供了一个易于使用的设置手册。
如果您有任何疑问或想法可以分享这篇ufw文章,请使用下面的评论表单与我们联系。