防火墙---iptables

一、iptables的说明及环境安装

     (1)理论基础:当主机收到一个数据包后,数据包先在内核空间中处理,若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目的不是自身,则会将包丢弃或进行转发。

    (2)iptables实现防火墙功能的原理是:在数据包经过内核的过程中有五处关键地方,分别是PREROUTING、INPUT、 OUTPUT、FORWARD、POSTROUTING,称为钩子函数,iptables这款用户空间的软件可以在这5处地方写规则,对经过的数据包进行 处理,规则一般的定义为“如果数据包头符合这样的条件,就这样处理数据包”。
iptables中定义有表,分别表示提供的功能,有filter表(实现包过滤)、nat表(实现网络地址转换)、mangle表(实现包修改)、 raw表(实现数据跟踪),这些表具有一定的优先级:raw–>mangle–>nat–>filter。

             若为本地数据的传输,则数据进来内核的接口为input;出去的时候接口为output;

           若目的地址不是本地时,数据传输的时候没有经过内核而出去的接口为postouting;响应的时候出去的接口叫做preouting.

    (3)修改实验环境:

 

       1、首先关闭firewalld火墙

            systemctl  stop   firewalld.server

            systemc   mask   firewalld.server

       2、安装iptables火墙

            yum   install  iptables-services.x86_64

            systemctl   start  iptables

 二、 iptables的用法
    1)iptables的主配置文件:/etc/sysconfig/iptabls 
    2)iptables  -F                   ##刷新
         iptables  -nL                 ##查看iptables中的策略(默认为filter表)
         iptanles  -t  nat -nL       ##查看nat表中的策略;-t 指向表名
         service iptables  save    ##保存已有的策略(会保存在iptables的主配置文件中)

           iptables -N  xniu          ##添加自定义链名          

          

         iptables  -X  xniu         ## 删除自动链

           iptables  -A INPUT -s  172.25.254.21  -p  tcp  --dport 22 -j REJECT    ##-A为添加一条策略到INPUT表;-s源地址;-p协议;--dport目的端口;-j 执行拒绝

           

           在21端口进行测试:

          

          iptables -D INPUT  -s 172.25.254.21  -p  tcp  --dport 22 -j REJECT              ##删除已有的策略    

          

        iptables  -I INPUT 2 -s  172.25.254.21  -p  tcp  --dport 22 -j REJECT            ##-I为插入,位置为INPUT表的第二个位置
        iptables  -P  INPUT  DROP                                                                         ## 修改input表的状态为drop

          iptables -R INPUT 2 -s 172.25.254.21 -p tcp --dport 22 -j DROP                        ## 修改第二条的记录,把REJECT修改为DROP

         

    3 ) 常用操作命令:

       -A 在指定链尾部添加规则
       -D 删除匹配的规则
       -R 替换匹配的规则
       -I 在指定位置插入规则
三、网络地址转换

       SNAT(源地址转换)是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机
       DNAT(目标地址转换),就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B
 

  示例一:添加策略不同端口执行不同规则:
         iptables  -F                      ##首先清空
         iptables -nL                     ##查看
         iptables  -A INPUT  -m state  --state RELATED,ESTABLISHED -j ACCEPT
         iptables  -A INPUT  -m state  --state new  -i  lo  -j  ACCEPT
         iptables  -A INPUT  -m state  --state new  -p  tcp  --dport 22  -j  ACCEPT
         iptables  -A INPUT  -m state  --state new  -p  tcp  --dport 80  -j  ACCEPT

         iptables  -A INPUT  -m state  --state new  -i  lo  -j  ACCEPT

  示例二:目的地址的转换 (在nat表上)

          iptables -t  nat -A  PREROUTING -i eth0  -j  DNAT  --to-dest  192.168.0.111                 ##当连接的时候,使用接口转换为目的地址为111的主机

          测试结果:

          

   示例三:源地址的转换(在nat表上)

        1、 首先把服务端要有两个物理网卡。ip分别eth0:172.25.254.121 、eth1:192.168.0.2

              iptables -t  nat -A POSTROUTING  -o eth0 -j  SNAT  --to-source 172.25.254.121                      ##此时eth0为172.25.254.121

                 

                 iptables -t filter  -F                    ##刷新filter表

              iptables -t  filter -nL                  ##进行查看(此时为空)

        2、 在192.168.0.111主机上测试结果如下:

                 

                 

          

        

 

posted @ 2018-08-18 16:07  UTHN_B  阅读(237)  评论(0编辑  收藏  举报