1. 查看防火墙状态
进入root权限
ufw status verbose
状态:不活动
2.先把ssh的权限打开
这么做的目的是防止把自己关在外面了,如果你是其他端口,记得把22换成你实际的ssh端口好。
ufw allow 22
防火墙规则已更新
规则已更新(v6)
3.打开防火墙
完成以上两步后,可以打开防火墙:
ufw enable
此命令可能会中断目前的 ssh 连接。要继续吗 (y|n)? y
在系统启动时启用和激活防火墙
4.添加规则
根据需要添加规则,根据你现在服务器打开的端口,可以将规则添加进去,如果需要查看当前的端口开启情况,可以用如下命令:
netstat -tnlp
添加防火墙规则(xxx表示端口号):
ufw allow xxx
删除已经有的防火墙规则:
ufw delete allow xxx
拒绝访问规则:
ufw deny xxx
缺省的规则:
ufw default deny
5.修复docker缺省打开防火墙问题
在实际使用过程中,可能会采用docker容器的方式,如果没有设置的情况下,可能会造成防火墙已经做了设置但没有生效。比如已经拒绝了80端口访问,但是远程用 curl照常可以访问的情况。原因就是docker里面设置了自动添加防火墙规则,导致只要docker有映射端口,防火墙就自动打开对应端口的问题。
为解决这个问题需要在docker配置文件下做出修改:
1)修改docker的配置文件
修改/etc/docker/daemon.json(若没有就新建一个):
vi /etc/docker/daemon.json
添加如下内容:
{
"iptables": false
}
2)重启docker:
systemctl restart docker
再次访问,会发现防火墙已经生效了。
6.设置无法ping主机
为了有效保护自己的主机,可以让远程终端无法ping通自己的主机,这个需要单独进行设置,并且ipv4和ipv6都需要进行设置:
1)ipv4设置
编辑文件:
vi /etc/ufw/before.rules
找到这一行,把最后的单词由ACCEPT修改成DROP:
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
修改完成后,保存并且退出;
2)修改ipv6设置
编辑文件:
vi /etc/ufw/before6.rules
类似,找到这一行,并最后的单词由ACCEPT修改成DROP:
-A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -j DROP
保存并且退出;
3)重新加载防火墙
ufw reload
再次测试会发现,无法ping通主机了,至此防火墙基本设置全部完成。