防火墙
防火墙介绍
其主要功能是保护内部网络免受外部威胁,防止未经授权的访问,并在企业网络和互联网之间建立一道安全屏障。
通过流量过滤、阻止恶意和记录网络活动,防火墙有效地提升了网络的安全性和稳定性。作为网络安全的第一道防线,防火墙在企业、机构和个人用户的网络环境中发挥着关键作用。
防火墙类型
硬件防火墙
H3C、华为、深信服…
防火墙软件
iptable、firewalld、 ufw…
云平台安全组
阿里云、华为云、腾讯云、京东云、AWS、谷歌、Azure
防火墙安全流程
访问控制(核心功能)
入站控制:控制外部哪些 IP/端口可以访问你的服务器
出站控制:控制服务器内部程序可以访问哪些外部网络
白名单/黑名单:只允许信任的 IP 访问(如仅允许公司 IP 连 SSH)
端口保护
只开放必要的端口,关闭其他所有端口
例如:Web 服务器只开放 80/443,SSH 只开放 22,其余全部关闭
防御网络攻击
防止端口扫描:隐藏未开放的端口
防 DoS/DDoS 攻击:限制单个 IP 的连接数/频率
防 SYN Flood:防火墙可检测并丢弃异常连接请求
流量过滤
按协议过滤(TCP/UDP/ICMP)
按状态过滤(只允许已建立的连接返回数据)
按应用层内容过滤(如 Web 应用防火墙 WAF)
日志审计
记录所有被拒绝的连接尝试
帮助排查安全事件和异常流量
软防火墙介绍
本质是Linux内核中网络流量管理模块,Netfilter
iptables是Netfilter客户端;
firewalld是Redhat7之后标配的防火墙,提升了易用性,底层调用iptables;
ufw是Ubuntu系统上的防火墙软件,底层也是iptables;
四表五链、防火墙:iptables
防火墙:iptable的介绍
介绍:iptables是Linux最底层、最通用的防火墙命令工具,直接对接内核netfilter框架,极致灵活、性能拉满,适合资深运维、定制化场景,也是另外两个工具的底层基础。
iptables:指令拆解
iptables 一条完整的规则,必须有的参数只有 3 个,其他都是可选的。
iptables 命令动作 链名 -j 目标动作
命令动作(必须)
告诉 iptables 你要做什么:
-A:添加规则(最常用)
-D:删除规则
-I:插入规则
-L:查看规则
链名(必须)
告诉 iptables 规则作用在哪个方向:
INPUT:进来的流量(别人访问你)
OUTPUT:出去的流量(你访问别人)
FORWARD:转发流量(路由器才用)
没有这个,规则不知道管谁 → 报错。
-j 目标动作(必须)
告诉 iptables 匹配后怎么办:
ACCEPT:允许
DROP:拒绝(直接丢包)
REJECT:拒绝(返回拒绝信息)
没有 -j,规则没有结果 → 报错。安装与基础启停
iptables 完整教程
1.1 安装与基础启停
安装
# Debian/Ubuntu 系
apt update && apt install -y iptables iptables-persistent
# RHEL/CentOS 系
yum install -y iptables iptables-services
注:iptables-persistent/iptables-services 用于实现规则重启后永久生效,必装。
启停与状态管理
systemctl status iptables # 查看状态
systemctl start iptables # 启动
systemctl stop iptables # 停止
systemctl enable iptables # 开启开机自启
systemctl disable iptables # 关闭开机自启
四表五连
四表(4个规则本子)
raw 加急本 — 决定哪些包裹不要走常规流程跳过连接追踪,性能优化
mangle 改装本 — 给包裹贴标签、改地址修改TTL、QoS 优先级等
nat 改地址本 — 换门牌号、换收件人端口映射、内网共享上网(SNAT/DNAT)
ilter 安检本 — 放行还是拦下最常用:允许或拒绝数据包
用快递的形式介绍五链:
PREROUTING → INPUT → FORWARD → OUTPUT → POSTROUTING
↓ ↓ ↓ ↓ ↓
收货入口 送给本机 转发给别 本机发件 发货出口人
英文 中文谐音
raw 绕
mangle 忙狗
nat 奈特
filter 飞欧特儿
英文 中文谐音
PREROUTING 普如停
INPUT 音普特
FORWARD 佛我儿的
OUTPUT 奥特普特
POSTROUTING 跑斯特如停
优先级
先绕(raw)后改(mangle)改完地址(nat)再安检(filter)


防火墙:firewalld
firewalld整体介绍:
介绍:firewalld(新手友好)
firewalld是红帽系(CentOS/RHEL/Fedora/麒麟/Linux)默认的防火墙管理工具,底层对接netfilter/nftables,核心创新是区域(zone)概念,支持动态加载规则,改配置不中断现有连接,对企业运维极其友好。

区域(Zones)概念:

