如何在 Ubuntu 20.04 上使用 UFW 来设置防火墙

防火墙是一个用来监视和过滤进出网络流量的工具。它通过定义一系列安全规则,来决定是否允许或者屏蔽指定的流量。

Ubuntu 自带的防火墙配置工具被称为 UFW (Uncomplicated Firewall)。UFW 是一个用来管理 iptables 防火墙规则的用户友好的前端工具。它的主要目的就是为了使得管理 iptables 更简单,就像名字所说的,简单的。

本文描述如何在 Ubuntu 20.04上使用 UFW 工具来配置和管理一个防火墙。一个被正确配置的防火墙是所有系统安全中最重要的部分。

一、前提条件

仅仅 root 或者其他有 sudo 权限的用户可以管理系统防火墙。最佳实践就是以 sudo 用户来运行管理员任务。

二、安装 UFW

UFW 是标准 Ubuntu 20.04 安装过程中的一部分,它应该已经在你的系统上存在。如果因为某些原因,它没有被安装,你可以通过输入下面的命令安装它:

sudo apt update
sudo apt install ufw

三、检查 UFW 的状态

安装过程不会自动激活防火墙,以避免服务器被锁住。你可以检查 UFW 的状态,输入:

sudo ufw status verbose

输出如下:

Status: inactive

如果 UFW 激活了,输入应该类似下面这样:

如何在 Ubuntu 20.04 上使用 UFW 来设置防火墙

四、UFW 默认策略

默认情况下,UFW 阻塞了所有进来的连接,并且允许所有出去的连接。这意味着任何人无法访问你的服务器,除非你打开端口。运行在服务器上的应用和服务可以访问外面的世界。

默认的策略定义在/etc/default/ufw文件中,并且可以通过使用sudo ufw default <policy> <chain>命令来修改。

防火墙策略是用来构建更多详细的和用户自定义的规则的基础。通常情况下,初始的默认策略是一个很好的起点。

五、应用配置

大部分应用都附带一份应用配置,它描述了服务,并且包含了 UFW 设置。这个规则在软件包安装的时候,被自动创建在/etc/ufw/applications.d目录下。

想要列举出你系统上所有的应用配置,输入:

sudo ufw app list

与你系统上安装的软件包有关系,输出应该看起来像下面这样:

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

想要查找更多关于指定配置和包含规则的信息,使用下面的命令:

sudo ufw app info 'Nginx Full'

输出应该显示”Nginx Full”配置打开了端口”80″和”443″。

Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server

Ports:
  80,443/tcp

你也可以为你的应用创建自定义的配置。

六、启用 UFW

如果你在远程位置连接你的 Ubuntu,在启用 UFW 防火墙之前,你必须显式允许进来的 SSH 连接。否则,你将永远都无法连接到机器上。

现在 UFW 防火墙被配置允许 SSH 远程连接,启用它,输入:

sudo ufw allow ssh

输出:

Rules updated
Rules updated (v6)

如果 SSH 运行在非标准端口,你需要打开这个端口。

例如,如果你的 SSH 守护程序监听了7722,输入下面的命令,允许连接通过那个端口:

sudo ufw allow 7722/tcp

现在防火墙被配置允许进来的 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”,并且回车。

七、打开端口

取决于运行在你服务器上的应用,你需要根据服务打开不同的端口。

通用的打开端口的语法如下:

ufw allow port_number/protocol

下面是一些关于如何允许 HTTP 连接的方法。

第一个选项就是使用服务名。UFW 检查/etc/services文件,其中指定服务的端口和协议:

sudo ufw allow http

你也可以指定端口号和协议:

sudo ufw allow 80/tcp

当没有给出协议的时候,UFW 同时创建tcpudp的规则。

另外一个选项就是使用应用程序配置。在这个例子中,是”Nginx HTTP”:

sudo ufw allow 'Nginx HTTP'

UFW 还支持另外一种语法,使用 proto 关键字来指定协议。

7.1 端口范围

UFW 允许你打开端口范围。使用分号分隔开端口的起点和终点,当你指定协议时,或者是 tcp,或者是udp

例如,如果你想允许端口从71007200,同时支持tcpudp,你将要运行下面的命令:

sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp

7.2 允许指定 IP 地址访问指定端口

想要允许指定源 IP 的所有端口上的所有连接通过,使用from关键字,加上源地址。

这里是一个 IP 地址白名单的例子:

sudo ufw allow from 64.63.62.61

如果你指向允许给定 IP 访问指定的端口,使用to any port关键字加上端口号。

例如,允许从 IP64.63.62.61的机器,通过22端口访问,输入:

sudo ufw allow from 64.63.62.61 to any port 22

7.3 允许子网

允许一个子网 IP 地址的访问和允许一个单个 IP 地址的访问,命令是一样的。唯一的不同是需要指定网络掩码。

下面是一个例子,显示如何允许 IP 地址(192.168.1.1 到 192.168.1.254),通过 3360(MySQL),你可以使用这个命令:

sudo ufw allow from 192.168.1.0/24 to any port 3306

7.4 允许指定网络接口的连接

想要允许连接通过指定网络接口,使用allow in on 和 网络接口的名字:

sudo ufw allow in on eth2 to any port 3306

八、禁止连接

对于所有进来连接的默认的策略被设置为deny,如果你没有修改它,UFW 将会屏蔽所有进来的连接,除非你指定打开连接。

