iptables(1)


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

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

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


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

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

iptables/netfilter工具

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

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


    netfilter命令行

        hooks functionserver

            prerouting

            input 

            forward 

            output 

            postrouting

    iptables

        CHAINS:

            PREROUTING

            INPUT

            FORWARD

            OUTPUT

            POSTROUTING

wKiom1gLYCGAoqumAACNsHTqDiY145.png-wh_50

    报文流向:

        到本机某进程的报文: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

wKiom1gLYEXSsxlpAANV5lTh6lw520.png

    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

相关文章
相关标签/搜索