上一篇博文说明了iptable的一些常识
这里简明再复述一下

linux的防火墙包含了2部分,分别是存在于内核空间的netfilte和用户空间的iptables

而iptable可以定义4类规则
filter:防火墙核心所在
nat:地址转换
mangle:实现数据包修改;如TTL
raw:不常用,这里不做多解释
优先级次序:raw-mangle-nat-filter

在iptable中定义的规则要输送到内核中的netfilte才能生效
 
定义防火墙规则一般有2种模式。一种是比较严格的,只放行允许通过的数据包,其余数据包全部阻止。还有一种比较宽松的,只阻止不允许通过的数据包。在企业应用中,一般使用第一种,根据业务需要放行对应的数据包。

Iptable定义规则的一般机制(更加具体的语法参照man文档)
iptable  [-t table]  sub_command  CHAIN [num] [cretiria] [-j ACCTION]

-t:
        默认没有指定是filter,也可以指定mangle,nat,raw

sub_command:
    rule:
        -A(append):追加
        -I(insert):插入,如 -I INPUT 3
        -D(delete):删除,指定标准或者num 如 -D OUTPUT 8
        -R(replace):替换 -R FORWARD 6

    chain:
        -F(flush):清空链
        -N(new):新增一条链
        -X:删除用户自定义的空链
        -Z:清空计数器
            关于计数器:每条规则都有2条计数器
                        1:记录被本条规则匹配到的包个数
                        2:记录匹配到本条规则到的包的体积之和
        -E:重命名链

    policy:
        -P    chain {ACCEPT|DROP}
exsample:
将INPUT链的默认策略修改为DROP
iptables -t filter -P INTPUT DROP

    view:
        -L 显示定义的规则
            -n:使用这个选项,就不会去反向解析IP地址的主机名,加快察看速度
            -v:详细信息,可以多加几个v,越多越详细
            -x:精确显示数据包体积
            --line-numbers

匹配条件:
    通用匹配:
        -s IP/NETWORK:源地址
        -d IP/NETWORK:目标地址
        -p {tcp|udp|icmp}:指定协议
        -i input interface:指定数据包进入的接口
        -o output interface:指定数据包出去的接口

example:
禁止192.168.1.0/24网段ping192.168.2.1主机
iptables -t fliter -A INTUP -s 192.168.1.0/24 -d 192.168.2.1 -p icmp -j DROP


    扩展匹配
        隐式扩展:指对-p选项中指定的协议进行的扩展
            -p {tcp|udp|icmp}
                --sport portnum 源端口
                --dport portnum    目标端口   
                --tcpflags 针对tcp的标志位
                --icmp-type icmp的包类型。

扩展上面的exapmle
iptables -t fliter -A INTUP -s 192.168.1.0/24 -d 192.168.2.1 -p icmp –icmp-type 8 -j DROP
这里明确拒绝了192.168.1.0/24网段的icmp-request包,8是icmp-request包,0是icmp-echo包

example:
拒绝192.168.2.1主机访问本机的web服务
iptables -t fliter -A INPUT -s 192.168.2.1 -p --dport 80 -j DROP
iptables -t fliter -A INPUT -s 192.168.2.1 -p --dport 443 -j DROP

规则的写法有多种,也可以写在OUTPUT链上,不过效率没有INPUT上高,而如果写在OUTPUT上 ,应该这样写
iptables -t fliter -A OUTPUT -d 192.168.2.1 -p –sport 80 -j DROP
iptables -t fliter -A OUTPUT -d 192.168.2.1 -p –sport 443 -j DROP

具体写法要按照需求,分析数据包的走向而定

        显式扩展:使用-m指定要加载的扩展(下一章具体描述)


-j    TARGET:跳转到到的链常见的有以下3种
    ACCEPT
    DROP
    REJECT

基本的用法先到这里,下一篇将具体说说显式扩展