linux防火墙配置的核心在于设定规则,主要使用iptables和firewalld两个工具。1. iptables直接操作内核netfilter框架,规则链式排列,功能强大但复杂;firewalld则提供更高层的动态管理接口,通过区域(zones)简化配置。2. 配置iptables时需按顺序添加规则,确保ssh等关键服务开放,否则可能导致自身被锁;规则保存依赖netfilter-persistent或iptables-services等机制。3. firewalld通过--permanent参数实现规则持久化,并通过--reload应用更改,管理更便捷。4. 选择工具时,firewalld适合现代系统,iptables适合需底层控制的场景。5. 防火墙最佳实践包括默认拒绝、最小权限、日志记录、连接速率限制、ipv6考虑及定期审查,确保安全性和灵活性。
配置Linux防火墙,本质上就是在为你的服务器网络进出数据设定一套规则。这事儿听起来好像有点复杂,但说白了,就是决定哪些数据包能进来、哪些能出去,以及哪些应该被直接丢弃。我们通常会用到两个核心工具:底层的
iptables
firewalld
Linux防火墙的配置,无论是基于传统的
iptables
firewalld
iptables
firewalld
使用 iptables
iptables
sudo iptables -L -n -v
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -P INPUT DROP
netfilter-persistent
sudo apt-get install netfilter-persistent
sudo systemctl enable netfilter-persistent
sudo netfilter-persistent save
iptables-services
sudo yum install iptables-services
sudo systemctl enable iptables
sudo systemctl start iptables
sudo iptables-save > /etc/sysconfig/iptables
使用 firewalld
firewalld
firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --state
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --zone=public --list-all
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewalld
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --remove-service=ssh --permanent
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
这确实是个老生常谈的问题,但它背后的考量至今仍有价值。说实话,我个人觉得,对于大多数现代Linux发行版,尤其是基于RHEL/CentOS的系统,
firewalld
firewalld
public
internal
trusted
iptables
firewalld
iptables
但话说回来,
iptables
firewalld
iptables
nftables
iptables
我的建议是:如果你是新手,或者主要使用RHEL/CentOS/Fedora这类系统,直接上手
firewalld
firewall-cmd
iptables
iptables -L
这是一个非常关键的问题,我记得有一次,就是因为忘记了这一步,重启服务器后所有服务都对外暴露了,那真是惊出一身冷汗。无论是
iptables
firewalld
对于iptables
netfilter-persistent
iptables
sudo apt install netfilter-persistent
sudo systemctl enable netfilter-persistent
iptables
sudo netfilter-persistent save
/etc/iptables/rules.v4
/etc/iptables/rules.v6
iptables-services
sudo yum install iptables-services
sudo systemctl enable iptables
sudo systemctl start iptables
sudo iptables-save > /etc/sysconfig/iptables
ip6tables-save > /etc/sysconfig/ip6tables
iptables
对于firewalld
firewall-cmd
firewalld
--permanent
例如:
sudo firewall-cmd --zone=public --add-service=http --permanent
这条命令会将HTTP服务的允许规则写入
firewalld
/etc/firewalld/zones/public.xml
--permanent
sudo firewall-cmd --reload
firewalld
firewalld
iptables
配置防火墙,可不仅仅是开放几个端口那么简单,它更像是一门艺术,需要深思熟虑。这块儿说起来简单,做起来嘛,往往因为疏忽或缺乏整体安全观而留下隐患。
1. 默认拒绝(Default Deny)原则: 这是防火墙配置的黄金法则。意思是:除非你明确允许,否则一切流量都应该被拒绝。
iptables
DROP
iptables -P INPUT DROP
firewalld
2. 最小权限原则: 不要为了方便而开放过多的端口或服务。比如,如果你的SSH服务只应该从你办公室的IP地址访问,那就明确指定源IP:
sudo iptables -A INPUT -s 203.0.113.42 -p tcp --dport 22 -j ACCEPT
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.42" port port="22" protocol="tcp" accept' --permanent
3. 启用日志记录: 防火墙不仅是防御工具,也是审计工具。记录被拒绝的连接,可以帮助你发现潜在的攻击尝试,或者排查规则配置错误。
iptables
LOG
sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES_DROP: " --log-level 7
sudo iptables -A INPUT -j DROP
/var/log/messages
syslog
4. 限制连接速率(Rate Limiting): 对于像SSH这样的服务,暴力破解是常见的攻击手段。你可以限制在一定时间内来自同一IP的连接尝试次数。
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
iptables
5. 考虑IPv6: 别忘了IPv6!很多系统现在都是双栈的,如果你的防火墙只配置了IPv4规则,那么IPv6的流量可能就畅通无阻了。
iptables
ip6tables
firewalld
6. 定期审查和更新: 服务器环境和服务会不断变化,防火墙规则也应该随之更新。新增的服务需要开放端口,不再使用的服务应该关闭端口。定期审查你的防火墙规则,确保它们仍然符合你的安全策略,并且没有多余的、不必要的开放。
防火墙配置不是一劳永逸的事情,它是一个持续的过程。保持警惕,并不断学习新的安全实践,才能真正保护好你的系统。
以上就是Linux防火墙配置实战_Linux iptables与firewalld设置教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号