欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

深入解析Linux防火墙的iptables原理

最编程 2024-01-02 20:59:24
...

防火墙相关概念

逻辑上讲。防火墙可以大体分为主机防火墙和网络防火墙。

主机防火墙:针对于单个主机进行防护。

网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。

网络防火墙和主机防火墙并不冲突,可以理解为,网络防火墙主外(集体), 主机防火墙主内(个人)。

物理上讲,防火墙可以分为硬件防火墙和软件防火墙。

硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。

软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。

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 计数器清零