HOME 生活记录运维/编程
作者/来源:yixinu.com
栏目:运维/编程
日期:2012-04-25 06:08:39

iptables 防火墙

     没有进程 ,在内核中控制 ,不是一项服务 ,只有刷新规则



Netfilter

        INTPUT    

        OUTPUT

        FORWARD   两个网段之间的设置需要设置FORWARD,不要设置intput和output




匹配规则 :

        1、在iptables表中,由上往下的次序匹配,匹配到第一条之后不再往下匹配

        2、条件必须全部满足

        3、如果没有在表中找到匹配规则 ,则按默认规则匹配



规则的目的,即如何处理,-j target/jump常用的处理动作

        ACCEPT: 将封包放行,进行完此处理动作后,将不再匹配其它规则,直接跳往下一个规则链

        REJECT: 拦阻该封包,并传送封包通知对方

        DROP: 丢弃封包不予处理,进行完此处理动作后,将不再匹配其它规则,直接中断过滤程序

        REDIRECT: 将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续匹配其它规则。 这个功能可以用来实现透明代理或用来保护 web 服务器。例如:
            iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

        LOG: 将封包相关讯息纪录在 /var/log 中

        QUEUE: 中断过滤程序,将封包放入队列,交给其它程序处理。通过自行开发的处理程序,可以进行其它应用,例如:计算连接费用等。

        RETURN: 结束在目前规则链中的过滤程序,返回主规则链继续过滤,如果把自定义规则链看成是一个子程序,那么这个动作,就相当于提前结束子程序并返回到主程序中

        MASQUERADE: 改写封包来源 IP 为防火墙 NIC IP,可以指定 port 对应的范围,进行完此处理动作后,直接跳往下一个规则 链(manglepostrouting)。这个功能与SNAT 略有不同,当进行 IP 伪装时,不需指定要伪装成哪个 IP,IP会从网卡直接读取,当使用拨 号接连时,IP通常是由ISP公司的DHCP 服务器指派的,这个时候 MASQUERADE 特别有用。范例如下:
            iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000

        SNAT: 改写封包来源 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将直接跳往下一个规则(mangleostrouting)。范例如下:
            iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source?194.236.50.155-194.236.50.160:1024-32000


        DNAT: 改写封包目的地 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将会直接跳往下一个规则链(filter:input 或 filter:forward)。范例如下:

            iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10:80-100


        MIRROR: 镜射封包,也就是将来源 IP 与目的地 IP 对调后,将封包送回,进行完此处理动作后,将会中断过滤程序。


-------------------------------------------------

example:

    iptables -t filter -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT


说明:


[-t table] 指定规则表


            filter: 这个规则表是默认规则表,拥有 INPUT、FORWARD 和 OUTPUT 三个规则链,这个规则表顾名思义是用来进行封包过滤的处理动作(例如:DROP、 LOG、 ACCEPT 或 REJECT
            nat:此规则表拥有 PREROUTING 和 POSTROUTING 两个规则链,主要功能为进行一对一、一对多、多对多等网址转换工作(SNAT、DNAT),这个规则表除了作网址转换外,请不要做其它用途

            mangle:此规则表拥有 PREROUTING、FORWARD 和 POSTROUTING 三个规则链。除了进行网址转换工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定 MARK(将封包作记号,以进行后续的过滤),这时就必须将这些工作定义在 mangle 规则表

    


command 常用命令列表

        命令 -A, --append

        范例 iptables -A INPUT ...

        说明 新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则。


        命令 -I, --insert

        范例 iptables -I INPUT 1 --dport 80 -j ACCEPT

        说明 插入一条规则,原本该位置上的规则将会往后移动一个顺位


        命令 -D, --delete

        范例 iptables -D INPUT --dport 80 -j DROP

        iptables -D INPUT 1

        说明 从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。


        命令 -R, --replace

        范例 iptables -R INPUT 1 -s 192.168.0.1 -j DROP

        说明 取代现行规则,规则被取代后并不会改变顺序。



        命令 -L, --list

        范例1 iptables -L INPUT

        说明 列出某规则链中的所有规则。

        范例2 iptables -t nat -L

        说明 列出nat表所有链中的所有规则。

        范例3 iptables -L -n --line-number

        说明 列出所有链中的所有规则,并显示行号。



        命令 -F, --flush

        范例 iptables -F INPUT

        说明 删除filter表中INPUT链的所有规则。



        命令 -N, --new-chain

        范例 iptables -N allowed

        说明 定义新的规则链。


        命令 -X, --delete-chain

        范例 iptables -X allowed

        说明 删除某个规则链。


常见匹配条件

    ip地址和网络:    -s  192.168.1.0/24  -d 192.168.0.1

    网络接口 :

       -i  数据传入接口

        -o   数据传出接口

    条件可以取反

        -i eth0 -s '!' 192.168.1.0/24     这里注意感叹号和后面的字符,中间要有空间,要不就感叹号用引号

    传输协议和端口

        -p tcp --dport 80

        -p udp --sport 53

            只有tcp和udp才有端口这个概念

分享到:

Copyright © 2013-2014 yixinu.com 湘ICP备14004402号

QQ:316686606  Email: 316686606@qq.com