【运维必备】iptables详解:掌握Linux防火墙的核心技能
iptables是Linux内核中Netfilter框架的用户空间工具,用于配置和管理网络数据包的过滤规则。它可以根据源IP、目标IP、端口、协议等条件对数据包进行处理,比如允许、拒绝或转发。##创建自定义链MY_CHAIN,并将其应用到INPUT链iptables是Linux系统中强大的防火墙工具,掌握其核心概念和常用命令,可以帮助你轻松应对各种网络安全需求。希望本文能为你提供一些指导,助你解决
Linux系统中,iptables是一个强大的防火墙工具,用于管理网络流量、过滤数据包以及实现网络地址转换(NAT)。无论是保护服务器安全、限制访问,还是实现复杂的网络策略,iptables 都是不可或缺的工具。本文将主要介绍 iptables 的核心概念、常用命令以及实战案例,帮助你从掌握iptables技能。
1 iptables 简介
iptables是Linux内核中Netfilter框架的用户空间工具,用于配置和管理网络数据包的过滤规则。它可以根据源IP、目标IP、端口、协议等条件对数据包进行处理,比如允许、拒绝或转发。
1.2 iptables核心功能
- 数据包过滤:根据规则允许或拒绝数据包
- 网络地址转换(NAT):实现 IP 地址和端口的转换
- 数据包修改:修改数据包的头部信息(如 TTL、TOS)
- 流量控制:限制特定流量的速率
1.3 iptables与Firewalld区别
- iptables:是底层工具,直接操作Netfilter框架,适合高级用户
- firewalld :是基于 iptables高级封装,提供更易用的动态管理功能
2 iptables核心概念
2.1 表(Tables)
iptables使用表来组织规则,每个表用于不同的功能:
filter 表:默认表,用于数据包过滤
nat 表:用于网络地址转换(NAT)
mangle 表:用于修改数据包头部信息
raw 表:用于配置数据包连接跟踪
2.2 链(Chains)
链是规则的集合,数据包会根据链中的规则依次匹配:
INPUT:处理进入本机的数据包
OUTPUT:处理从本机发出的数据包
FORWARD:处理经过本机转发的数据包
PREROUTING:用于NAT,数据包进入时修改目标地址
POSTROUTING:用于NAT,数据包发出时修改源地址
2.3 规则(Rules)
规则是具体的匹配条件和动作:
匹配条件:源IP、目标IP、端口、协议等
动作:
ACCEPT(允许)、DROP(丢弃)、REJECT(拒绝并返回错误)
3 iptables安装
#安装iptables管理命令
yum -y install iptables-service
#加载防火墙的内核模块
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
##modprobe可以指定载入的个别模块
#查看已经加载的模块
lsmod |egrep 'filter|nat|ipt'
#启动防火墙
service iptables start
#停止防火墙
service iptables stop
4 iptables基本操作命令
4.1 iptables规则执行流程

4.2 查看规则
##查看iptables规则
iptables -L -n -v
##参数解释
-L:列出规则
-n:以数字形式显示IP和端口
-v:显示详细信息
4.3 清空规则
#清除所有规则,不会处理默认的规则
iptables -F
#删除用户自定义的链
iptables -X
#链的计数器清零
iptables -Z
4.4 删除规则
##删除iptables规则
##先查看规则号码
iptables -nL --line-numbers
##删除指定链上的指定序号
iptables -D INPUT 1
##-D:删除指定链中的规则(1 表示规则编号)
4.5 添加规则
##指定表(default:'filter')
iptables -t
##添加规则到指定链,默认添加到最后一行
iptables -A
##插入规则,默认插入到第一行
iptables -I
##删除链上规则
iptables -D
4.5 保存规则
##将当前规则保存到文件,重启后不会丢失
iptables-save > /etc/iptables
4.6 恢复规则
##从文件加载规则
iptables-restore < /etc/iptables
5 iptables案例
1.允许特定IP访问 SSH
iptables -A INPUT -p tcp --dport 22 -s 192.168.10.30 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
2.限制ICMP请求(Ping)
##禁止外部主机Ping本机
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
3. 配置端口转发
##将本机80端口的流量转发到192.168.10.32:8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.10.32:8080
iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.32 --dport 8080 -j MASQUERADE
4. 防止 DDoS 攻击
##限制每分钟最多接受30个连接,突发连接数为100
iptables -A INPUT -p tcp --dport 80 -m limit --limit 30/minute --limit-burst 100 -j ACCEPT
5.放开指定地址段
##允许192.168.10.15-192.168.10.94地址访问22端口
-A INPUT -m iprange --src-range 192.168.10.15-192.168.10.94 -p tcp --dport 22 -j ACCEPT
6 iptables高级技巧
6.1 使用自定义链
##创建自定义链MY_CHAIN,并将其应用到INPUT链
iptables -N MY_CHAIN
iptables -A MY_CHAIN -s 192.168.10.0/24 -j ACCEPT
iptables -A INPUT -j MY_CHAIN
5.2 记录日志
##将SSH访问尝试记录到系统日志。
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Attempt: "
5.3 连接跟踪
##允许已建立连接和相关的数据包通过
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
7 总结
iptables是Linux系统中强大的防火墙工具,掌握其核心概念和常用命令,可以帮助你轻松应对各种网络安全需求。希望本文能为你提供一些指导,助你解决一些iptables相关的问题!
更多推荐




所有评论(0)