netfilter/iptables 基础入门

netfilter/iptables 基础入门

Firewall防火墙的实现方式

netfilter/iptables 基础入门

什么是netfilter? 

      Netfilter是由Linux内核提供的框架,允许以定制处理程序的形式实现各种与网络相关的操作。Netfilter为包过滤,网络地址转换和端口转换提供各种功能和操作,它们提供了通过网络引导数据包所需的功能,以及提供禁止数据包到达计算机网络中敏感位置的能力。

       Netfilter代表Linux内核中的一组钩子,允许特定的内核模块使用内核的网络堆栈注册回调函数。这些功能,通常以过滤和修改规则的形式应用于流量,是针对穿过网络堆栈中相应钩子的每个数据包进行调用的

什么是iptables?

        iptables 是一个配置 Linux 内核 防火墙 的命令行工具,是 netfilter 项目的一部分。术语 iptables 也经常代指该内核级防火墙。iptables 可以直接配置,也可以通过许多 前端[broken link: invalid section] 和 图形界面[broken link: invalid section] 配置。iptables 用于 ipv4,ip6tables 用于 ipv6。

nftables 已经包含在 Linux kernel 3.13 中,以后会取代 iptables 成为主要的 Linux 防火墙工具;

    Netfilter基本框架图:

    netfilter/iptables 基础入门

表中所包含的链的含义(用来定义表中的过滤器)

netfilter/iptables 基础入门

Netfilter框架实现的功能: 【功能的优先级由低到高】

   filter:过滤,防火墙; 
    nat:network address translation;用于修改源IP或目标IP,也可以改端口; 
    mangle:拆解报文,做出修改,并重新封装起来; 
    raw:关闭nat表上启用的连接追踪机制;

Netfilter框中功能包含的链: 

    raw:PREROUTING, OUTPUT 
    mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING 
    nat:PREROUTING,[INPUT,]OUTPUT,POSTROUTING 
    filter:INPUT,FORWARD,OUTPUT

Netfilter框中报文流向:经过的链(框架中的钩子)

    流入本机:PREROUTING –> INPUT 
    由本机流出:OUTPUT –> POSTROUTING 
    转发:PREROUTING –> FORWARD –> POSTROUTING

Netfilter框中路由功能发生的时刻: 


    报文进入本机后:判断报文的目标主机是 
    报文离开本机之前:判断报文经由哪个接口送往下一站


Netfilter框在用iptables实现规则时需要注意:


组成部分:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就由规则定义的处理动作作出处理;

匹配条件:
    基本匹配条件:内建
    扩展匹配条件:由扩展模块定义;
处理动作:
    基本处理动作:内建
    扩展处理动作:由扩展模块定义;
    自定义处理机制:自定义链

添加规则时的考量点: 

            (1) 要实现哪种功能:判断添加到哪个表上; 
            (2) 报文流经的路径:判断添加到哪个链上;

链:链上的规则次序,即为检查的次序;因此,隐含一定的应用法则:
 (1) 同类规则(访问同一应用),匹配范围小的放上面;
 (2) 不同类的规则(访问不同应用),匹配到报文频率较大的放在上面; 
(3) 将那些可由一条规则描述的多个规则合并起来;
 (4) 设置默认策略;

iptables命令:高度模块化,由诸多扩展模块实现其检查条件或处理动作的定义; 
规则格式:

iptables [-t table] COMMAND   chain [-m matchname [per-match-options]] -j targetname [per-target-options] 

-t table:

raw, mangle, nat, [filter]

命令COMMAND:可分为链的管理与规则管理 
链管理:

-N:new, 自定义一条新的规则链; -X: delete,删除自定义的规则链; 注意:仅能删除 用户自定义的 引用计数为0的 空的 链;
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有: 
        ACCEPT:接受
        DROP:丢弃
        REJECT:拒绝
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除; 

规则管理:

-A:append,追加; 
-I:insert, 插入,要指明位置,省略时表示第一条; 
-D:delete,删除;  (1) 指明规则序号;(2) 指明规则本身;
-R:replace,替换指定链上的指定规则; 
-F:flush,清空指定的规则链; 
-Z:zero,置零; 

查看链的命令:

-L:list, 列出指定鏈上的所有规则; 
     -n:numberic,以数字格式显示地址和端口号;  
     -v:verbose,详细信息;  -vv, -vvv 
     -x:exactly,显示计数器结果的精确值;  
      --line-numbers:显示规则的序号;

chain:包含的链

        PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

匹配条件: 基本匹配条件:无需加载任何模块,由iptables/netfilter自行提供;

[!] -s:检查报文中的源IP地址是否符合此处指定的地址或范围; 
[!] -d:检查报文中的目标IP地址是否符合此处指定的地址或范围;所有地址:0.0.0.0/0 
[!] -p, --protocol protocol protocol 检查定义的数据传输协议 tcp, udp, udplite, icmp, icmpv6 "all"{tcp|udp|icmp} 
[!] -i:数据报文流入的接口;只能应用于数据报文流入的环节,只能应用于PREROUTING,INPUT和FORWARD链;
[!] -o:数据报文流出的接口;只能应用于数据报文流出的环节,只能应用于FORWARD、OUTPUT和POSTROUTING链

处理动作:-j targetname [per-target-options]

ACCEPT:允许    DROP:不允许的   REJECT:拒绝
可以自定义动作

原创文章,作者:GYF,如若转载,请注明出处:http://www.178linux.com/78052

(0)
GYFGYF
上一篇 2017-06-13 20:45
下一篇 2017-06-15 00:00

相关推荐

  • Keepalived实现nginx双主

    一、架构描述与应用 1. 应用场景 大多数的互联网公司都会利用nginx的7层反向代理功能来实现后端web server的负载均衡和动静分离。这样做的好处是当单台后端server出现性能瓶颈时可以对其进行横向扩展从而提高整个系统的并发,同时也可以通过后端server提供的http或tcp监控接口对其进行健康检查实现自动Failover和Failback。&n…

    Linux干货 2016-07-16
  • 早安,Linux

    希望能通过不断的努力,变成一个不一样的我。

    Linux干货 2017-07-11
  • 关于生命中出现的那个男人

    绝对真男人     一个人的一生,会遇到很多很多的男人,哦,也会遇到很多很多的女人,但是我们今天就谈谈男人吧.在这芸芸众生中对于我们这些志向于在linux求发展谋生存的人来说,有个男人会是所有linux爱好者的良师益友.这个男人就是man,这个男人是绝对的男人,因为他是在linux这个系统中无所不知的那个男人. &nb…

    Linux干货 2016-10-27
  • Linux 入门(二)

    又一个周的时间过去了,觉得时间过的好快的呢,大概是因为沉迷于学习吧(害羞脸),在这一周里学习了不少东西呢,下面就来总结一下吧 (1)    cp 复制 如果只是单纯的敲cp复制文件而不加任何选项的时候,如果目的目录文件已经存在,就会直接覆盖,而不会出现任何提示信息,而当在实际操作时,就算不加 –i选项,也会提示要不要覆盖文件 原…

    2017-07-22
  • Linux文件管理命令详解–cp,mv,rm

    在Linux系统里平时需要对目录文件做一些管理操作,其中最基本的有cp,mv,rm等命令: cp命令:copy 复制   其中包含源文件,目标文件: copy分为单源复制和多源复制,详解如下:               单源复制:cp [option]…[-T] S…

    Linux干货 2016-11-06
  • N22-北京-追求极境之人-RSYNC差分编码同步原理

    1客户端发送自己的filelist,filelist包含文件hashindexid(alert32)和关联的文件chunkChecksum(MD5)和hashindexID以便进行快速查找,chunksize根据文件大小进行等分,不足均值部分直接发送不进行MD5校验值生成 发送进程一次从生成器读取一个文件索引号和关联的块校验集合 2对于生成器发送的每个文件I…

    Linux干货 2016-08-22