Linux防火墙规则如何编写_深度讲解提升系统稳定性【教程】

云磊吖_8393

云磊吖_8393

2025-12-23

331人浏览

原创

Linux防火墙核心在于理解流量流向与最小权限原则,iptables按表→链→规则三级组织,filter表处理本机进出流量,规则顺序决定匹配结果,firewalld是其封装层,需注意Docker兼容性及持久化配置。

linux防火墙规则如何编写_深度讲解提升系统稳定性【教程】

Linux防火墙规则的核心是明确“允许什么、拒绝什么”,关键不在堆砌命令,而在理解流量流向、服务依赖和最小权限原则。用错一条规则可能让SSH断连、服务不可达,甚至掩盖真实攻击行为。

iptables规则编写:先理清链与表的分工

iptables不是“一条命令配完事”的工具。它按表(table)→链(chain)→规则(rule)三级组织:

  • filter表:处理进出本机的包,默认链有INPUT(进)、OUTPUT(出)、FORWARD(转发);日常防护90%工作在这里
  • nat表:仅在做端口映射、SNAT/DNAT时用,比如公网IP映射内网Web服务,普通服务器不建议随意动
  • 规则顺序决定成败:iptables自上而下匹配,一旦命中即执行动作(ACCEPT/DROP/REJECT),后续规则不再检查。所以“允许SSH”必须写在“默认DROP”之前

实用规则模板:从安全基线开始写

不要一上来就封IP或限速。先建立稳定可用的基础策略:

  • 保留本地回环通信:iptables -A INPUT -i lo -j ACCEPT
  • 放行已建立连接(保障响应包能回来):iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  • 只开必要端口,如SSH(建议改非22端口):iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
  • 最后拒绝所有其他入站:iptables -P INPUT DROP(注意:-P是设置默认策略,不是加规则!别和-A混用)

⚠️ 操作前务必加一条“临时放行”规则并设超时,防锁死:iptables -I INPUT 1 -p tcp --dport 2222 -j ACCEPT && sleep 300 && iptables -D INPUT 1

firewalld更适配现代发行版?别盲目切换

CentOS 7+/RHEL 8+ 默认用firewalld,它本质是iptables的封装层,不是替代品。优势在于动态重载、区域(zone)概念清晰、支持服务名(如http、ssh)而非硬记端口:

Docker Encyclopedia
Docker Encyclopedia

Docker 文档优先工作流:针对 Docker 特定问题、故障排除、命令规划、镜像/构建、容器/运行时操作及 Compose 等

下载
  • 查当前活跃区域:firewall-cmd --get-active-zones
  • 永久开放HTTPS:firewall-cmd --permanent --add-service=https
  • 重载生效:firewall-cmd --reload(不中断现有连接)
  • 慎用--remove-all-services——可能一键关掉数据库、监控等依赖端口

若用Docker/Kubernetes,注意firewalld默认与docker0桥接冲突,需配置firewall-cmd --permanent --zone=docker --add-interface=docker0或关闭firewalld改用iptables直接管理。

验证与排错:别信“写了就生效”

规则写完必须验证,常见陷阱:

  • 用iptables -L -n -v看计数器:若某规则packets为0,说明流量根本没走到那里(可能是前面规则截获,或源IP/协议不匹配)
  • 模拟测试:从另一台机器用telnet 服务器IP 端口或curl -v http://IP:端口,比看日志更快定位拦截点
  • 记录被拒连接(用于分析攻击):iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: ",再配合dmesg或/var/log/messages查看
  • 规则持久化别忘:iptables需iptables-save > /etc/sysconfig/iptables(CentOS)或netfilter-persistent save(Debian),firewalld默认自动保存

基本上就这些。规则不在多,在准;防护不在严,在稳。每次变更只动一处、验证一项,系统稳定性自然提升。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

2023.06.14

3703

6

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

2023.10.30

855

4

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

6107

5

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.10

2588

6

go中interface用法
go中interface用法

本专题整合了go语言中int相关内容,阅读专题下面的文章了解更多详细内容。

2025.09.10

4010

10

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.24

854

4

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

745

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5919

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

6977

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习