• Linux安全之iptables高级特性


    iptables 是运行在用户空间的应用软件,通过控制 Linux 内核 netfilter 模块,来管理网络数据包的处理和转发。在大部分 Linux 发行版中,可以通过手册页 或 man iptables 获取用户手册。通常 iptables 需要内核模块支持才能运行,此处相应的内核模块通常是 Xtables。

    Linux安全之iptables高级特性

    Linux安全之iptables高级特性

    1. recent 模块

    利用iptables的recent模块来抵御DOS攻击(CC 攻击)

    建立一个列表,保存有所有访问过指定的服务的客户端 IP 地址

    #1
    利用connlimit模块将单IP地址ssh远程连接的并发设置为3
    会误杀使用NAT上网的用户,可以根据实际情况增大该值
    $ sudo iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP
    bash
    2
    利用recent和state模块限制单IP在300s内只能与本机建立2个新连接,被限制五分钟后即可恢复访问
    $ sudo iptables -I INPUT -p tcp --dport 22 -m state
    –state NEW -m recent --set --name SSH

    $ sudo 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: "

    $ sudo iptables -I INPUT -p tcp --dport 22 -m state
    –state NEW -m recent --update --seconds 300 --hitcount 3
    –name SSH -j DROP
    下面对最后两句做一个说明

    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,也可以使用下面的这句记录日志
    $ sudo 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”

    2. layer7 模块

    利用iptables的layer7模块能够识别应用层协议,实现七层访问过滤:对应用层协议进行限制,如微信等。

    使用需求

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

    $ sudo make menuconfig
    $ sudo make -j xxx
    $ sudo make modules_install
    $ sudo make install
    总结操作步骤

    1、获取并编译内核
    $ sudo useradd mockbuild
    $ sudo rpm -ivh kernel-2.6.32-431.5.1.x86_64.el6.src.rpm
    $ sudo cd rpmbuild/SOURCES
    $ sudo tar linux-2.6.32-*.tar.gz -C /usr/src
    $ sudo cd /usr/src
    $ sudo ln -sv

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

    3、按如下步骤启用layer7模块
    Networking support → Networking Options →Network packet filtering framework → Core Netfilter Configuration
    “layer7” match support

    4、编译并安装内核
    $ sudo make
    $ sudo make modules_install
    $ sudo make install

    5、重启系统,启用新内核
    $ sudo reboot

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

    7、为layer7模块提供其所识别的协议的特征码
    $ sudo tar zxvf l7-protocols-2009-05-28.tar.gz
    $ sudo cd l7-protocols-2009-05-28
    $ sudo make install

    8、如何使用layer7模块
    ACCT的功能已经可以在内核参数中按需启用或禁用。此参数需要装载nf_conntrack模块后方能生效。
    net.netfilter.nf_conntrack_acct = 1
    l7-filter uses the standard iptables extension syntax

    $ sudo iptables [specify table & chain] -m layer7 --l7proto [protocol name] -j [action]
    $ sudo iptables -A FORWARD -m layer7 --l7proto qq -j REJECT
    提示:xt_layer7.ko 依赖于 nf_conntrack.ko 模块

    文章作者: Escape

    文章链接:
    https://www.escapelife.site/posts/ff46f9a5.html

    转载来源 Escape !

  • 相关阅读:
    PWM实验
    Elasticsearch 8.X:这个复杂的检索需求如何实现?
    KMP&拓展KMP 复习笔记
    《计算机网络》期末试卷2020
    如何在 Spring 或 Spring Boot 中使用键集分页
    python教程:一定要会的-类的定义
    读 RocketMQ 源码,学习并发编程三大神器
    【数据结构】链表详解
    Java文件操作
    Linux防火墙Centos6的常用命令iptables
  • 原文地址:https://blog.csdn.net/mengmeng_921/article/details/126385424