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
就设置了,但是如果失败请参考如下:
- 确保ufw配置文件
/etc/ufw/ufw.conf
配置,确保ENABLED=yes - 可能与docker等服务冲突,修改
/lib/systemd/system/ufw.service
,在unit部分后面追加
After=netfilter-persistent.service
- 与其他防火墙冲突,比如我就是firewalld,禁用:
sudo systemctl disable firewalld
卸载 ufw
sudo apt-get remove ufw
sudo apt-get purge ufw
sudo ufw disable