• linux 安装 APF 和 DDoS Deflate

    APF(Advanced Policy Firewall) "高级策略防火墙" ,Rf-x Networks 发布的防火墙程式,APF 基于 iptables (netfilter) , 设置简单方便,容易理解。

    DDoS Deflate 是一个减弱 DoS 攻击的程序 。:bubble_funny:

    这个文章用于过程记录,我怕过几天自己忘记... 例如忘记我安装过这个防护墙

    我使用的系统环境:
    Centos7
    linux 核心: 4.9.0-1.el7.elrepo.x86_64

    安装和启动 APF ( 高级策略防火墙 )

    APF : https://www.rfxn.com/projects/advanced-policy-firewall/

    如果你的 linux 开启了其他防火墙,记得关闭,至少在启动 APF 之前关闭。

    下载 APF
    wget http://rfxnetworks.com/downloads/apf-current.tar.gz

    解压
    tar -zxvf apf-current.tar.gz

    进入 APF 目录
    apf-*

    运行安装
    ./install.sh

    编辑 APF 配置文件 /etc/apf/conf.apf

    一些简单的参数含义... ,其他不太了解,以后我也不会补充. :bubble_funny:

    设置为 1 为开发模式,5 分钟后会关闭 APF ,防止出错无法远程操作. 设置确定正常后记得改为 0.
    DEVEL_MODE="1"

    允许入站的 TPC 端口
    IG_TCP_CPORTS="22,80,443"

    允许入站的 UDP 端口
    IG_UDP_CPORTS=""

    开关出站端口检测 0 关闭 1开启
    EGF="0"

    出站 TCP
    EG_TCP_CPORTS=""

    出站 UDP
    EG_UDP_CPORTS=""

    编辑完配置文件,保存.

    查看 Linux 内核版本 uname -r, 如果 linux 内核 4.0 以上版本将会报告错误,至少目前版本会这样 : "kernel version not compatible or netfilter support missing, aborting."

    编辑 /etc/apf/internals/functions.apf , 添加新内核支持

    elif [[ "$KREL" =~ "4." ]]; then
            MEXT="ko"
    

    修改完成后的样子

    if [ "$KREL" == "2.4" ]; then
            MEXT="o"
    elif [ "$KREL" == "2.6" ]; then
            MEXT="ko"
    elif [[ "$KREL" =~ "3." ]]; then
            MEXT="ko"
    elif [[ "$KREL" =~ "4." ]]; then
            MEXT="ko"
    elif [ ! "$KREL" == "2.4" ] && [ ! "$KREL" == "2.6" ] && [[ ! "$KREL" =~ "3." ]]; then
            if [ ! "$SET_VERBOSE" == "1" ]; then
                    echo "kernel version not compatible or netfilter support missing, aborting."
            fi
            eout "{glob} kernel version not compatible or netfilter support missing, aborting."
            exit 1
    else
            if [ ! "$SET_VERBOSE" == "1" ]; then
                    echo "kernel version not compatible or netfilter support missing, aborting."
            fi
            eout "{glob} kernel version not compatible or netfilter support missing, aborting."
            exit 1
    fi
    

    启动 apf :bubble_funny:
    apf -s

    输出日志没错误就可以了。试试允许的端口是否可以链接,没有被允许的端口确认不能接通。

    确保 APF 正在正常工作后,再次更改 conf.apf ,DEVEL_MODE 更改为 0 .

    APF 部分命令 ,具体信息查看官网 https://www.rfxn.com/appdocs/README.apf

    启动 APF
    apf -s | --start

    重启防火墙,并重新加载规则
    apf -r | --restart

    APF 列表
    apf -l | --list

    APF 日志信息
    apf -t | --status

    (暂时不太懂具体用处,所以不多说,具体看官网 :bubble_spray: )
    apf -e | --refresh

    添加 IP/IP段到允许名单
    apf -a | --allow

    添加 IP/IP段到拒绝名单
    apf -d | --deny

    删除允许或拒绝名单中的 IP/IP段
    apf -u | --remove

    列出 APF 配置信息
    apf -o | --ovars

    安装 DDoS Deflate

    :bubble_funny: 不要对这个程序抱有很大抵抗攻击能力幻想。支持防火墙 apf, csf , iptables , 检测某 IP 超过限制连接数量,然后控制防火墙拦截 IP .

    通过这个命令可以查看每个在连接服务器的IP的链接数量
    netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

    项目地址:
    https://github.com/jgmdev/ddos-deflate

    wget https://github.com/jgmdev/ddos-deflate/archive/master.zip
    unzip master.zip
    cd ddos-deflate-master
    ./install.sh

    ddos deflate 配置文件位于 /etc/ddos/ddos.conf

    一些简单参数含义

    单个 IP 链接达到 150 ban
    NO_OF_CONNECTIONS=150

    选择使用的防火墙,我选择 APF
    FIREWALL="apf"

    启动 DDoS Deflate
    ddos -d

    各种命令:

    ddos [OPTIONS] [N]

    查看帮助
    -h | --help

    运行监测
    -c | --cron

    列出允许 IP 名单
    -i | --ignore-list

    列出禁止 IP 名单
    -b | --bans-list

    关闭
    -s | --stop

    查看 pid 状态
    -t | --status

    显示正在活动的 IP
    -v | --view

    阻止超过 N 连接
    -k | --kill

    当你凝视柱子的时候,柱子也在注视着你