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

最后由 BlueBlue_Master 编辑