• iptables


    iptables: 



    wKioL1SLup7jz6YmAAL6l1cauRc466.jpg
    wKioL1SLuz2St7NTAAIWHpcqp7A596.jpg
    Firewall: 工作在主机或网络边缘,对进出的报文按事先定义的规则进行检查,并且由匹配到的规则进行处理的一组硬件或软件,甚至可能是二者的结合。
    网络层:网络层防火墙
    应用层:网关
    IDS:
    HIDS: OSSEC
    NISC: snort
    Filesystem: tripware
    IPS: IDS + Firewall
    honeypot: 蜜罐
    Nessus, nmap,
    rootkit
    乌云
    iptables/netfilter: 网络层防火墙,连接追踪(状态检测)
    ipfw, ipchains, iptables
    iptables: 防火墙规则编写工具
    netfilter: framework
    hook_function
    PREROUTING
    INPUT
    OUTPUT
    FORWARD
    POSTROUTING
    过滤:筛选
    NAT:Network Address Translation
    DNAT
    SNAT
    mangle: 
    raw:
    FORWARD:
    filter
    mangle
    INPUT: 
    filter
    mangle
    OUTPUT:
    filter
    manage
    nat
    PREROUTING:
    mangle
    nat
    POSTROUTING:
    mangle
    nat
    四表:
    filter, nat, mangle, raw
    五链:
    PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
    表和链的对应关系:
    filter:
    INPUT, FORWARD, OUTPUT
    nat:
    PREROUTING, OUTPUT, POSTROUTING
    mangle:
    PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
    raw: 
    规则:检查条件,处理机制
    通:默认为堵,只对能识别的进行放行
    堵:默认为通,只对能误别的进行阻截
    检查条件:
    IP:SIP, DIP
    TCP:SPORT, DPORT, Flags
    UDP:SPORT, DPORT
    ICMP:ICMP-TYPE 

    扩展机制:
    time,string, state(connection-tracking)
    处理机制:
    DROP
    REJECT
    ACCEPT
    SNAT
    DNAT
    RETURN
    REDIRECT
    LOG
    INPUT:
    filter
    mangle
    iptables/netfilter
    iptables
     iptables [-t table] -N chain
      创建一条自定义的规则链
     iptables [-t table] -X [chain]
      删除一条自定义的规则链
     iptables [-t table] -E old-chain-name new-chain-name
      修改自义链名
     iptables [-t table] -P chain target
      为链指定默认策略,指定默认规则
     iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
      -F: 清空链中的规则
      规则有编号,在链中自上而下,从1开始;
      -L: list,列出表中的所有规则;
      -n: 数字格式显示IP和Port
      -v: 以详细格式显示
       pkts bytes target     prot opt in     out     source               destination 
        pkts: packets, 被本规则所匹配到的报文的个数;
        bytes: 被本规则所匹配到的所有报文的大小之和,会执行单位换算;
        target: 目标,即处理机制;
        prot: 协议,一般为{TCP|UDP|ICMP}; 
        opt: 可选项
        in: 数据包的流入接口;
        out: 数据包的流出接口;
        source: 源地址;
        destination: 目标地址;
      -vv
      -vvv
      -x: exactly, 精确值,不执行单位换算;
      --line-numbers: 显示各规则的行号;
      -Z: zero, 清零
     iptables [-t table] {-A|-D} chain rule-specification
      -A: append, 附加一条规则
       rule-specification
        匹配条件 -j 处理机制
       匹配条件:
        通用匹配:
        -s :匹配原地址,可以IP,也可以网络地址;可以使用!操作符取反, !  -s  172.16.0.0/16; -s 相当于 --src, 或 --source
        -d : 匹配目标地址
        -p : 匹配协议,通常只使用{TCP|UDP|ICMP}三者之一;
        -i :数据报文流入的接口;通常只用于INPUT、FORWARD和PREROUTING
        -o :流出的接口;通常只用于OUTPUT、FORWARD和POSTROUTING
      保存规则:
      service iptables save
      规则会被保存至/etc/sysconfig/iptables文件中;
      默认,start时也会读取此文件中的内容以设置规则;
      # iptables-save > /path/to/some_rulefile
      # iptables-restore < /path/from/some_rulefile
    回顾:
    iptables/netfilter
    netfilter: 工作内核中,让规则能够生效网络框架
    iptables: 工作于用户空间,编写规则并且发送到netfilter
    Linux 2.0: ipfwadm, Linux 2.2: ipchains, Linux 2.4+: iptables
    netfilter: 
    iptables:
    四表:raw, mangle, nat, filter
    五链:PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
    -N 自定义新链
    -F
    -X: 删除自定义的空链
    -P
    -Z
    -L
    -n, -x, -v, -vv, -vvv, --line-numbers
    -E  oldname newname 修改自定义链名
    -A 
    规则:匹配条件 -j 处理机制
    匹配条件:
    通用匹配
    -s, -d, -p, -i, -o
    扩展匹配
    隐含扩展: 使用-p {tcp|udp|icmp}指定某特定协议后,自动能够对协议进行的扩展
    -p tcp
    --dport m[-n] :匹配的目标端口,可以是连续的多个端口;
    --sport       :       源
    --tcp-flags rst,syn,ack,fin syn
    --syn
    URG, PSH, RST, SYN, ACK, FIN
    ALL, NONE



    放行来自于172.16.0.0/16网络的主机对本机ssh服务的请求;
    iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.7 -p tcp --dport 22 -j ACCEPT
    iptables -t filter -A OUTPUT -s 172.16.100.7 -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT



    -p udp
    --dport
    --sport
    放行本机的tftp服务:
    iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.7 -p udp --dport 69 -j ACCEPT
    iptables -A OUTPUT -s 172.16.100.7 -d 172.16.0.0/16 -p udp --sport 69 -j ACCEPT
    放行本机dns服务:
    iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.7 -p udp --dport 53 -j ACCEPT
    iptables -A OUTPUT -s 172.16.100.7 -d 172.16.0.0/16 -p udp --sport 53 -j ACCEPT
    iptables -A OUTPUT -s 172.16.100.7 -p udp --dport 53 -j ACCEPT
    iptables -A INPUT -d 172.16.100.7 -p udp --sport 53 -j ACCEPT
    -p icmp
    --icmp-type
    8: ping请求
    0:ping响应
    例子:放行ping其它主机
    iptables -A OUTPUT -s 172.16.100.7 -p icmp  --icmp-type 8 -j ACCEPT
    iptables -A INPUT -d 172.16.100.7 -p icmp --icmp-type 0 -j ACCEPT



    显式扩展:必须要明确指定的扩展模块
    规则命令:
    删除规则
    iptables [-t table] -D chain rulenum
    插入规则
    iptables [-t table] -I chain [rulenum] rule-specification
    替换指定规则
    iptables [-t table] -R chain rulenum rule-specification
    只显示指定链上的规则添加命令:
    iptables [-t table] -S [chain [rulenum]]



    显式扩展:必须要明确指定的扩展模块
    -m 扩展模块名称 --专用选项1 --专用选项2
                   
                    mac
                             --mac-source XX:XX:XX:XX:XX:XX
    multiport: 多端口匹配,一次指定多个(15个以内)离散端口
    --source-ports , --sports  port[,port|,port:port]
    --destination-ports, --dports
    --ports
    例子:
    iptables -I INPUT -d 172.16.100.7 -p tcp -m multiport --dports 22,80 -j ACCEPT
    iptables -I OUTPUT -s 172.16.100.7 -p tcp -m multiport --sports 22,80 -j ACCEPT
    iprange: ip地址范围
    [!] --src-range from[-to]
    [!] --dst-range from[-to]
    例子:
    iptables -A INPUT -d 172.16.100.7 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT
         iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT
        time: 指定时间范围
         --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
            --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
            --timestart hh:mm[:ss]
                --timestop hh:mm[:ss]
                [!] --weekdays day[,day...]
                例子:
                 iptables -A INPUT -d 172.16.100.7 -p tcp --dport 901 -m time --weekdays Mon,Tus,Wed,Thu,Fri --timestart 08:00:00 --timestop 18:00:00 -j ACCEPT
                 iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 901 -j ACCEPT
            string: 字符串匹配
             --algo {bm|kmp}:字符匹配查找时使用算法
             --string "STRING": 要查找的字符串
             --hex-string “HEX-STRING”: 要查找的字符,先编码成16进制格式
            connlimit: 每IP对指定服务的最大并发连接数;
             [!] --connlimit-above [n]



            limit: 报文速率控制
             --limit #[/second|/minute|/hour|/day]
             --limit-burst #   最大峰值
             hping3: 安装此包,做测试
            state: 状态匹配
             ip_conntrack, nf_conntrack
             --state
             NEW
             ESTABLISHED建立了
             RELATED相关的
             INVALID
         调整连接追踪功能所能容纳的追踪的最大连接数:
             # cat /proc/sys/net/nf_conntrack_max 
             定义了连接追踪的最大值,因此,建议按需调大此值;
             # cat /proc/net/nf_conntrack
             记录了当前追踪的所有连接
             # cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established

                            连接处于ESTABLISHED状态的超时时长

            法则:
             1、对于进入的状态为ESTABLISHED都应该放行;
             2、对于出去的状态为ESTABLISHED都应该放行;
             3、严格检查进入的状态为NEW的连接;
             4、所有状态为INVALIED都应该拒绝;
            如何放行工作于被动模式下的FTP服务?
             1、确保iptables加载ftp协议支持的模块:ip_nat_ftp, ip_conntrack_ftp
             编辑/etc/sysconfig/iptables-config文件,定义如下参数:
             IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
             2、放行请求报文的RELATED和ESTABLISHED状态,放行响应报文的ESTABLISHED状态;

    iptables  -A INPUT -d 192.168.131.128/32 -p tcp  --dport 21 -m state --state NEW -j ACCEPT
    iptables  -A INPUT     -m state --state RELATED,ESTABLISHED -j ACCEPT   
    iptables  -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
     
    -j target
             RETURN: 返回调用链



           回顾:开机流程
            POST --> BootSequence(MBR: bootloader) --> GRUB --> kernel (initramfs) --> /sbin/init (/etc/inittab, /etc/init/*.conf)
            启动服务时的最后一个服务通常是/etc/rc.d/rc.local (/etc/rc.local),这事实上是一个脚本,但凡写在此脚本中的命令或脚本调用都在系统运行至此服务被执行;




    练习:INPUT和OUTPUT默认策略为DROP;
    1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机;



    2、在工作时间,即周一到周五的8:30-18:00,开放本机的ftp服务给172.16.0.0网络中的主机访问;数据下载请求的次数每分钟不得超过5个;



    3、开放本机的ssh服务给172.16.x.1-172.16.x.100中的主机,x为你的座位号,新请求建立的速率一分钟不得超过2个;仅允许响应报文通过其服务端口离开本机;



    4、拒绝TCP标志位全部为1及全部为0的报文访问本机;



    5、允许本机ping别的主机;但不开放别的主机ping本机;






    练习:判断下述规则的意义:
    # iptables -N clean_in
    # iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP
    # iptables -A clean_in -d 172.16.255.255 -p icmp -j DROP
    # iptables -A clean_in -p tcp ! --syn -m state --state NEW -j DROP
    # iptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROP
    # iptables -A clean_in -p tcp --tcp-flags ALL NONE -j DROP
    # iptables -A clean_in -d 172.16.100.7 -j RETURN 



    # iptables -A INPUT -d 172.16.100.7 -j clean_in
    # iptables -A INPUT  -i lo -j ACCEPT
    # iptables -A OUTPUT -o lo -j ACCEPT



    # iptables -A INPUT  -i eth0 -m multiport -p tcp --dports 53,113,135,137,139,445 -j DROP
    # iptables -A INPUT  -i eth0 -m multiport -p udp --dports 53,113,135,137,139,445 -j DROP
    # iptables -A INPUT  -i eth0 -p udp --dport 1026 -j DROP
    # iptables -A INPUT  -i eth0 -m multiport -p tcp --dports 1433,4899 -j DROP
    # iptables -A INPUT  -p icmp -m limit --limit 10/second -j ACCEPT





    利用iptables的recent模块来抵御DOS攻击: 22,建立一个列表,保存有所有访问过指定的服务的客户端IP



    ssh: 远程连接,
    iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP



    iptables -I INPUT  -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -I INPUT  -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j LOG --log-prefix "SSH Attach: "
    iptables -I INPUT  -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP
    1.利用connlimit模块将单IP的并发设置为3;会误杀使用NAT上网的用户,可以根据实际情况增大该值;
    2.利用recent和state模块限制单IP在300s内只能与本机建立2个新连接。被限制五分钟后即可恢复访问。
    下面对最后两句做一个说明:
    1.第二句是记录访问tcp 22端口的新连接,记录名称为SSH
    --set 记录数据包的来源IP,如果IP已经存在将更新已经存在的条目
    2.第三句是指SSH记录中的IP,300s内发起超过3次连接则拒绝此IP的连接。
    --update 是指每次建立连接都更新列表;
    --seconds必须与--rcheck或者--update同时使用
    --hitcount必须与--rcheck或者--update同时使用
    3.iptables的记录:/proc/net/xt_recent/SSH



    也可以使用下面的这句记录日志:
    iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --name SSH --second 300 --hitcount 3 -j LOG --log-prefix "SSH Attack"



    2014.03.27
    FSM: Finite State Machine
    客户端:closed --> syn_sent --> established ... --> fin_wait_1 --> find_wait_2 --> timewait (2MSL)
    服务端:closed --> listen --> syn_rcvd --> established ... --> close_wait --> last_ack 


    -m state: 追踪连接状态 (tcp, udp, icmp)
    模板:
    NEW
    ESTABLISHED
    RELATED
    INVALID


    iptables子命令:
    规则:-A, -I, -D, -R
    链:-N, -X, -F, -Z, -E, -P
    通:DROP
    堵:ACCEPT
    显示:-L, -S
    -L: 
    -n, -v, -x, --line-numbers


    规则定义:iptables -t table -A|-I|-R chain 匹配条件 -j target
    匹配条件:
    通用匹配:-s, -d, -i, -o, -p
    扩展匹配
    隐含扩展:
    -p tcp
    --sport, --dport, --tcp-flags
                                                    
            --tcp-flags rst,syn,ack,fin syn : 空格之前表示匹配哪些标识位,空格之后是哪些标识位为1 
            --syn:单独匹配某一项标识位
            所有使用的值: URG, PSH, RST, SYN, ACK, FIN,ALL, NONE 
       [!] --syn等价于--tcp-flags RST,ACK,SYN,FIN   SYN
                                                              --tcp-flags ALL NONE匹配所有标记都未置1的包
                                    
    -p udp
    --sport, --dport
    -p icmp
    --icmp-type
    echo-request: 8
    echo-reply: 0
    显式扩展:
    -m state
    --state


    -m multiport
    --sports, --dports, --ports


    -m iprange
    --src-range, --dst-range


    -m string
    --algo {bm|kmp}, --string, --hex-string


    -m connlimit
    --connlimit-above 


    -m limit
    --limit n(/second|/minute|/hour|/day), --limit-burst 


    -m time
    --datestart, --datestop
    --timestart, --timestop
    --weekdays 


    -j
    ACCEPT, DROP, REJECT, LOG, REDIRECT, SNAT, DNAT, MASQUERADE, MARK, RETURN, 自定义链


    四表:raw, mangle, nat, filter
    五链:PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING


    iptables/netfilter


    iptables-save, iptables-restore


    主机防火墙:INPUT, OUTPUT
    网络防火墙:FORWARD




    路由:对于Linux主机来说,设定/proc/sys/net/ipv4/ip_forward的值为1,即为开启了路由功能;
    路由表的生成:
    静态:手机添加
    动态:基于路由协议学习,RIP2, OSPF
    NAT:网络地址转换
    A:10
    B:172.16-172.31
    C:192.168.0-192.168.255


    NAT: 过载技术
    Basic NAT: 静态NAT;
    NAPT:动态NAT,网络地址端口转换;
    源地址转换:SNAT,用于让内网主机访问互联网
    目标地址转换:DNAT,让互联网上主机访问本地内网中的某服务器上的服务,(发布)


    iptables基于SNAT和DNAT这两个目标实现地址转换技术;
    -j SNAT --to-source SIP
    规则添加:POSTROUTING链
                                            iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT --to-source 192.168.5.3-192.168.5.5
                                            iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT --to-source 192.168.5.3
                                            对于SNAT,不管是几个地址,必须明确的指定要SNAT的ip
    -j MASQUERADE          

                                            iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
                                       他的作用是,从服务器的网卡上,自动获取当前ip地址来做NAT。不管现在eth0的出口获得了怎样的动态ip,MASQUERADE会自动读取                       eth0现在的ip地址然后做SNAT出去,这样就实现了很好的动态SNAT地址转换。

    -j DNAT --to-destination DIP[:PORT]
    支持端口映射


    例子:
    # iptables -t nat -A PREROUTING -d 172.16.100.7 -p tcp --dport 22022 -j DNAT --to-destination 192.168.20.12:22
                                          iptables -t nat -A PREROUTING -s 192.168.0.0/24 -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 10443

    Proxy: 



    作业:如何基于FORWARD链转发对内部ftp服务的访问?


    iptables实现七层访问过滤:


    模块:layer7
    识别应用层协议


    iptables/netfilter
    iptables -m state, 
    netfilter state


    对内核中的netfilter,打补丁layer7,重新编译内核
    对iptables打补丁,补上layer7模块,重新iptables



    diff/patch:文本操作工具



    diff是Unix系统的一个很重要的工具程序。它用来比较两个文本文件的差异,是代码版本管理的核心工具之一。其用法非常简单:
      # diff <变动前的文件> <变动后的文件>


    由于历史原因,diff有三种格式:
      * 正常格式(normal diff)
      * 上下文格式(context diff)
      * 合并格式(unified diff)


    1、正常格式的diff
    例如,对file1(变动前的文件)和file2(变动后的文件)进行比较可使用如下命令:
        # diff file1 file2
    显示结果中,第一行是一个提示,用来说明变动位置。它分成三个部分:前面的数字,表示file1的第n行有变化;中间的"c"表示变动的模式是内容改变(change),其他模式还有"增加"(a,代表addition)和"删除"(d,代表deletion);


    2、上下文格式的diff
    上个世纪80年代初,加州大学伯克利分校推出BSD版本的Unix时,觉得diff的显示结果太简单,最好加入上下文,便于了解发生的变动。因此,推出了上下文格式的diff。它的使用方法是加入-c选项(即context)。
        # diff -c f1 f2
    结果分成四个部分。第一部分的两行,显示两个文件的基本情况:文件名和时间信息,"***"表示变动前的文件,"---"表示变动后的文件。第二部分是15个星号,将文件的基本情况与变动内容分割开。第三部分显示变动前的文件,即file1。
    另外,文件内容的每一行最前面,还有一个标记位。如果为空,表示该行无变化;如果是感叹号(!),表示该行有改动;如果是减号(-),表示该行被删除;如果是加号(+),表示该行为新增。
    第四部分显示变动后的文件,即file2。


    3、合并格式的diff
    如果两个文件相似度很高,那么上下文格式的diff,将显示大量重复的内容,很浪费空间。1990年,GNU diff率先推出了"合并格式"的diff,将f1和f2的上下文合并在一起显示。
    它的使用方法是加入u参数(代表unified)。
      # diff -u f1 f2
    其结果的第一部分,也是文件的基本信息。"---"表示变动前的文件,"+++"表示变动后的文件。第二部分,变动的位置用两个@作为起首和结束。第三部分是变动的具体内容。
    除了有变动的那些行以外,也是上下文各显示3行。它将两个文件的上下文,合并显示在一起,所以叫做"合并格式"。每一行最前面的标志位,空表示无变动,减号表示第一个文件删除的行,加号表示第二个文件新增的行。


    diff 
    -u


    patch


    尽管并没有指定patch和diff的关系,但通常patch都使用diff的结果来完成打补丁的工作,这和patch本身支持多种diff输出文件格式有很大关系。patch通过读入patch命令文件(可以从标准输入),对目标文件进行修改。通常先用diff命令比较新老版本,patch命令文件则采用diff的输出文件,从而保持原版本与新版本一致。


    patch的标准格式为
    patch [options] [originalfile] [patchfile]


    如果patchfile为空则从标准输入读取patchfile内容;如果originalfile也为空,则从patchfile(肯定来自标准输入)中读取需要打补丁的文件名。因此,如果需要修改的是目录,一般都必须在patchfile中记录目录下的各个文件名。绝大多数情况下,patch都用以下这种简单的方式使用:
    patch -p[num] < patchfile


    patch命令可以忽略文件中的冗余信息,从中取出diff的格式以及所需要patch的文件名,文件名按照diff参数中的"源文件"、"目标文件"以及冗余信息中的"Index:"行中所指定的文件的顺序来决定。


    -p参数决定了是否使用读出的源文件名的前缀目录信息,不提供-p参数,则忽略所有目录信息,-p0(或者-p 0)表示使用全部的路径信息,-p1将忽略第一个"/"以前的目录,依此类推。如/usr/src/linux-2.4.15/Makefile这样的文件名,在提供-p3参数时将使用linux-2.4.15/Makefile作为所要patch的文件。


    patch
    -p
    -R


    mockbuild


    总结:操作步骤


    1、获取并编译内核


    # useradd mockbuild
    # rpm -ivh kernel-2.6.32-431.5.1.x86_64.el6.src.rpm
    # cd rpmbuild/SOURCES
    # tar linux-2.6.32-*.tar.gz -C /usr/src
    # cd /usr/src
    # ln -sv 


    2、给内核打补丁
    # tar xf netfilter-layer7-v2.23.tar.bz2
    # cd /usr/src/linux
    # patch -p1 < /root/netfilter-layer7-v2.23/kernel-2.6.32-layer7-2.23.patch
    # cp /boot/config-*  .config
    # make menuconfig


    3、编译并安装内核
    # make
    # make modules_install
    # make install


    4、重启系统,启用新内核


    5、编译iptables


    # tar xf iptables-1.4.20.tar.gz
    # cp /root/netfilter-layer7-v2.23/iptables-1.4.3forward-for-kernel-2.6.20forward/* /root/iptables-1.4.20/extensions/
    # cp /etc/rc.d/init.d/iptales /root
    # cp /etc/sysconfig/iptables-config /root
    # rpm -e iptables iptables-ipv6 --nodeps
    # ./configure  --prefix=/usr  --with-ksource=/usr/src/linux
    # make && make install


    # cp /root/iptables /etc/rc.d/init.d
    # cp /root/iptables-config /etc/sysconfig


    6、为layer7模块提供其所识别的协议的特征码


    # tar zxvf l7-protocols-2009-05-28.tar.gz
    # cd l7-protocols-2009-05-28
    # make install


    7、如何使用layer7模块


    ACCT的功能已经可以在内核参数中按需启用或禁用。此参数需要装载nf_conntrack模块后方能生效。
    net.netfilter.nf_conntrack_acct = 1




    l7-filter uses the standard iptables extension syntax 
    # iptables [specify table & chain] -m layer7 --l7proto [protocol name] -j [action] 



    # iptables -A FORWARD -i eth1 -m layer7 --l7proto qq -j REJECT


    注意:
    网络防火墙:ip_forward
    net.netfilter.nf_conntrack_acct参数只有装载nf_conntrack模块后方能生效



    -j LOG 
    --log-prefix "":指定日志前缀信息
    注意:如果同样的内容要做过滤,日志规则一定放在过滤规则之前。
  • 相关阅读:
    CSP-S2019 括号树
    [CQOI2007]余数求和
    CF1000E We Need More Bosses
    [HAOI2009]毛毛虫
    ls命令
    HTML的标签 属性 等等
    虚拟机安装Tools
    1.1 什么是安全渗透
    004-Kali Linux安装-熟悉环境
    003-Kali Linux 安装-持久加密USB安装、熟悉环境、熟悉BASH命令
  • 原文地址:https://www.cnblogs.com/as007012/p/10003120.html
Copyright © 2020-2023  润新知