当前位置: 首页>>技术教程>>正文


如何在Ubuntu 18.04中配置防火墙

, ,
正确配置的防火墙是整个系统安全性中最重要的方面之一。默认情况下,Ubuntu附带了一个称为UFW(简单防火墙)的防火墙配置工具。

UFW是一个user-friendly front-end,用于管理iptables防火墙规则,其主要目标是使iptables的管理更容易,或者名称不复杂。 Ubuntu的防火墙是一种无需学习iptables即可轻松执行基本防火墙任务的简便方法。它并不能提供标准iptables命令的所有功能,但它却不那么复杂。

在本教程中,您将学习:

  • 什么是UFW及其概述。
  • 如何安装UFW和执行状态检查。
  • 如何在UFW中使用IPv6。
  • UFW默认策略。
  • 应用程序配置文件。
  • 如何允许和拒绝连接。
  • 防火墙日志。
  • 如何删除UFW规则。
  • 如何禁用和重置UFW。
Ubuntu UFW

Ubuntu UFW。

使用的软件要求和约定

软件要求和Linux命令行约定
类别 使用的要求,约定或软件版本
系统 Ubuntu 18.04
软件 Ubuntu内置防火墙UFW
其他 以root身份或通过Linux特权访问Linux系统sudo命令。
约定 -要求linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo命令$-要求linux命令以普通非特权用户身份执行

UFW概述




Linux内核包括Netfilter子系统,该子系统用于操纵或确定进入或通过您的服务器的网络流量的命运。所有现代Linux防火墙解决方案都使用此系统进行数据包过滤。

对于没有用户空间接口来管理它的管理员来说,内核的数据包过滤系统几乎没有用。 iptables的目的是:当数据包到达您的服务器时,将根据从用户空间通过iptables提供给它的规则,将其传递到Netfilter子系统进行接受,操作或拒绝。因此,如果您熟悉iptables,则只需它即可管理防火墙,但是有许多前端可以简化任务。

UFW或简单的防火墙是iptables的front-end。其主要目标是简化防火墙drop-dead的管理并提供easy-to-use接口。它是well-supported,在Linux社区中很流行-即使在许多发行版中也默认安装了它。因此,这是开始确保服务器安全的好方法。

安装UFW和状态检查

默认情况下,应在Ubuntu 18.04中安装“不复杂的防火墙”,但是如果未在系统上安装,则可以使用以下命令安装软件包:

$ sudo apt-get install ufw

安装完成后,您可以使用以下命令检查UFW的状态:

$ sudo ufw status verbose
ubuntu1804@linux:~$ sudo ufw status verbose
[sudo] password for ubuntu1804: 
Status: inactive
ubuntu1804@linux:~$
ubuntu1804@linux:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
ubuntu1804@linux:~$ 
ubuntu1804@linux:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
ubuntu1804@linux:~$

将UFW与IPv6结合使用



如果为服务器配置了IPv6,请确保将UFW配置为支持IPv6,以便同时配置IPv4和IPv6防火墙规则。为此,请使用以下命令打开UFW配置:

$ sudo vim /etc/default/ufw

然后确定IPV6设定为yes,就像这样:

IPV6=yes

保存并退出。然后使用以下命令重新启动防火墙:

$ sudo ufw disable
$ sudo ufw enable

现在,UFW将在适当的时候为IPv4和IPv6配置防火墙。

UFW默认策略

默认情况下,UFW将阻止所有传入连接并允许所有出站连接。这意味着,除非您专门打开端口,否则尝试访问服务器的任何人都将无法连接,而服务器上运行的所有应用程序和服务都将可以访问外部环境。默认策略在/etc/default/ufw文件,可以使用sudo ufw default命令进行更改。

$ sudo ufw default deny outgoing

防火墙策略是构建更详细的user-defined规则的基础。在大多数情况下,初始UFW默认策略是一个很好的起点。

应用资料

使用apt命令安装软件包时,它将向其中添加应用程序配置文件/etc/ufw/applications.d目录。该配置文件描述了服务并包含UFW设置。您可以使用以下命令列出服务器上可用的所有应用程序配置文件:

$ sudo ufw app list

根据系统上安装的软件包,输出将类似于以下内容:

