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

iptables(1)

时间:2016-10-22 21:33:20      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:iptables   规则   firewall   


Firewall:隔离工具;Packets Filter Firewall;工作于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件;

    硬件防火墙:在硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现; 

    软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙;


    主机防火墙:服务范围为当前主机;

    网络防火墙:服务范围为防火墙被的局域网;

iptables/netfilter

    netfilter:防火墙框架,framework;位于内核空间;

    iptables:命令行工具程序,位于用户空间;规则管理工具;


    netfilter

        hooks function

            prerouting

            input 

            forward 

            output 

            postrouting

    iptables

        CHAINS:

            PREROUTING

            INPUT

            FORWARD

            OUTPUT

            POSTROUTING

技术分享

    报文流向:

        到本机某进程的报文:PREROUTING --> INPUT 

        由本机转发的报文:PREROUTING --> FORWARD --> POSTROUTING

        由本机的某进程发出报文:OUTPUT --> POSTROUTING

    tables:

        filter:过滤,防火墙;

        nat:network address translation,网络地址转换;

        mangle:拆解报文,做出修改,并重新封装;

        raw:关闭nat表上启用的连接追踪机制;

    优先级次序(由高而低):

        raw --> mangle --> nat --> filter 

    功能<-->钩子:

        raw仅适用于:PREROUTING,OUTPUT

        mangle五个链均适用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

        nat上仅有四个链:PREROUTING,INPUT,OUTPUT,POSTROUTING

        filter仅有三个链:INPUT,FORWARD,OUTPUT

技术分享

    iptables规则的组成部分:

         匹配条件:

            网络层首部:Source IP, Destination IP

            传输层首部:Source Port, Destination Port

            扩展检查机制:

         处理动作:target

            ACCEPT,DROP,REJECT

防火墙安装:

    netfilter:要确认内核编译的时候编译了netfilter,位于内核中的tcp/ip协议栈报文处理框           架;

    iptables:

        CentOS 5/6:iptables命令编写规则;

            # iptables -t filter -F

            # service iptables save

        CentOS 7:firewalld,firewall-cmd, firewall-config

            # systemctl disable firewalld

        补充:如果想向6一样使用iptables,可以安装iptables-server工具

            yum install -y iptables-server

            cp /usr/libexec/iptables/iptables.init /etc/init.d/iptables

            之后就可以使用service命令控制iptables了

        程序包:iptables, iptstate

iptables命令:

    规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,

        则由规则后面指定的处理动作进行处理;

    匹配条件:

        基本匹配条件:源地址,目标地址,传输层协议

        扩展匹配条件:需要借助于扩展模块进行指定的匹配条件

        隐式扩展:已经在基本匹配条件中指明的协议相关的扩展;

        显式扩展:隐式扩展之外的其它扩展匹配条件;

    处理动作:

        基本动作:ACCEPT,DROP,...

        扩展动作:需要借助于扩展模块进行,但无须显式指定,仅需指明动作;

             在扩展模块中,大写字母显示的模块就是为扩展动作的

    添加规则时需要考量的问题:

        (1) 报文流经的位置:用于判断将规则添加至哪个链;

        (2) 实现的功能:用于判断将规则添加至哪个表;

        (3) 报文的方向:用于判断哪个为“源”,哪个为“目标”;

        (4) 匹配条件:用于编写能够正确匹配目标报文的规则;

iptabls命令的使用格式:

    iptables [-t table] {-A|-C|-D} chain rule-specification


    iptables [-t table] -I chain [rulenum] rule-specification


    iptables [-t table] -R chain rulenum rule-specification


    iptables [-t table] -D chain rulenum


    iptables [-t table] -S [chain [rulenum]]


    iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]


    iptables [-t table] -N chain


    iptables [-t table] -X [chain]


    iptables [-t table] -P chain target


    iptables [-t table] -E old-chain-name new-chain-name


        rule-specification = [matches...] [target]


        match = -m matchname [per-match-options]

        target = -j targetname [per-target-options]

    规则管理格式:iptables [-t able] COMMAND chain cretieria [ -m matchname [per-match-options]]  [-j targetname [per-target-options]]

        -t table:指明要管理的表; 默认为filter;

COMMANDS

   链管理:

    -P:iptables [-t table] -P chain target,定义链的默认策略;其target一般可使用ACCEPT或DROP;

    iptables -P INPUT ACCEPT/DROP 内网的时候可以使用REJECT,外网尽量不要用REJECT

    -N:iptables [-t table] -N chain,自定义规则链;仅在默认链通过某规则进行调用方可生效;因此,每个自定义链都有其引用记数;

    -X:iptables [-t table] -X [chain],删除自定义的空的引用计数为0的链;

    -F:iptables [-t table] -F [chain [rulenum]] [options...],清空指定的链,或删除指定链上的规则 ;

    -E:iptables [-t table] -E old-chain-name new-chain-name,重命名自定义的引用计数为0的链;

    -Z:iptables [-t table] -Z  [chain [rulenum]] [options...]

规则:

    -A:append, iptables [-t table] -A chain rule-specification,追加规则到指定的链尾部;

    -I:insert, iptables [-t table] -I chain [rulenum] rule-specification,插入规则到指定的链中的指定位置,默认为链首;

    -D:delete,iptables [-t table] -D chain rule-specification或iptables [-t table] -D chain rulenum,删除指定的链上的指定规则;

    -R:replace,iptables [-t table] -R chain rulenum rule-specification,将指定的链上的指定规则替换为新的规则;

查看:

    -L:list, iptables [-t table] -L [chain [rulenum]] [options...]

    -n:数字格式;

    -v:verbose,详细格式信息;

    -vv, -vvv 

    --line-numbers:显示链上的规则的编号;

    -x:exactly,显示计数器的精确值; 

计数器:

    每条规则以及链的默认策略分别有各自的两个计数器:

    (1) 匹配到的报文的个数:pkts

    (2) 匹配到的所有报文的大小之积:bytes

回顾:

iptables/netfilter

四表:raw, mangle, nat, filter

五链:PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

iptables命令:

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

COMMANDS:

链管理:-P,-N,-X,-E,-F,-Z

规则管理:-A,-I,-D,-R

查看:-L,-n, -x, -v, --line-numbers




本文出自 “提着酱油瓶打醋” 博客,请务必保留此出处http://sauce.blog.51cto.com/11880696/1864614

iptables(1)

标签:iptables   规则   firewall   

原文地址:http://sauce.blog.51cto.com/11880696/1864614

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