写禁止规则和写允许规则是一样的,你需要的仅仅是使用deny关键字替换allow

比如说你打开了端口80443,并且你的服务器处于来自23.24.25.0/24网络的攻击。想要禁止来自23.24.25.0/24的所有连接,使用下面的命令:

sudo ufw deny from 23.24.25.0/24

这里是一个例子,关于禁止从23.24.25.0/2480443端口的访问,你可以使用下面的命令:

sudo ufw deny proto tcp from 23.24.25.0/24 to any port 80,443

九、删除 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

稍后,如果你想重新启用 UFW,并且激活所有规则,输入:

sudo ufw enable

十一、重置 UFW

重置 UFW 将会禁用 UFW,删除所有激活的规则。如果你想撤销所有的应用规则,并且重新开始时,这个很有用。

想要重置 UFW,简单输入下面的命令:

sudo ufw reset

十二、IP 伪装

IP 伪装是一种在 Linux内核中的 NAT(网络地址转换),它通过重写源 IP 和目标 IP 的地址和端口,来转换网络流量。使用 IP 伪装技术,你可以允许局域网中的一台或者多台机器,和互联网进行交互,其中的一台 Linux 机器扮演网关。

使用 UFW 配置 IP 伪装需要几个步骤:

首先,你需要启用 IP 转发。想要这么做,打开/etc/ufw/sysctl.conf文件:

sudo nano /etc/ufw/sysctl.conf

查找并且取消这一行的注释net.ipv4.ip_forward = 0:

net/ipv4/ip_forward=1

下一步,你需要配置 UFW 来允许转发包。打开 UFW 配置文件:

sudo nano /etc/default/ufw

定位到DEFAULT_FORWARD_POLICY处,修改值从DROPACCEPT

DEFAULT_FORWARD_POLICY="ACCEPT"

现在你需要设置在nat表和伪装规则中默认的POSTROUTING策略。想要这么做,打开/etc/ufw/before.rules文件,并且附加下面的行进去,像下面这样:

sudo nano /etc/ufw/before.rules

附加下面的行:

#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic through eth0 - Change to public network interface
-A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

不要忘记将-A POSTROUTING一行中的eth0替换成你的公开网络接口的名字:

当你做完这些,保存,并且关闭文件。

最后,通过禁用,重新启用 UFW,重载 UFW 规则。

sudo ufw disable
sudo ufw enable

十三、总结

我们已经向你展示了如何在你的 Ubuntu 20.04 服务器上安装和配置 UFW 防火墙。在限制所有不必要连接时,请确保系统正常运行所需要的允许进来的连接。

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/7674

(0)
郭靖的头像郭靖
上一篇 2023年3月17日 下午2:48
下一篇 2023年3月18日 下午4:26

相关推荐

  • Centos7升级内核后无法启动解决办法:mpt[23]sas驱动问题

    entOS 7.* 从内核 3.10.0 升级到 5.*.*后,重启不了,原因是 Linux 内核 4.4.x 版本之后,dracut 命令生成的 initramfs 默认不会自动加载 mpt3sas 驱动模块。因为没有对应的驱动程序,所以识别不了系统盘 1. 查询3.10.0 initramfs的驱动 可以看到在3.10内核的时候是mpt2sas…

    2023年5月6日
    2.0K00
  • Linux访问远程FTP服务器并下载文件

    一、安装ftp客户端工具 二、客户端连接ftp服务器 三、上传下载文件 1、下载文件 备注: ①文件都下载到了linux 主机的当前目录下。比如,在 /home/ftp下运行的ftp命令,则文件都下载到了/home/ftp 下。②如果想制定下载路径,需要在ftp用到 lcd 命令 2、上传文件 备注: 上传文件都来自于主机的当前目录下。比如,在 /home/…

    2023年11月8日
    1.5K00
  • 在 Linux 中检查文件大小的 4 种方法

    在 Linux 操作系统中,经常需要检查文件的大小。无论是管理文件系统空间,还是确定文件传输的大小限制,了解文件大小是非常重要的。本文将介绍 4 种常用的方法,帮助你在 Linux 中检查文件的大小。 方法一:使用 ls 命令ls 命令是 Linux 中最常用的文件和目录列表命令之一。它可以显示文件的各种属性,包括文件大小。使用 ls 命令检查文件大小的方法…

    2024年5月23日
    1.1K00
  • NetSet – 自动化网络流量安全增强工具

    NetSet旨在自动执行多个操作,以帮助用户保护网络流量。它还提供了一种通过Tor收集代理和运行实用程序的简便方法。NetSet安装和使用的也是自动配置,该工具主要用于辅助性网络安全任务。 实现了一种按需使用的终端多路复用器,它的会话通过Tor路由网关。通过自动安装和配置DNSCrypt-proxy来保护DNS流量。Tor Wall功能强制所有流量通过Tor…

    2023年10月8日
    1.9K00
  • CentOS安装noVNC,以Web方式交付VNC远程连接

    什么是noVNC noVNC 是一个 HTML5 VNC 客户端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现,noVNC 被普遍用在各大云计算、虚拟机控制面板中,比如 OpenStack Dashboard 和 OpenNebula Sunstone 都用的是 noVNC。 noVNC 采用 WebSockets…

    2024年5月8日
    1.7K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信