zoukankan      html  css  js  c++  java
  • iptables详解(1):iptables概念

    防火墙相关概念。

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

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

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

    网络防火墙和主机防火墙并不冲突,网络防火墙主外(集体),主机防火墙主内(个人)

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

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

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

    iptables其实不是真正的防护群殴爱你个,理解为一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应内核空间netfilter

    iptables是命令行工具,位于用户空间,利用命令行操作内核空间的netfilter,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

    netfilter是Linux操作系统核心层内部的数据包处理模块,功能如下:

    1.网络地址转换(Network Address Translate)

    2.数据包内容修改

    3.数据包过滤的防火墙功能

    iptables基础

    iptables是按照规则处理数据包。

    规则 存储在内核空间的信息包过滤表中。

            规则指定 源地址、目的地址、传输协议(如TCP、UDP、ICMP)、服务类型(如HTTP、FTP、SMTP)等。

    处理 当数据包的包头符合规则指定的内容,iptables就执行所定义的方法来处理这些数据包。

            处理方法主要有放行(accept)、拒绝(reject)、丢弃(drop)

    配置防火墙的主要工作就是添加、修改和删除这些规则。

    客户端访问服务器的web服务时,客户端发送报文到网卡,而tcp/ip协议栈是属于内核一部分,客户端信息会通过内核的TCP协议传输到用户空间的web服务中,此时的客户端报文的目标终点为web服务所监听的套接字(IP:port)上,当web服务需要响应客户端请求时,web服务发出的响应报文的目标终点则为客户端,这个时候,web服务所监听的ip和端口反而变成了原点。

     

    ①客户端报文访问目标地址是本机某进程。经过的内核链是  PREROUTING链 --> INPUT链--> web服务

    ②由本机某进程发出的报文。OUTPUT链 --> POSTROUTING链

    ③客户端访问的目标地址是其他服务器,转发作用,则不会经过INPUT链,也不会发往用户空间,而是直接在内核空间中经过forward链和postrouting链转发出去,经过的链是路由前、转发、路由后,PREROUTING链 -->  FORWARD链  --> POSTROUTING链

     链的概念

    因为经过一个链的时候不可能只有一条规则,所以很多规则在链上就是下图

    表的概念

    每个链上都有一串规则,但是有些规则是类似的A类规则都是对 ip 或者 端口的过滤,B类规则都是修改报文,实现相同规则的报文应该是可以放在一起的,规则分类相同功能放在一起的集合叫做“表”

    filter表:过滤。                                                   内核模块:iptables_filter

    nat表:网络地址转换。                                       内核模块:iptables_nat

    mangle表:拆解报文,做出修改,并重新封装。内核模块:iptables_mangle

    raw表:关闭nat表上启用的连接追踪机制。        内核模块:iptables_raw

    表和链的关系

    某些 “链” 中注定不会包含某种规则,就好像游戏中A关卡只负责打击陆地敌人,没有防空能力,B关卡可能只负责空中敌人没有防御步兵能力

                                     

    prerouting链只拥有 nat 表、raw表和mangle表所对应功能,prerouting规则只存放在nat、raw和mangle表

    PREROUTING  规则可以存在  raw表,mangle表,nat表

    INPUT               规则可以存在                mangle表,filter表

    FORWARD       规则可以存在                mangle表,filter表

    OUTPUT           规则可以存在  raw表, mangle表,filter表,nat表

    POSTROUTING 规则可以存在               mangle表,nat表

    但是在实际的使用过程中,是以“表”作为操作入口,对规则进行定义,表(功能)< -- > 链 (钩子)

    raw表    用于处理异常         

    PREROUTING链、OUTPUT链

    mangle表      用于指定如何处理数据包,能改变TCP头中的Qos位

    PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING 所有的链都可以被使用 

    nat表           

    PREROUTING链(刚到本机在路由器转发前的数据包,会转换目标ip地址,通常用于DNAT)

    POSTROUTING链(处理即将离开本机的数据包,转换源ip地址,通常用于SNAT) (centos7中有INPUT centos6中没有)

    OUTPUT链(处理本机产生的数据包)

    filter表         

    INPUT链 (处理  来自外部的数据)

    FORWARD链(将数据转发到本机的其他网卡设备)

    OUTPUT链(处理向外发送的数据)

     数据包经过一个“链” 会将当前的规则都匹配一遍 匹配有顺序 可看当前的哪些链是最先开始执行的呢 

    raw  --> mangle --> nat

    同一条链中的表的执行优先级从高到低是这样的,目前一条链中所有的都有的只有OUTPUT表

    raw --> mangle --> nat --> filter

    为了方便管理 还会在某个表中创建自定义链,针对某个应用程序所设置的规则放置在这个自定义链中,但是自定义链不能直接使用,只能被某个默认的链当做 动作 去调用才能起租用,自定义链可以想象成比较短的链,这条短链规则是针对某个应用程序制定,这条链不能直接使用,需要焊接在iptables默认定义链上,才能被iptables使用,所以自定义链都要被当做 “动作”去引用。

    数据经过防火墙的流程

     在写iptables规则的时,需要牢记这张图的规则

     centos7 的nat 有INPUT的 但是centos6没有INPUT

    匹配条件 和 动作 组成了 规则

    --匹配条件分为(基本匹配条件)和(扩展匹配条件

    1、基本匹配条件: 源地址、目标地址

    2、扩展条件是在上面的基础上加上其他条件,以模块的形式存在,使用这些条件需要依赖对应扩展模块,如 源端口,目的端口

    --处理动作 在规则中 为 target 分为(基本动作)和(扩展动作)

    1、ACCECPT:允许数据包通过

    2、DROP:直接丢弃数据包不给任何回应信息,客户端只有从超时的时候才知道

    3、REJECT:拒绝数据包通过,客户端会收到数据发送端的响应拒绝信息

    4、SNAT:源地址转换,解决内网用户用同一个公网上网的问题

    5、MASQUERADE:SNAT的特殊形式,使用在动态临时会变的ip地址上

    6、DNAT:目标地址转换

    7、REDIRECT:在本机做端口映射

    8、QUEUE:将数据包移交到用户空间

    9、RETURN:防火墙停止执行当前链中的后续rules 并返回到调用链(the calling chain)中

    LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,只做操作过程的记录。

  • 相关阅读:
    7. 配置undo表空间
    8. Truncate undo表空间
    品味ZooKeeper之Watcher机制_2
    品味ZooKeeper之纵古观今_1
    《Andrew Ng深度学习》笔记5
    《Andrew Ng深度学习》笔记4
    《Andrew Ng深度学习》笔记3
    《Andrew Ng深度学习》笔记2
    《Andrew Ng深度学习》笔记1
    回归算法
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/11991912.html
Copyright © 2011-2022 走看看