zoukankan      html  css  js  c++  java
  • Netfilter/iptables的匹配方式及处理方法

    匹配方式:

    匹配方式是netfilter筛选数据包的最基本单元。

    内置的匹配方式:

    1.接口的匹配方式:

    iptables -t filter -A FORWARD -i eth0 -o eth1 -j DROP 2.Source/Destination Address的匹配:

    -d:匹配目的端的IP

    -s:匹配来源端的IP

    ex:a.不允许企业内的使用者访问http://www.baidu.com网站

    iptables -A FORWARD -p tcp -i eth1 -o eth0 -d www.baidu.com -j DROP

         b.不允许因特网上的192.168.10.1主机访问公司的web服务器,假设192.168.10.1为公网IP

    iptables -A FORWARD -i eth0 -o eth1 -p tcp -s 192.168.10.1 -d $WEB_IP --dport 80 -j DROP

    3.协议的匹配方式:

    a.从模块扩展而来的匹配方式:

    Tcp协议的高级匹配:#iptables -A FORWARD -i eth1 -o eth0 -p tcp -s 192.168.0.0/24 --dport 21-j REJECT

    b.MAC地址的匹配:

    1.#iptables -A INPUT -p tcp --dport 3306 -m mac --mac-source 00:02:B3:0C:23:1B -j ACCEPT ---限制非固定IP的特定者才可以访问MySQL

    c.Multiport的匹配:

    iptables -A INPUT -p all -m state --state INVALILD -j DROP iptables -A INPUT -p tcp --syn -m state --state NEW -m multiport --dport 21,22,23,25,80,110,443 -j ACCEPT

    iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

    d.匹配数据包的MARK值:

    将所有经过PREROUTING链且Destination port为80的数据包标记一个值,而这个值由管理员自行确认.

    iptables -t mangle -A prerouting -p tcp --dport 80 -j MARK --set-mark 80

    如果进入FORWARD链的数据包,其MARK值为80的话,就将其丢弃. iptables -A FORWARD -p all -m mark 80 -j DROP

    e.owner的匹配:

    只适用于OUTPUT链和PPOSTROUTING链

    1.--uid-owner

    iptables -A OUTPUT -p tcp -m owner --uid-owner kasumi --dport 80 -j ACCEPT

    iptables -A OUTPUT -p udp -m owner --uid-owner kasumi --dport 53 -j ACCEPT

    iptabes -A OUTPUT -p all -m owner --uid-owner kasumi -j DROP 2.--gid-owner

    iptables -A OUTPUT -p tcp -m owner --gid-owner kasumi --dport 80 -j ACCEPT f.IP范围的匹配:

    iptables -A INPUT -p all -s 192.168.0.0/26 -j DROP

    --src-range / --dst-range

    iptables -A INPUT -m iprange --src-range 192.168.0.2-192.168.0.61 -j DROP

    g.TTL值的匹配:

    iptables -A INPUT -m ttl --ttl-eq 64 -j REJECT

    h.数据包的状态匹配:

    I.使用connlimit模块限制连接的最大数量

    限制一个IP或一个 网段同时对目标主机或服务服务所能建立的最大链接数

    iptables -A FORWARD -i eth0 -o eth1 -p tcp --syn -d $web_server --dport 80 -m connlimit --connlimit-above 32 -j DROP

    j.使用connbytes模块限制每个模块连接中所能传输的数据量

    限制使用者以HTTP协议下载20M以上的数据

    iptanbles -A FORWARD -p tcp -d $WEB_SERVER --dport 80 -m connbytes --connbytes-dir replay --connbytes-mode bytes --connbytes 20971520:-j DROP

    --connbytes-dir: original-来源方向 reply-应答方向 both-双向

    --connbytes-mode:packets-以数据包的数量来计算 bytes-以数据传输量来计算

    --connbytes:匹配多少的单位量

    k.使用time模块来设置规则的生效时间

    iptables -A FORWARD -o eth0 -d $SRV_FARM -m time --weekday Mon,Tue,Wed,Thu,Fri --timestart 09:00 --timestop 21:00 -j ACCEPTT 

    --datestart / --datestop / --monthdays / --weekdays

    处理方法:

    内置的处理方法:

    1.ACCEPT和DROP的处理方法:

    2.QUEUE的处理方法:QUEUE的功能是将符合条件的数据包转发给user space的应用程序来处理。当一个数据包由eth0接口进入之后,接着由netfilter来匹配这个数据包的特征,如果这个数据包不符合netfilter的条件,那么,这个数据包可能就由eth1接口送离本机,但如果这个数据包符合QUEUE方法来处理的条件,这个数据包就会送到user space应用程序来处理,待user space的应用程序处理完后,再依次由eth1接口送离本机。

     

    由模块扩展的处理方法:

    1.REJECT的处理方式:

    REJECT和DROP有点相似,两者的差异在于DROP仅会将数据包丢弃,这使得发送端误以为在网络上传输时丢失了,因此发送端会重复地发送数据包直到超时为止;但REJECT丢弃发送端所发送过来的数据包,会发送一个icmp包给发送端,由此告诉网络或者服务发生问题,当发送端收到这个icmp包之后,就会终止服务请求的操作。

    使用原则:

    DROP:凡是对付来自因特网的数据包一律使用DROP来处理,因为我们无须浪费系统资源来回复因特网上的攻击者,而DROP还可以拖延攻击者的攻击操作,因为攻击者可能需要等待一段的时间,不过,也并非一定是如此,还是得看攻击的方式而定。

    REJECT:以网关式防火墙而言,如果要限制企业内的用户连接到因特网上,最好是使用REJECT的处理方法,因为REJECT将可以让企业内的使用者快速得知这个链接是不允许的,而不需要去等待一段超时的时间。

    2.LOG的处理方法:

    netfilter默认并不会生成任何日志,如果需要日记记录,就得使用LOG这个模块

    iptables -A INPUT -p tcp --syn --dport 22 -j LOG --log-level alert (--syn只记录连接的第一条记录)

    iptables -A INPUT -p tcp --dport 22 -j ACCEPT

    rsyslog服务的设置:

    在配置文件/etc/rsyslog.conf下添加:kern.=alert /var/log/netfilter

    内核产生的alert级别的日志就存放在/var/log/netfilter

    3.ULOG的处理方法:

    LOG是将日志交给系统的syslogd来处理,ULOG是将日志交给特定的user space来处理。

  • 相关阅读:
    LeetCode 15 3Sum
    R语言函数化学习笔记6
    R语言函数化学习笔记4
    R语言函数化学习笔记3
    R语言函数化编程笔记2
    R语言读写数据
    R语言函数化编程笔记1
    服务&软件&基础设施的区别
    网易云热评1很扎心
    滞后项
  • 原文地址:https://www.cnblogs.com/kasumi/p/6133813.html
Copyright © 2011-2022 走看看