码迷,mamicode.com
首页 > 其他好文 > 详细

iptables大体了解

时间:2015-07-24 18:46:23      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:防火墙   网络   网卡   主机   

tcp/ip协议网络上一个节点,大门洞开,套接字会话,需要ip和端口,检查套接字报文,套接字和tcp/ip协议差别。主机防火墙,工作在主机上。进入网卡,到内核中的tcp/ip协议栈,工作在tcp/ip协议栈上,在一些协议栈上某些位置放上卡哨,在设定检查规则。

网络防火墙,在网络外部。

防火墙:工作与主机或网络边缘,对于进出的报文根据定义的规则做检查,进而对被规则匹配到的报文最为相应处理的套件;

网络层防火墙,检查报文的帧首部,IP首部,tcp首部,不能对数据内容进行检查。

iptables/netfilter ,netfilter就是tcp/ip协议栈上的卡哨,用iptables加入规则

规则优先级从高到低以及能工作的卡哨位置:

技术分享

 技术分享               

                 raw :目标是关闭nat表上启动的连接追踪功能,PREROUTING OUTPUT

         mangle;修改tcp/ip首部的一些特性,任意位置。

         nat:地址转换,POSTROUTING  PREROUTING OUTPUT

         filter;过滤 INPUT FORWORD  OUTPUT

INPUT:在数据进入应用空间时设定的卡哨也叫做链。

FORWORD:主机路由过程的卡哨

OUTPUT:数据从应用程序发出时经过的卡哨

PREROUTING:数据进入网卡进行路由策略前的卡哨

POSTROUTING:数据最后选择网卡要离开前的卡哨

数据报文流程:跟本机内部通信,PREROUTING INPUT OUTPUT POSTROUTING

由本机转发的数据:PREROUTING FORWORD POSTROUTING

注意数据报文的流向,决定源IP目标IP。

iptables:用户空间的工具,写规则,并自动发往netfilter,立即生效。

基本语法

iptables 【-t  TABLE】 –A 链名 匹配条件 –j 处理目标

默认的表filter

COMMAND:答题上有下边几种

1.对链上规则的一些命令-A:在后面加一条规则

                               -I:插入一条新规则

                              -D:删除规则

                              -R:替换规则

                              -L:查询规则 –L -n:数字格式显示地址和端口。-L -v:详细格式 --line-numbers显示规则行号 –x 不要对计数器计数结果做单位换算,显示精确值。

2.对链的一些命令:-F :清空规则链

                         -N:自建一个链,只能被调用

                         -X删除一个自定义链 

                         -Z计数器归零

                         -P:设定默认策略,对filter表来讲,默认规则为ACCEPT 或者DROP

                         -E:重命名自定义链

iptables 【-t  TABLE】 –A 链名 匹配条件 –j 处理目标

匹配条件:通用匹配

         -s 地址:指定报文源IP地址匹配范围:可以是IP也可以是网络地址,可以用!取反。

          -d地址:报文目标ip地址

         -p协议,指定匹配报文的协议类型,一般tcp udp icmp

          -i:数据报文流入网卡:只能作用在数据传入的前半部分PREROUTING INPUT FORWORD

         -o:数据流出网卡:只能作用在数据传入的后半部分 FORWORD OUTPUT POSTROUTING

扩展匹配调用netfilter 用-m

       隐式扩展:当使用-p {tcp|udp|icmp}中的一种时默认调用了对应模块,可以直接使用扩展选项

        -p tcp对tcp/ip协议生效:--sport指定源端口 –dport 目标端口

                                         --tcp-flags syn,ack,rst,fin   syn all(全选,或者值都为1) none(值都为0)

                                          --tcp-flags syn,ack,rst,fin   syn           这是定义tcp第一次握手

                                          --syn   ALL                                             也可以定义tcp第一次握手

        -p icmp主要限制ping的 :--icmp-type 8是能请求报文类型,0是指响应的报文类型

      显式扩展:必须明确指出使用哪个模块进行扩展,才能使用扩展选项

                 -m 扩展模块名称(在iptables和netfilter上都要有这个模块)

                1)multiport用于匹配非连续或者连续端口,对多指定15个端口

                      --sports 【port,port:port】指定源端口

                       --dports目标端口

                       --ports源和目标都包含

