Debian防火墙配置-UFW


Debian防火墙设置

UFW(Uncomplicated FireWall)单纯性防火墙,简单防火墙,是 Ubuntu 的默认防火墙,但是在 Debian 上没有默认安装。

相对于 iptables,UFW 使用起来非常方便。

默认是未激活状态:ufw status
Status: inactive

enable    启动ufw
disable    关闭ufw
reload    重新加载ufw
logging on|off|LEVEL    日志 启动|关闭|级别
reset    重置配置
status    查看状态
show REPORT    显示“报告”

安装

更新源:sudo apt update

安装 UFW:apt-get install ufw
或:sudo apt install ufw

ufw 被安装在:/usr/sbin/ufw ,它实质是一个脚本。

删除UFW:apt remove ufw

添加规则

只对外开放端口 22, 80, 443 端口(默认22是开的):

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 3306/tcp

批量添加:ufw allow 57000:57999/tcp

开启防火墙:ufw enable

如果防火墙之前已经开启了,只需要重载规则:ufw reload

现在再检查一下防火墙状态:ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

删除规则

要删除某条规则,首先需要知道规则编号:
sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere
[ 4] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 5] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 6] 443/tcp (v6)               ALLOW IN    Anywhere (v6)

要删除编号 2 的规则:sudo ufw delete 2

Deleting:
 allow 80/tcp
Proceed with operation (y|n)? y
Rule deleted

删除后,规则编号会变化,需要重新查询新的编号再删除。

其他

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

PS:买了某家云服务器,在控制面板的防火墙配置里已经打开了 443 端口,但是死活连接不上。最后发现原来是默认配置的系统里使用了 ufw 建立了防火墙规则,只开启了 22 端口。按以上操作添加了 443 端口后就正常了。

开机启动

直接服务形式:sudo systemctl enable ufw

如果还是不行,则使用如下操作:
设置ufw默认开机启动,其实ufw enable就设置了,但是如果失败请参考如下:

  1. 确保ufw配置文件/etc/ufw/ufw.conf配置,确保ENABLED=yes
  2. 可能与docker等服务冲突,修改/lib/systemd/system/ufw.service,在unit部分后面追加
After=netfilter-persistent.service
  1. 与其他防火墙冲突,比如我就是firewalld,禁用:
sudo systemctl disable firewalld

卸载 ufw

sudo apt-get remove ufw
sudo apt-get purge ufw
sudo ufw disable

原文链接:https://blog.yongit.com/note/1573040.html