Linux中的防火墙类型
-
iptables:基于内核的防火墙,使用表(tables)和链(chains)来管理规则。
-
nftables:新一代的防火墙框架,旨在替代
iptables
,提供更灵活和高效的规则管理。 -
firewalld:动态管理防火墙规则的服务,支持区域(zones)和富规则(rich rules),适用于RHEL、CentOS等系统。
-
UFW (Uncomplicated Firewall):基于
iptables
的简化防火墙管理工具,适用于Debian和Ubuntu系统。
防火墙的下载
firewalld:
sudo yum install firewalld # 适用于RHEL/CentOS
sudo apt-get install firewalld # 适用于Debian/Ubuntu
UFW:
sudo apt-get install ufw # 适用于Debian/Ubuntu
防火墙的开启和关闭
1、设置处修改
-
firewalld:
-
开启:在系统设置中找到“防火墙”或“安全”选项,启用
firewalld
。 -
关闭:在系统设置中找到“防火墙”或“安全”选项,禁用
firewalld
。
-
-
UFW:
-
开启:在系统设置中找到“防火墙”或“安全”选项,启用
UFW
。 -
关闭:在系统设置中找到“防火墙”或“安全”选项,禁用
UFW
。
2、命令行修改
1、firewalld:
开启:
sudo systemctl start firewalld
sudo systemctl enable firewalld
关闭:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
eg:允许HTTP和HTTPS流量:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
2、UFW:
开启:
sudo ufw enable
关闭:
sudo ufw disable
添加和修改防火墙规则
1、firewalld
1.添加规则:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="255.255.255.255" service name="ssh" reject'
sudo firewall-cmd --reload
2.修改规则:
sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="255.255.255.255" service name="ssh" reject'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="255.255.255.255" service name="ssh" accept'
sudo firewall-cmd --reload
3.删除规则:
删除富规则
1. 列出当前的富规则:
sudo firewall-cmd --list-rich-rules
2. 删除特定的富规则:
sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="255.255.255.255" service name="ssh" reject'
3. 重新加载防火墙配置以应用更改:
sudo firewall-cmd --reload
删除端口规则
如果之前添加了端口规则,可以使用以下命令删除:
1. 列出当前的端口规则:
sudo firewall-cmd --reload
2. 删除特定的端口规则:
sudo firewall-cmd --permanent --remove-port=<端口号>/<协议>
3. 重新加载防火墙配置以应用更改:
sudo firewall-cmd --reload
删除服务规则
如果之前添加了服务规则,可以使用以下命令删除:
1. 列出当前的服务规则:
sudo firewall-cmd --list-services
2. 删除特定的服务规则:
sudo firewall-cmd --permanent --remove-service=<服务名称>
3. **重新加载防火墙配置以应用更改**:
sudo firewall-cmd --reload
tips:添加规则的时候如果没有使用 --permanent
选项,那么规则只会在当前会话中生效,重启后会丢失。确保使用的是永久规则
tips2:[规则顺序]防火墙规则是按顺序处理的,如果之前有其他规则允许了来自255.255.255.255的SSH访问,那么新添加的拒绝规则可能不会生效。可以通过以下命令查看所有规则
sudo firewall-cmd --list-all
2、UFW
1.添加规则:
sudo ufw allow 22/tcp # 允许SSH访问
sudo ufw reload
2.修改规则:
sudo ufw delete allow 22/tcp
sudo ufw deny 22/tcp
sudo ufw reload
查看当前防火墙规则
1.firewalld
sudo firewall-cmd --list-all
2.UFW
sudo ufw status verbose
3.iptables
sudo iptables -L -n -v
4.nftables
sudo nft list ruleset