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