Linux防火墙配置详解:从零学会iptables与fire

前置准备


在开始配置Linux防火墙之前,请确保以下条件已满足:



  • 一台运行CentOS 7+或Ubuntu 18.04+的服务器(其他发行版类似)。

  • 拥有root权限或sudo权限。

  • 已通过SSH连接到服务器。

  • 备份当前防火墙规则(可选但推荐):对于iptables可使用iptables-save > /root/iptables.backup,对于firewalld可备份/etc/firewalld/目录。


分步操作


一、使用iptables(传统内核级防火墙)



  1. 检查是否已安装iptables


    which iptables

如果未安装,CentOS执行:yum install -y iptables-services

Ubuntu执行:apt install -y iptables-persistent



  1. 查看当前规则


    iptables -L -n -v

默认所有流量允许,需手动添加规则。



  1. 添加基本规则(以开放SSH端口22为例)


    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP # 拒绝其他所有入站流量

注意:如果当前SSH端口不是22,请相应修改端口号,避免把自己踢出服务器。



  1. 保存规则(CentOS)


    service iptables save
systemctl enable iptables

Ubuntu使用:netfilter-persistent save


二、使用firewalld(动态防火墙管理工具)



  1. 查看firewalld状态


    systemctl status firewalld

如果未运行,启动并设置开机自启:systemctl start firewalld && systemctl enable firewalld



  1. 添加允许端口


    firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --reload

也可以添加服务:firewall-cmd --permanent --add-service=ssh



  1. 查看已开放端口


    firewall-cmd --list-all


  1. 移除端口


    firewall-cmd --permanent --remove-port=80/tcp
firewall-cmd --reload

避坑指南



  • 千万不要直接执行iptables -A INPUT -j DROP而不先放行SSH,否则你会立刻断开连接。务必先添加SSH允许规则再设置默认拒绝。

  • firewalld的运行时规则(不加--permanent)在重启或firewall-cmd --reload后会丢失,一定要加上--permanent保存。

  • 如果同时启用了iptables和firewalld,两者会冲突。建议只使用其中一个:CentOS 7+默认firewalld,CentOS 6使用iptables。

  • 修改防火墙规则后需及时验证,使用新终端连接测试,不要关闭当前会话,以免误锁自己。


高频问题解答



  • Q:如何开放一个端口范围?


A:iptables示例:iptables -A INPUT -p tcp --dport 8000:9000 -j ACCEPT

firewalld示例:firewall-cmd --permanent --add-port=8000-9000/tcp



  • Q:为什么添加规则后仍不能访问?


A:检查是否放行正确协议(TCP/UDP),确认服务器上服务是否监听在正确IP(0.0.0.0),以及云服务商的安全组是否也放行了该端口。



  • Q:iptables重启后规则丢失怎么办?


A:确保已执行service iptables save或安装了iptables-persistent,并设置服务开机自启。


效果验证



  1. 使用telnet或nc测试端口连通性


    telnet 你的服务器IP 22

或者

nc -vz 你的服务器IP 22


如果返回Connectedopen,说明防火墙已放行该端口。



  1. 测试被拒绝的端口


    telnet 你的服务器IP 80   # 如果80端口未开放,应显示连接超时或被拒绝


  1. 检查iptables规则计数


    iptables -L -n -v | head -20

查看pkts列,如果被拒绝的包数量增加,说明规则生效。



  1. firewalld查看运行时规则


    firewall-cmd --list-all

确认portsservices列表包含你添加的项。


通过以上步骤,你已经完成了Linux防火墙配置详解的实践操作。

建议每次修改规则后立即验证,并将规则备份到安全位置。

遇到异常时优先检查SSH连接是否断开,并使用备用终端恢复默认规则。

分享到:
上一篇
零基础用服务器搭建NAS私有云,新手也能轻松上手
下一篇
宝塔面板一键迁移网站,这六个步骤帮你轻松搬站(零基础版)
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意