linux-iptables学习

Iptables:

Netfilter:可以实现读取规则的地方就叫做 netfilter.(网络过滤器)

 

一.iptables 简介

内核空间中定义5个位置:

      1.内核空间中:从一个网络接口进来,到另一个网络接口去的

    2.数据包从内核流入用户空间的

    3.数据包从用户空间流出的

    4.进入/离开本机的外网接口

    5.进入/离开本机的内网接口

 

五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。

       1.PREROUTING(路由前)

       2.INPUT (数据包流入口)

       3.FORWARD (转发管卡)

       4.OUTPUT(数据包出口)

       5.POSTROUTING(路由后)

这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链

 

防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。

 

定义数据包中允许或者不允许的策略,filter过滤的功能,而定义地址转换的功能的则是nat选项。

1.filter 定义允许或者不允许的

       2.nat定义地址转换的 

     3.mangle功能:修改报文原数据

 

对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT

    对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING

    而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

 

二.IPtables格式

 iptables定义规则的方式比较复杂:

     格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION

        -ttable :3个选项:filternat mangle

        COMMAND:定义如何对规则进行管理

         chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的

        CRETIRIA:指定匹配标准

        -jACTION :指定如何进行处理

 

     比如:不允许172.16.0.0/24的进行访问。

     iptables-t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP

     当然你如果想拒绝的更彻底:

     iptables-t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT

 

     iptables-L -n -v  #查看定义规则的详细信息

 

练习题1

只要是来自于172.16.0.0/16网段的都允许访问我本机的172.16.100.1的SSHD服务

分析:首先肯定是在允许表中定义的。因为不需要做NAT地址转换之类的,然后查看我们SSHD服务,在22号端口上,处理机制是接受,对于这个表,需要有一来一回两个规则,如果我们允许也好,拒绝也好,对于访问本机服务,我们最好是定义在INPUT链上,而OUTPUT再予以定义就好。(会话的初始端先定义),所以加规则就是:

     定义进来的: iptables -t filter -A INPUT -s 172.16.0.0/16 -d172.16.100.1 -p tcp --dport 22 -j ACCEPT

     定义出去的: iptables -t filter -A OUTPUT -s 172.16.100.1 -d172.16.0.0/16 -p tcp --dport 22 -j ACCEPT

     将默认策略改成DROP:

                iptables-P INPUT DROP

                iptables-P OUTPUT DROP

                iptables-P FORWARD DROP

 

练习题2

假如我们允许自己ping别人,但是别人ping自己ping不通如何实现呢?

分析:对于ping这个协议,进来的为8(ping),出去的为0(响应).我们为了达到目的,需要8出去,允许0进来

 

在出去的端口上:iptables -A OUTPUT -p icmp--icmp-type 8 -j ACCEPT

在进来的端口上:iptables -A INPUT -p icmp--icmp-type 0 -j ACCEPT

 

小扩展:对于127.0.0.1比较特殊,我们需要明确定义它

           iptables-A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

           iptables-A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

 

 

 

 

 

参考文献:

http://blog.chinaunix.net/uid-26495963-id-3279216.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值