共计 1515 个字符,预计需要花费 4 分钟才能阅读完成。
在 Ubuntu 中,采用 ufw 管理防火墙,因为 iptables 的规则实在比较复杂,还是通过 ufw 管理比较方便,所以有必要了解一下它的基本使用方法。此外,ufw 不仅仅是 Ubuntu 可以使用,Centos 也是可以的,不过 Centos 默认使用 firewalld 管理。
1. 安装ufw
# Ubuntu安装
sudo apt-get install ufw
# Centos安装
sudo yum install ufw
2. 启用/禁用ufw
启用 ufw:
sudo ufw enable
这里需要注意的是,ufw 开启后默认会拒绝所有流量,如果是使用 ssh 连接,可能会断开。
禁用 ufw:
sudo ufw disable
3. 设置ufw默认规则
前面提到 ufw 默认是拒绝所有入流量,但是这个是可以修改的。
默认接收所有入流量:
sudo ufw default allow
默认拒绝所有入流量:
sudo ufw default deny
# sudo ufw default reject
4. 允许/拒绝特定端口
4.1 在后面添加规则
开放 22 端口:
# 开放所有
sudo ufw allow 22
# 仅对192.168.0.100开放
sudo ufw allow from 192.168.0.100
# 仅对192.168.0.100主机开放22端口
sudo ufw allow from 192.168.0.100 to any port 22
# 在指定主机的同时,只开放22端口的tcp
sudo ufw allow from 192.168.0.100 proto tcp to any port 22
关闭 22 端口:
# 拒绝所有
sudo ufw deny 22
# 拒绝整个网段
sudo ufw deny from 192.168.0.0/24
# 仅拒绝192.168.0.0/24这个网段请求22端口
sudo ufw deny from 192.168.0.0/24 to any port 22
# 限定网段的同时,指定只限制22端口的tcp
sudo ufw deny from 192.168.0.0/24 proto tcp to any port 22
4.2 在指定位置添加规则
sudo ufw insert 1 allow 22
4.3 拒绝某个端口的流量
reject 和 deny 不同的是,reject 会明确的告诉客户端拒绝,客户端能收到响应;而 deny 则是丢弃来自客户端的流量,这样客户端会一直尝试连接,直到超时。
sudo ufw reject 80
4.4 特定端口范围
可以使用 ufw 指定端口范围,一些应用程序使用多个端口,而不是单个端口。
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
5. 删除特定规则
5.1 按规则删除
删除允许规则:
sudo ufw delete allow 80
删除拒绝规则:
sudo ufw delete deny 80
5.2 按序号删除
删除第一条规则
sudo ufw delete 1
6. 查看防火墙状态
sudo ufw status verbose
7. 重置防火墙
删除所有规则,并将防火墙关闭。
sudo ufw reset
8. 禁ping和取消
需要编辑 /etc/ufw/before.rules
文件:
# 禁止ping
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
# 允许ping
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
然后执行如下命令重载 ufw 规则:
sudo ufw force-reload
注意事项
如果启用 ufw 后虚拟机无法 ping 通,原因可能是 ufw 没有允许 ip 转发导致的,编辑 /etc/default/ufw 允许 ip 转发。
DEFAULT_FORWARD_POLICY="ACCEPT"
提醒:本文发布于414天前,文中所关联的信息可能已发生改变,请知悉!