iptables -I INPUT -s 192.168.0.0/16 -d 192.168.147.128 -p tcp -m multiport --dports 22,80 -j ACCEPT
是主机防火墙,在目标主机上添加,实现特定ip可以连接主机的http和ssh服务
没指定表就默认在filter表上实现过滤,在INPUT链上从192.168网段到192.168.147.128的tcp报文使用multiport模块指定192.168.147.128主机上的端口可以接受报文

 

                2)iprange:匹配指定范围内的地址,匹配一段连续地址而非整个网络。

                [!]--src-range IP[-P]

                [!]—dst-range IP[-P]

               3)string:字符串匹配,检测应用层报文中的字符串。字符串算法,kmp, bm

                  专用选项--algo{kmp|bm}

                             --string

                             --hex-string 16进制的字符串

                 4)state:状态检查需要开启状态连接功能,不适用于高并发服务器。

                            --state

                             连接追踪中的状态

                                  NEW:新建立一个会话

                                   ESTABLISHED:已建立的连接

                                   RELATED:有关联的连接

                                   INVALID:无法识别的连接

                       调整连接追踪功能所能容纳的连接最大数值

                             /proc/sys/net/nf_conntrack_max

                       当前追踪的所有连接

                           /proc/net/nf_conntrack

                       追踪不同协议或连接类型追踪时的属性

                          /proc/sys/net/netfilter目录

   放行被动模式下的ftp服务

                         1.装在模块/lib/modules/KERNEL_VERSION/kernel/net/netfilter/

                        模块:nf_conntrack_ftp

             modeprobe加载模块

                         2.放行报文请求

                            a.放行NEW状态对21端口的请求

                            b.放行所有ESTABLISHED和RALATED状态报文

                        3.放行响应报文

                            放行所有ESTABLISHED和RALATED状态报文                         limit:速率限制

                      --limit n [/second/minute/hour/day]

                      --limit-burst n :能最多存几个

                 time:基于时间做访问控制

                        --datestart

                        --datestop

                       --timestart

                       --timestop

                       --weeks

             connlimit;连接数限制,对每IP能发起并发连接数限制

                     --connlimit-above N

                   

处理目标:

     内置目标:

        DROP:悄悄丢弃

        REJECT:强硬拒绝

        ACCEPT:接受

     写规则:先确定功能(表),确定报文流向,确定要实现的目标,确定匹配条件

流向:1.访问本机进程,PREROUTING INPUT

         2.出去的报文,OUTPUT POSTROUTING

         3.本机转发,PRETOUTING FORWARD       POSTRONTING

         4.响应,PRETOUTING FORWARD POSTRONTING

iptables 语法检查  netfilter立即生效

切记:写给则之前,先添加放行自己的会话

永久生效,规则文件,或者脚本 规则文件是/etc/sysconfig/iptables

保存规则iptables-save > /etc/sysconfig/iptables

            service iptables save

        生效iptables-restore < /etc/sysconfig/iptables

              service iptables restart

设置默认策略

iptables –P 链 target

修改规则

iptables –R OUTPUT 1 指定那个表的那个链上的第几条规则,后面跟上完整的更改规则

优化规则:尽量减少规则条目,无关的规则把访问量大的放在上边,属于同一功能的匹配规格严格的放在上边。

      为了更好的管理规则,自定义链;

                   iptables –t filter –N http_in

     删除空的自定义链

                   iptables –X http_in

    重命名自定义链

                  iptables –E oldname  newname

地址转换SNAT 原地址转换

                  --to-source

             MASQUERADE:自动获取转换的地址

            DNAT 目标地址转换

                   --to-destination

            PNAT端口转换

            FULL NAT 全部转换            

 

iptables –t nat –A POSTROUTING  -s 192.168.1.0/24 –j SNAT –to-source 172.16.100.7
原地址转换成172.16.100.17主机地址

iptables大体了解

标签:防火墙   网络   网卡   主机   

原文地址:http://jianchixuexi.blog.51cto.com/4026260/1678100

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!