firewalld:安装及启停
安装
# RHEL/CentOS 系(默认自带,无需安装)
yum install -y firewalld
# Debian/Ubuntu 系
apt update && apt install -y firewalld
启停与状态管理
# 查看状态
systemctl status firewalld
# 启动
systemctl start firewalld
# 停止
systemctl stop firewalld
# 开启开机自启
systemctl enable firewalld
# 关闭开机自启
systemctl disable firewalld
# 重载规则(不中断连接,永久规则生效必备)
firewall-cmd --reload
# 完全重启(中断现有连接,慎用)
systemctl restart firewalldfirewalld:运行时 vs 永久配置
运行时配置(临时生效):
不加--permanent参数,配置后立即生效,重启firewalld/服务器后丢失,适合测试规则,避免锁死自己。
永久配置:
加--permanent参数,配置后不会立即生效,必须执行firewall-cmd --reload重载后才生效,重启不丢失。firewalld:指令
命令通用语法
firewall-cmd [参数] [--permanent]
所有永久配置,必须加--permanent,且重载后才生效。
========================================
firewall-cmd 命令常用选项速查表
========================================
选项/子命令 说明
----------------------------------------
--state # 查看防火墙运行状态
--reload # 重载防火墙规则(不中断连接)
--complete-reload # 完全重载防火墙规则(会中断连接)
--list-all # 列出默认区域的所有规则
--list-all-zones # 列出所有区域的所有规则
--get-default-zone # 获取默认区域
--set-default-zone=<zone> # 设置默认区域
--get-active-zones # 列出已激活的区域
--get-zones # 列出所有可用区域
--get-services # 列出默认区域支持的服务
--add-service=<service> # 添加服务到默认区域
--remove-service=<service> # 从默认区域移除服务
--add-port=<port>/<proto> # 添加端口(如 8080/tcp)
--remove-port=<port>/<proto> # 移除端口
--add-rich-rule='<rule>' # 添加富规则
--remove-rich-rule='<rule>' # 移除富规则
--add-source=<网段> # 添加源IP/网段(如 192.168.1.0/24)
--remove-source=<网段> # 移除源IP/网段
--add-forward-port=... # 添加端口转发
--remove-forward-port=... # 移除端口转发
--permanent # 永久生效(需配合 --reload)
----------------------------------------
常用组合示例:
firewall-cmd --state # 检查防火墙是否运行
firewall-cmd --reload # 重载规则
firewall-cmd --list-all # 查看当前区域规则
firewall-cmd --add-service=http --add-service=https # 临时开放HTTP和HTTPS
firewall-cmd --permanent --add-port=8080/tcp # 永久开放8080端口
firewall-cmd --reload # 使永久规则生效
firewall-cmd --zone=public --add-port=3306/tcp --permanent # 指定区域永久开放
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept' # 允许指定网段访问SSH
========================================
高频核心命令
基础状态与区域管理
firewall-cmd --state # 查看firewalld运行状态
firewall-cmd --get-default-zone # 查看默认区域
firewall-cmd --set-default-zone=home # 修改默认区域(比如改成home)
firewall-cmd --get-zones # 查看所有可用区域
firewall-cmd --get-active-zones # 查看当前网卡绑定的区域
firewall-cmd --zone=public --change-interface=eth0 --permanent # 把网卡绑定到指定区域(比如把eth0绑定到public)
firewall-cmd --zone=public --list-all # 查看指定区域的所有规则
firewall-cmd --list-all-zones # 查看所有区域的所有规则
服务管理(firewalld最大优势,不用记端口)
firewalld预定义了上百种常用服务(ssh/http/https/mysql等),直接放行服务,无需记端口号,避免写错端口。
firewall-cmd --get-services # 查看所有预定义服务
firewall-cmd --zone=public --add-service=ssh # 放行public区域的ssh服务(临时生效)
firewall-cmd --zone=public --add-service=http --permanent # 永久放行http服务(必加--permanent)
firewall-cmd --zone=public --add-service=https --permanent # 永久放行https服务(必加--permanent)
firewall-cmd --zone=public --remove-service=mysql --permanent # 移除放行的服务
firewall-cmd --zone=public --list-services # 查看区域内已放行的服务
firewall-cmd --reload # 重载规则,让永久配置生效
3. 端口管理(自定义端口必备)
firewall-cmd --zone=public --add-port=8080/tcp # 临时放行TCP 8080端口
firewall-cmd --zone=public --add-port=53/udp --permanent # 永久放行UDP 53端口(DNS)
firewall-cmd --zone=public --add-port=10000-20000/tcp --permanent # 永久放行端口范围
firewall-cmd --zone=public --remove-port=3306/tcp --permanent # 移除放行的端口
firewall-cmd --zone=public --list-ports # 查看区域内已放行的端口
firewall-cmd --reload # 重载生效SELinux(沙盒)
临时关闭
setenforce 0
永久关闭配置文件
vim /etc/selinux/config
修改为:SELINUX=disabled
虚拟机重启
init 6防火墙
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法