深入解析Linux防火墙的iptables原理
防火墙相关概念
从逻辑上讲。防火墙可以大体分为主机防火墙和网络防火墙。
主机防火墙:针对于单个主机进行防护。
网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。
网络防火墙和主机防火墙并不冲突,可以理解为,网络防火墙主外(集体), 主机防火墙主内(个人)。
从物理上讲,防火墙可以分为硬件防火墙和软件防火墙。
硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。
软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字叫netfilter
netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。
iptables为我们提供了如下"表"
filter表:负责过滤功能,防火墙;内核模块:iptables_filter
nat表: network address translation,网络地址转换功能;内核模块:iptable_nat
mangle表:拆解报文,做出修改,并重新封装 的功能;iptable_mangle
raw表: 关闭nat表上启用的连接追踪机制;iptable_raw
表链关系
PREROUTING 的规则可以存在于:raw表,mangle表,nat表。
INPUT 的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。
FORWARD 的规则可以存在于:mangle表,filter表。
OUTPUT 的规则可以存在于:raw表,mangle表,nat表,filter表。
POSTROUTING 的规则可以存在于:mangle表,nat表。
表(功能)<--> 链(钩子):
raw 表中的规则可以被哪些链使用:PREROUTING,OUTPUT
mangle 表中的规则可以被哪些链使用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat 表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)
filter 表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT
iptables流程关系图
精简图:
详细图:
表链关系图:
处理动作(-j)
处理动作在iptables中被称为target(这样说并不准确,我们暂且这样称呼),动作也可以分为基本动作和扩展动作。
此处列出一些常用的动作,之后的文章会对它们进行详细的示例与总结:
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
DNAT:目标地址转换。
REDIRECT:在本机做端口映射。
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。
iptables管理命令
选择表 | -t | 指定表 |
---|---|---|
添加新规则 | -A | 在链的最后追加一条规则 |
-I | 在链的开头或指定序号插入一条规则 | |
-x | 显示精确值,不做单位换算 | |
替换规则 | -R | 替换一条指定的规则 |
查看规则 | -L | 列出所有规则 |
-n | 以数据形式显示地址与端口信息 | |
-v | 以更加详细的方式显示 | |
--line-numbers | 查看规则时,显示规则序号 | |
删除或清空规则 | -D | 删除指定序号的一条规则 |
-F | 清空指定表中的所有规则 | |
设置默认策略 | -P | 为指定的链设置默认规则 |
新建规则链 | -N | 新建自定义链 |
重命名链 | -E | 重命名自定义链 |
删除链 | -X | 删除自定义空链 |
-Z | 计数器清零 |
上一篇: Linux中防火墙的简单使用方法
下一篇: Linux之iptables防火墙
推荐阅读
-
深入理解Linux指令 | tar命令实操指南:打包与解压文件的艺术,广泛应用于备份与文件压缩——第二部分,操作技巧解析
-
深入解析Kubelet中的Topology Manager工作原理
-
详解视频推送与拉取:深入理解视频流技术的工作原理及涉及内容全面解析
-
深入解析:CA 与数字证书的工作原理
-
深入解析DefaultRobotHWSim类的writeSim函数工作原理
-
深入解析AR眼镜的奥秘:工作原理详解(上篇)
-
深入理解目标检测:卷积神经网络(CNN)的基础解析与工作原理
-
深入理解:Flink在Kubernetes中的工作原理——从基础概念开始解析
-
深入解析 Linux 内核中的原子操作 atomic_t
-
深入解析Linux 0.12内核:第二部分 - 统一与独立编址的笔记