# Ubuntu UFW Command
根据ubuntu官方文档关于UFW命令的介绍 (opens new window),UFW(Uncomplicated Firewall),UFW 旨在简化 iptables 防火墙配置,提供了一种用户友好的方法来创建基于 IPv4 或 IPv6 主机的防火墙。默认情况下,UFW 最初处于禁用状态。从 ufw 手册页:"UFW并不打算通过其命令界面提供完整的防火墙功能,而是提供了一种添加或删除简单规则的简单方法。它目前主要用于基于主机的防火墙"。今天我们来学习一下ufw命令的基础使用。
# 查看UFW防火墙状态
$ sudo ufw status
Status: inactive
查看防火墙详细状态信息
$ sudo ufw status verbose
上面的命令代表ufw命令已安装,但是未激活。如果系统中没有安装 UFW,你可以使用以下命令进行安装:
$ sudo apt update
$ sudo apt install ufw
# 启用 UFW
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
上面命令在开始ufw的同时提示开启防火墙会导致ssh链接断开。这个时候我们先添加允许SSH连接的规则再开起防火墙。
$ sudo ufw allow 22
Rule added
Rule added (v6)
然后执行重启UFW的命令让规则生效
$ sudo ufw reload
Firewall reloaded
# 配置默认策略
在启用 UFW 之后,你需要配置默认的策略。默认情况下,所有的入站都会被拒绝,所有的出站流量都是被允许的。这意味着你需要明确地配置规则来允许特定的流量。你可以根据你的需求选择不同的默认策略。首先使用下面的命令查看防火墙的详细信息。
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22 ALLOW IN Anywhere
22 (v6) ALLOW IN Anywhere (v6)
这会显示当前的 UFW 防火墙配置,包括默认策略。在输出中,你会看到以下信息之一:
- Default:
deny (incoming), allow (outgoing)
:表示默认策略是拒绝所有入站流量,允许所有出站流量。 - Default:
allow (incoming), deny (outgoing)
:表示默认策略是允许所有入站流量,拒绝所有出站流量。 - Default:
deny (incoming), deny (outgoing)
:表示默认策略是拒绝所有入站流量和出站流量。 - Default:
allow (incoming), allow (outgoing)
:表示默认策略是允许所有入站流量和出站流量。
# 添加规则
要打开端口(在本例中为 SSH),请执行以下操作:
$ sudo ufw allow 22
也可以使用编号格式添加规则:
$ sudo ufw insert 1 allow 80
Rule inserted
Rule inserted (v6)
也可以使用常见的服务名称来添加规则
$ sudo ufw allow openSSH
以下是一些ufw常见的服务别名的示例:
- OpenSSH: 允许SSH远程访问,默认端口是22。
- HTTP: 允许HTTP流量,默认端口是80。
- HTTPS: 允许HTTPS安全HTTP流量,默认端口是443。
- FTP: 允许FTP文件传输,默认端口是21。
- SMTP: 允许SMTP邮件传输,默认端口是25。
- IMAP: 允许IMAP电子邮件访问,默认端口是143。
- POP3: 允许POP3电子邮件访问,默认端口是110。
- DNS: 允许DNS域名解析,默认端口是53。
- NTP: 允许网络时间协议(NTP)流量,默认端口是123。
- Samba: 允许Samba文件共享服务,默认端口是139。
- Squid: 允许Squid代理服务器,默认端口是3128。
- MySQL: 允许MySQL数据库服务,默认端口是3306。
- PostgreSQL: 允许PostgreSQL数据库服务,默认端口是5432。
- Redis: 允许Redis数据库服务,默认端口是6379。
- MongoDB: 允许MongoDB数据库服务,默认端口是27017。
- BitTorrent: 允许BitTorrent文件共享服务,默认端口是6881。
也可以允许从特定主机或网络访问端口。以下示例允许从主机 192.168.0.2 通过 SSH 访问此主机上的任何 IP 地址:
$ sudo ufw allow proto tcp from 192.168.0.2 to any port 22
将 192.168.0.2 替换为 192.168.0.0/24 以允许从整个子网进行 SSH 访问。
$ sudo ufw allow proto tcp from 192.168.0.0/24 to any port 22
# 关闭打开的端口
$ sudo ufw deny 22
# 删除规则
$ sudo ufw delete deny 22
# 禁用 UFW
$ sudo ufw disable
# 重启 UFW
$ sudo ufw reload
# --dry-run
将 –dry-run 选项添加到 ufw 命令将输出生成的规则,但不会应用它们。例如,以下是打开 HTTP 端口时将应用的内容:
$ sudo ufw --dry-run allow http
# UFW应用集成
打开端口的应用程序可以包含 ufw 配置文件,该配置文件详细说明了应用程序正常运行所需的端口。配置文件保留在 中 /etc/ufw/applications.d ,如果默认端口已更改,则可以对其进行编辑。
# 要查看哪些应用程序安装了配置文件,请在终端中输入以下内容:
$ sudo ufw app list
Available applications:
OpenSSH
$ ll /etc/ufw/applications.d/
total 12
drwxr-xr-x 2 root root 4096 Apr 21 2022 ./
drwxr-xr-x 3 root root 4096 Apr 21 2022 ../
-rw-r--r-- 1 root root 145 Feb 26 2022 openssh-server
与允许流量流向端口类似,使用应用程序配置文件是通过输入以下内容来完成的:
$ sudo ufw allow Samba
扩展语法也可用:
$ sudo ufw allow from 192.168.0.0/24 to any app Samba
要查看有关为应用程序定义了哪些端口、协议等的详细信息,请输入:
$ sudo ufw app info Samba