本文最先发布在:
https://www.itcoder.tech/posts/how-to-s ... ntu-20-04/
防火墙是一个用来监视和过滤进出网络流量的工具。它通过定义一系列安全规则,来决定是否允许或者屏蔽指定的流量。
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 的状态,输入:
代码: 全选
sudo ufw status verbose
代码: 全选
Status: inactive
{{< figure src="/img/linuxize/ubuntu/ubuntu-ufw-status.jpg" link="https://cloud.tencent.com/act/cps/redir ... om=console" target="blank" >}}
四、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'
代码: 全选
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 守护程序监听了
代码: 全选
7722
代码: 全选
sudo ufw allow 7722/tcp
代码: 全选
sudo ufw enable
代码: 全选
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
七、打开端口
取决于运行在你服务器上的应用,你需要根据服务打开不同的端口。
通用的打开端口的语法如下:
代码: 全选
ufw allow port_number/protocol
第一个选项就是使用服务名。UFW 检查
代码: 全选
/etc/services
代码: 全选
sudo ufw allow http
代码: 全选
sudo ufw allow 80/tcp
代码: 全选
tcp
代码: 全选
udp
另外一个选项就是使用应用程序配置。在这个例子中,是"Nginx HTTP":
代码: 全选
sudo ufw allow 'Nginx HTTP'
代码: 全选
proto
[h3]7.1 端口范围[/h3]
UFW 允许你打开端口范围。使用分号分隔开端口的起点和终点,当你指定协议时,或者是
代码: 全选
tcp
代码: 全选
udp
例如,如果你想允许端口从
代码: 全选
7100
代码: 全选
7200
代码: 全选
tcp
代码: 全选
udp
代码: 全选
sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp
想要允许指定源 IP 的所有端口上的所有连接通过,使用
代码: 全选
from
这里是一个 IP 地址白名单的例子:
代码: 全选
sudo ufw allow from 64.63.62.61
代码: 全选
to any port
例如,允许从 IP
代码: 全选
64.63.62.61
代码: 全选
22
代码: 全选
sudo ufw allow from 64.63.62.61 to any port 22
允许一个子网 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
想要允许连接通过指定网络接口,使用
代码: 全选
allow in on
代码: 全选
sudo ufw allow in on eth2 to any port 3306
对于所有进来连接的默认的策略被设置为
代码: 全选
deny
写禁止规则和写允许规则是一样的,你需要的仅仅是使用
代码: 全选
deny
代码: 全选
allow
比如说你打开了端口
代码: 全选
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 proto tcp from 23.24.25.0/24 to any port 80,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
[ 3] 8080/tcp ALLOW IN Anywhere
代码: 全选
sudo ufw delete 3
代码: 全选
8069
代码: 全选
sudo ufw delete allow 8069
如果因为任何原因,你需要停止 UFW,并且使得所有规则失效,你可以运行:
代码: 全选
sudo ufw disable
代码: 全选
sudo ufw enable
重置 UFW 将会禁用 UFW,删除所有激活的规则。如果你想撤销所有的应用规则,并且重新开始时,这个很有用。
想要重置 UFW,简单输入下面的命令:
代码: 全选
sudo ufw reset
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
代码: 全选
sudo nano /etc/default/ufw
代码: 全选
DEFAULT_FORWARD_POLICY
代码: 全选
DROP
代码: 全选
ACCEPT
代码: 全选
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 防火墙。在限制所有不必要连接时,请确保系统正常运行所需要的允许进来的连接。
想要了解更多关于这个主题的信息,请浏览 UFW 手册页面。
如果你有任何疑问,请通过以下方式联系我们:
微信: sn0wdr1am86
微信群:
加上面的微信,备注微信群
QQ: 3217680847
QQ 群: 82695646