Ubuntu 18.04 LTS 系统中已经默认附带了 UFW 工具,如果您的系统中没有安装,可以在「终端」中执行如下命令进行安装:
sudo apt install ufw
检查UFW状态
sudo ufw status verbose
无论您使用的是 Ubuntu 18.04 系统附带还是刚手动安装的 UFW,默认都是禁用状态,所以输出是「不活动」
UFW默认策略
防火墙策略是构建用户自定义规则的基础,在绝大多数情况下,初始的 UFW 默认策略就是一个很好的起点。
而默认情况下,UFW 将阻止所有传入连接并允许所有传出连接。也就是说,除非您专门打开特定端口,否则任何尝试访问您的服务器的人都无法连接,但服务器上运行的应用程序和服务却能够对外访问。
UFW 默认策略在 /etc/default/ufw 文件中进行定义,可以使用 sudo ufw default 命令对策略进行更改。
打开80端口——HTTP
sudo ufw allow http
也可以直接指定端口号 80:
sudo ufw allow 80/tcp
打开443端口——HTTPS
sudo ufw allow https
也可以直接指定端口号 443:
sudo ufw allow 443/tcp
允许端口范围
在使用 UFW 的端口范围时,必需指定 tcp 或 udp 协议。例如,要开启服务器上 7100 到 7200 的 tcp 和 udp 端口,可以运行以下命令:
sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp
允许特定IP地址
sudo ufw allow from 123.123.123.123
允许子网
如果要允许特定子网范围的计算机对服务器某个端口的访问,例如:允许从 192.168.1.1 到 192.168.1.254 网段到服务器 3306(MySQL)端口的访问,可以执行如下命令:
sudo ufw allow from 192.168.1.0/24 to any port 3306
拒绝连接
前面已经介绍过,传入连接的默认策略都被设置为拒绝。假设您打开了 80 和 443 端口,而服务器又受到来自 23.34.45.0/24 的攻击,可以通过如下命令拒绝该网络的所有连接:
sudo ufw deny from 23.34.45.0/24
如果只想拒绝访问 80 和 443 端口,则可以使用以下命令:
sudo ufw deny from 23.34.45.0/24 to any port 80
sudo ufw deny from 23.34.45.0/24 to any port 443
编写拒绝规则与编写允许规则相同,您只需要将 allow 替换为 deny 就行
删除UFW策略
对新手用户而言,通过规则编号来删除特定规则比较好,不过在此之前需要先用命令列出规则编号的数字:
sudo ufw status numbered
例如要删除开放 8080 端口的规则 4 可以使用如下命令:
sudo ufw delete 4
例如要删除打开8069 端口的规则,可以使用如下命令:
sudo ufw delete allow 8069
禁用UFW
sudo ufw disable
重置UFW
sudo ufw reset