推荐使用firewalld的原因有三:1.firewalld支持动态修改规则,无需中断现有连接;2.它通过区域(zones)管理不同网络接口和信任级别,简化规则逻辑;3.自动处理规则持久化,减少人为操作失误。相比iptables线性操作易出错且每次修改需刷新整个规则集,firewalld更适合现代linux环境,尤其适用于服务器和桌面系统。

在Linux系统中,编写防火墙规则核心在于明确哪些网络流量被允许,哪些被拒绝。这通常涉及到两种主流工具:
iptables
firewalld

编写Linux防火墙规则,无论是基于
iptables
firewalld
使用 iptables

iptables
设置默认策略(Deny All原则): 这是最重要的一步,确保未明确允许的流量都被拒绝。

# 允许已建立的连接和相关流量 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 默认拒绝所有传入和转发流量 iptables -P INPUT DROP iptables -P FORWARD DROP # 默认允许所有传出流量(可根据需求修改) iptables -P OUTPUT ACCEPT
注意: 在实际操作中,先设置默认DROP策略可能会导致远程连接中断,务必先确保允许SSH等管理端口,或在本地控制台操作。
允许特定服务/端口:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -s 192.168.1.100 -j DROP
保存规则:
iptables
sudo netfilter-persistent save
sudo iptables-save > /etc/iptables/rules.v4
sudo service iptables save
sudo iptables-save > /etc/sysconfig/iptables
使用 firewalld
firewalld
查看当前状态和区域:
firewall-cmd --state firewall-cmd --get-active-zones firewall-cmd --zone=public --list-all
允许服务或端口:
firewalld
firewall-cmd --zone=public --add-service=ssh --permanent firewall-cmd --reload
firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --add-service=https --permanent firewall-cmd --reload
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload
阻止特定IP或IP范围:
firewalld
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject' --permanent firewall-cmd --reload
移除规则: 将
add-
remove-
firewall-cmd --zone=public --remove-service=ssh --permanent firewall-cmd --reload
从我个人的经验来看,
firewalld
iptables
iptables
firewalld
public
internal
trusted
firewalld
iptables
firewalld
iptables
firewalld
编写防火墙规则,尤其是初次接触时,很容易踩到一些坑。最常见的,也是最让人抓狂的,就是把自己锁在服务器外面。想象一下,你远程SSH到一台服务器,敲下
iptables -P INPUT DROP
另一个常见的陷阱是规则顺序的误解。
iptables
DROP
ACCEPT
对于
firewalld
--permanent
--permanent
--permanent
--reload
最后,过度依赖默认配置也是一个隐患。虽然
firewalld
public
测试和验证防火墙规则是部署过程中不可或缺的一步,这能帮你避免上线后的“惊喜”。我通常会采用以下几个策略:
首先,分步测试。不要一次性应用所有规则,尤其是当规则集比较复杂的时候。可以先应用最核心的默认拒绝策略和必要的服务开放规则,然后逐步添加其他规则,每添加一部分就进行测试。
其次,使用不同的客户端和网络环境进行测试。例如,如果你的服务器对外提供Web服务,尝试从你的办公网络、家庭网络甚至手机热点去访问,模拟不同的外部访问路径。如果服务有内部和外部访问之分,确保内部客户端可以访问,外部客户端受限。
第三,利用网络诊断工具。
ping
ping
telnet
nc
telnet your_server_ip 22
nmap
nmap
nmap -sT your_server_ip
ss
netstat
第四,检查防火墙日志。许多防火墙系统可以配置日志记录被拒绝或被接受的连接。通过查看这些日志,你可以发现哪些流量被阻止了,以及阻止的原因,这对于调试非常有用。
最后,做好回滚计划。在生产环境中,任何防火墙规则的修改都应该有快速回滚的方案。这意味着在应用新规则之前,你可能需要备份旧规则,或者知道如何快速地清空所有规则(例如
iptables -F
以上就是Linux防火墙规则如何写?_Linuxiptables和firewalld配置实例的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号