ubuntu1804@linux:~$ sudo ufw app list
[sudo] password for ubuntu1804: 
Available applications:
  CUPS
  OpenSSH
ubuntu1804@linux:~$


要查找有关特定概要文件和包含的规则的更多信息,请使用以下命令:

$ sudo ufw app info ‘<app_name>’
ubuntu1804@linux:~$ 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

从上面的输出中可以看到,OpenSSH配置文件通过TCP打开端口22。

允许和拒绝连接

如果打开防火墙,默认情况下它将拒绝所有传入连接。因此,您需要根据需要允许/启用连接。可以通过定义端口,服务名称或应用程序配置文件来打开连接。

$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow 80/tcp
$ sudo ufw allow 'HTTP'

UFW除了允许访问单个端口外,还允许我们访问端口范围。

$ sudo ufw allow 1000:2000/tcp
$ sudo ufw allow 3000:4000/udp

要允许从具有IP地址的计算机访问所有端口,或允许访问特定端口,可以执行以下命令:

$ sudo ufw allow from 192.168.1.104
$ sudo ufw allow from 192.168.1.104 to any port 22

允许连接到IP地址子网的命令:

$ sudo ufw allow from 192.168.1.0/24 to any port 3306

要允许访问特定端口并且仅访问特定网络接口,您需要使用以下命令:

$ sudo ufw allow in on eth1 to any port 9992

所有传入连接的默认策略均设置为“拒绝”,如果未更改,则UFW会阻止所有传入连接,除非您专门打开该连接。要拒绝来自子网和端口的所有连接:

$ sudo ufw deny from 192.168.1.0/24
$ sudo ufw deny from 192.168.1.0/24 to any port 80

防火墙日志




防火墙日志对于识别攻击,对防火墙规则进行故障排除以及注意到网络中的异常活动至关重要。但是,您必须在防火墙中包括日志记录规则才能生成它们,并且日志记录规则必须位于任何适用的终止规则之前。

$ sudo ufw logging on

日志也会在/var/log/messages/var/log/syslog/var/log/kern.log

删除UFW规则

Tere是删除UFW规则的两种不同方法,分别是通过规则编号和指定实际规则。通过规则编号删除UFW规则更容易,特别是如果您不熟悉UFW。要首先通过规则编号删除规则,您需要找到要删除的规则的编号,您可以使用以下命令:

$ sudo ufw status numbered
ubuntu1804@linux:~$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere                  
[ 2] Anywhere                   ALLOW IN    192.168.1.104             
[ 3] 22/tcp (v6)                ALLOW IN    Anywhere (v6)             

要删除规则编号2,该规则允许从IP地址192.168.1.104连接到任何端口,请使用以下命令:

$ sudo ufw delete 2
ubuntu1804@linux:~$ sudo ufw delete 2
Deleting:
 allow from 192.168.1.104
Proceed with operation (y|n)? y
Rule deleted
ubuntu1804@linux:~$

第二种方法是通过指定实际规则来删除规则。

$ sudo ufw delete allow 22/tcp

禁用并重置UFW



如果出于任何原因要停止UFW并停用所有规则,则可以使用:

$ sudo ufw disable
ubuntu1804@linux:~$ sudo ufw disable
Firewall stopped and disabled on system startup
ubuntu1804@linux:~$

重置UFW将禁用UFW,然后删除所有活动规则。如果要还原所有更改并重新开始,这将很有帮助。要重置UFW,请使用以下命令:

$ sudo ufw reset
ubuntu1804@linux:~$ sudo ufw reset
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20181213_084801'
Backing up 'before.rules' to '/etc/ufw/before.rules.20181213_084801'
Backing up 'after.rules' to '/etc/ufw/after.rules.20181213_084801'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20181213_084801'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20181213_084801'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20181213_084801'
ubuntu1804@linux:~$

结论

UFW的开发旨在简化iptables防火墙的配置,并提供了user-friendly方法来创建基于IPv4或IPv6主机的防火墙。还有许多其他防火墙实用程序,有些可能会更容易一些,但是UFW是一个很好的学习工具,仅因为它公开了一些底层的netfilter结构,并且它存在于许多系统中。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8721.html,未经允许,请勿转载。