Linux网络防火墙

  netfilter :frame 过滤,内核中的过滤框架,规则生效的位置框架

    iptables:附加在netfilter上,生成防火墙规则,真正实现数据报文过滤,NAT,mangle等规则生成的工具


防火墙:工作在主机或者网络的边缘,对于进出的报文进行检查监控,并根据事先定义好的规则(其中有匹配标准和处理办法),一旦符合标准,对这个报文进行相应的处理规则的组件称为防火墙


iptables的实现实际上是基于报文的过滤,实例如下:

1.IP:源地址,目标地址

TCP:源端口,目标端口

UDP:源端口,目标端口

ICMP:icmp报文类型


发展历程:

linux2.0

ipfw/firewall

linux2.2

ipchain/firewall

linux2.4

iptables/netfilter



netfilter的过滤有下面五个规则链

    PREROUTING

    INPUT

    FORWARD

    OUTPUT

    POSTROUTING


四种表

filter,过滤表

INPUT,OUTPUT,FORWARD


nat,地址转换表

prerouting,output,postrouting


mangle(拆分,修改,封装)  表

prerouting,forwarding,output,postrouting


raw表

prerouting,output



iptables:

500条规则

能否使用自定义链?

可以使用自定义链,但是只在被调用的时候才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制


*用户可以删除自定义空链

*默认链无法删除


每个规则都有两个内置的计数器

被匹配的报文个数

被匹配的报文大之和


规则内包含:匹配标准,处理动作

匹配标准:

    1.通用匹配

        -s,--src  源地址

        -d,--dst  目标地址

        -p(tcp,udp,icmp)指定协议

         -i INTERFACE指定数据报文流入的接口(ethX)

                可用于定义标准的链,PREROUTING ,INPUT,FORWARD

        -o INTERFACE 指定数据报文流出的接口

                可用于标准定义的链,OUTPUT,POSTROUTING,FORWARD,

    2.扩展匹配

        a.隐含扩展:不用特别指明哪个模块进行的扩展,因为此时使用-p(tcp/udp/icmp)

        -p tcp  指定目标端口,源端口

            --tcp-flags mask comp :只检查mask 指定的标志位,是逗号分隔的标志位列表;comp:此列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0 

        可根据ACK,FIN,RST,SYN等标志位的值来盘端报文的类型,例如当SYN=1,其余为0,则这个报文时TCP/IP的第一次握手

      -p-icmp

            --icmp-type -8 被ping通

            --icmp-type -1能够发出ping 报文

        -p-udp

            指定目标端口以及源端口


     b. 显示扩展:必须指明由哪个模块进行的扩展,在iptables会用-m选项即可完成功能

        使用额外的匹配机制

            -m EXTENSTION --spe-opt

                    state:状态扩展             -m state --state NEW -ij ACCEPT 

                    结合ip_constrack追踪会话的状态

                        NEW:新连接请求

                        ESTABLISHED:已建立的连接

                        INVALID:非法连接

                        RELATED:相关联的


            -m multiport :离散的多端口匹配扩展

                        --source-ports

                        --destination-ports

                        --ports

            

            -m  iprange  指定一段地址

                        --src-range 

                        --dst-range


            -m connlimit  连接数限制

                         !  --connlimit-above n

 

            -m limit 

                        --limit RATE速率限定



#iptables-save> /etc/sysconfig/iptables.2021

#iptables-restore < /etc/sysconfig/iptables.2021


命令

管理规则

-A:附加一条规则,添加在链的尾部

-I CHAIN [num]:插入一条规则,插入为对应CHAIN上的第num条

-D CHAIN [num]:删除指定链中的第Num条规则

-R CHAIN [num]:替换指定的规则

管理链

-F [CHAIN]:flush用于清空指定规则链,如果省略CHAIN ,则可以删除对应表中的所有链

-P CHAIN :设定指定链的默认策略

-N :自定义一个新的空链

-X:删除一个自定义的空链

-Z:置零指定链中所有规则的计数器

-E:重命名自定义的链

查看类

-L:显示指定表中的规则

        -n:以数字形式显示主机地址和端口号

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

        -v:显示链和规则的详细信息 -vv:

        --line-numbers:显示规则号码


执行的动作(target)

-j指定

    ACCEPT放行,允许通过

    DROP丢弃

    REJECT拒绝

    DNAT目标地址转换

    SNAT源地址转换

    REDIRECT(端口重定向)

    MASQUERADE:地址伪装  MAC表的PREROUTING链实现

    MARK打标记

    LOG 日志


iptables不是服务,但有服务脚本:脚本服务的主要作用在于管理保存的规则 

装载或移除iptable/netfilter相关的内核模块

iptables_nat,iptales_filter,iptable_mangle,iptables_raw,ip_nat,


保存规则:

#service iptables save 

/etc/sysconfig/iptables


#iptables-save> /etc/sysconfig/iptables.2021

#iptables-restore < /etc/sysconfig/iptables.2021