linux防火墙规则
iptables
1. 查看当前防火墙规则
使用 iptables 查看规则:
sudo iptables -L
这将列出所有的链和规则。-L
参数代表列出(List)。
查看详细信息:
sudo iptables -L -v -n
-v
参数代表详细(Verbose),-n
参数代表不解析服务名称(Numeric)。
查看特定链的规则:
sudo iptables -L INPUT -v
2. 配置防火墙规则
添加规则允许 SSH:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
这条命令将添加一条规则到 INPUT
链,允许所有进入的 TCP 流量到达端口 22(SSH)。
添加规则拒绝特定 IP:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
这条命令将拒绝来自 IP 地址 192.168.1.100
的所有流量。
添加规则允许来自特定 IP 的 HTTP 访问:
sudo iptables -A INPUT -p tcp -s 192.168.1.101 --dport 80 -j ACCEPT
添加规则允许已建立的连接:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
添加规则允许出站流量:
sudo iptables -A OUTPUT -j ACCEPT
3. 删除防火墙规则
删除特定规则: 要删除规则,你需要知道规则的编号。使用 -L --line-numbers
查看规则编号:
sudo iptables -L --line-numbers
然后删除规则,例如删除编号为 3 的规则:
sudo iptables -D INPUT 3
4. 保存防火墙规则
保存 iptables 规则: 在 Debian/Ubuntu 上,你可以使用 iptables-persistent
包来保存规则:
sudo apt-get install iptables-persistent
在 CentOS/RHEL 上,你可以使用 service
或 systemctl
命令来保存规则:
sudo service iptables save
或者
sudo systemctl save iptables
5. 恢复防火墙规则
在系统启动时恢复 iptables 规则: 在 Debian/Ubuntu 上,安装 iptables-persistent
后,规则会自动在启动时恢复。在 CentOS/RHEL 上,你需要手动保存规则,并在 /etc/rc.d/rc.local
或使用 systemctl
配置启动脚本中添加恢复规则的命令。
6. 重置防火墙规则
重置 iptables 到默认设置:
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
-F
代表清空规则,-X
代表清空用户自定义链。
7. 防火墙规则的持久化
Ubuntu/Debian: 安装 iptables-persistent
包后,它会在 /etc/iptables/rules.v4
文件中保存规则。
CentOS/RHEL: 你可以使用 iptables-services
包来管理 iptables 的持久化:
sudo yum install iptables-services
sudo systemctl enable iptables
sudo service iptables save
8. 查看和管理系统服务
查看所有服务:
sudo systemctl list-units --type=service
启动/停止服务:
sudo systemctl start iptables
sudo systemctl stop iptables
设置服务开机启动:
sudo systemctl enable iptables
禁用服务开机启动:
sudo systemctl disable iptables
以上是 Linux 防火墙规则的完整指南,包括查看、配置、删除、保存、恢复和重置防火墙规则等操作。请根据你的具体需求和 Linux 发行版进行相应的操作。
9. 关闭或强制删除防火墙
apt-get purge netfilter-persistent && reboot
或 rm -rf /etc/iptables && reboot
firewalld
1. Firewalld 简介
Firewalld
是一个动态防火墙管理工具,它提供了基于区域(zone)和服务(service)的简化配置界面,使得管理防火墙规则更加容易。它支持动态更新防火墙规则,可以在运行时添加、删除、修改规则,而不需要重新加载整个防火墙配置。
2. 服务的启动、停止和状态查看
启动防火墙:
sudo systemctl start firewalld
停止防火墙:
sudo systemctl stop firewalld
设置防火墙开机启动:
sudo systemctl enable firewalld
禁用防火墙开机启动:
sudo systemctl disable firewalld
查看防火墙状态:
sudo systemctl status firewalld # 或者 sudo firewall-cmd --state
查看版本:
sudo firewall-cmd --version
3. 查看和设置默认区域
查看默认区域:
sudo firewall-cmd --get-default-zone
查看所有可用的区域:
sudo firewall-cmd --get-zones
查看当前活动区域:
sudo firewall-cmd --get-active-zones
设置默认区域:
sudo firewall-cmd --set-default-zone=your_zone
其中your_zone是你想要设置的默认区域的名称,比如public、internal、dmz等。
4. 使用 firewall-cmd 命令行工具进行规则配置
添加规则开放端口:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
添加规则允许服务:
sudo firewall-cmd --zone=public --add-service=http --permanent
删除规则:
sudo firewall-cmd --zone=public --remove-service=http --permanent
5. 重新加载防火墙配置
为了使永久配置生效,需要重新加载 firewalld
:
sudo firewall-cmd --reload
6. 查询已开放的端口、已允许的服务
查询特定区域支持的所有特性:
sudo firewall-cmd --zone=zone_name --list-all
其中,zone_name是你要查询的区域的名称。
查询特定区域支持的所有服务:
sudo firewall-cmd --zone=zone_name --list-services
查询特定区域开放的端口:
sudo firewall-cmd --zone=zone_name --list-ports
7. 绑定接口到特定区域
永久更改接口的区域绑定:
sudo firewall-cmd --zone=home --add-interface=eth0 --permanent
为了使永久更改生效,需要重新加载firewalld
sudo firewall-cmd --reload
再次验证更改:
sudo firewall-cmd --get-active-zones