设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 47|回复: 0

Linux iptables防火墙使用curl命令获取abuseipdb的免费黑名单防CC攻击,blacklist下载,kangle cf cloudflare屏蔽ddos循环sh批量添加

[复制链接]
 成长值: 381

签到天数: 4752 天

[LV.Master]伴坛终老

发表于 2025/1/4 18:53 | 显示全部楼层 |阅读模式 |Google Chrome 131.0.0.0|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
Linux iptables防火墙使用curl命令获取abuseipdb的免费黑名单防CC攻击,blacklist下载,kangle cf cloudflare屏蔽ddos循环sh批量添加

登录注册,创建一个api密钥
https://www.abuseipdb.com/account/api?aff=itzmx.com

生成带最近报告时间的json黑名单列表,默认为时间排序最新1w个ip地址(基本订阅付费可以拿到全部完整的6w个恶意ip),免费版仅支持设置confidenceMinimum=100百分百可信的已确认恶意ip(输出字段abuseConfidenceScore=100)
下面的api自己换一下
  1. curl -X GET https://api.abuseipdb.com/api/v2/blacklist?ipVersion=4 \
  2.   -d confidenceMinimum=100 \
  3.   -H "Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
  4.   -H "Accept: application/json" \
  5.   -o blacklist.json
复制代码

例子
{
        "ipAddress": "47.76.209.138",
        "countryCode": "HK",
        "abuseConfidenceScore": 100,
        "lastReportedAt": "2025-01-04T14:55:27+00:00"
}


生成明文的txt黑名单列表,这个非常适合导入iptables防火墙
  1. curl -X GET https://api.abuseipdb.com/api/v2/blacklist?ipVersion=4 \
  2.   -d confidenceMinimum=100 \
  3.   -d plaintext \
  4.   -H "Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
  5.   -H "Accept: text/plain" \
  6.   -o blacklist.txt
复制代码


不知道怎么弄api?没关系,我帮你下载好了,回复即可下载恶意ip黑名单数据库
游客,如果您要查看本帖隐藏内容请回复


每个 Cloudflare 帐户最多可以免费享受有 50,000 条ip黑名单规则
一般来说通过api导入,设置此网站,交互式质询(challenge,也就是一个点击验证码),即可防御大量攻击,不要使用阻止,避免产生误封(虽然abuseipdb给出的恶意可信度是100%)

获取地址:https://dash.cloudflare.com/profile
点击Global API Key(X-Auth-Key)
然后发起
查看ip访问规则,右下角有个API区域 ID,下面的地址自己换一下,看到你自己的地址,邮箱换成你的cf登陆邮箱
  1. curl -X GET "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules?per_page=100" \
  2.      -H "X-Auth-Email: user@gmail.com" \
  3.      -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41"
复制代码


添加ip
  1. curl -X POST "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules" \
  2.      -H "X-Auth-Email: user@gmail.com" \
  3.      -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
  4.      -H "Content-Type: application/json" \
  5.      -d '{
  6.       "configuration": {
  7.          "target": "ip",
  8.          "value": "47.76.209.138"
  9.       },
  10.       "mode": "challenge",
  11.       "notes": "blacklist"
  12.     }'
复制代码


删除ip
  1. curl -X DELETE "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules/$RULE_ID" \
  2.      -H "X-Auth-Email: user@gmail.com" \
  3.      -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41"
复制代码


但是只有单独添加一个ip怎么办呢,用sh脚本批量添加,保存成 blacklist.sh 和 blacklist.txt 放在同一个目录,需要安装jq来解析json(自己写的sh可能无法添加最后末尾的那个ip,手动添加下就好)
  1. yum -y install jq
复制代码
  1. #!/bin/bash
  2. #https://bbs.itzmx.com/thread-111252-1-1.html
  3. #下面的地址自己换一下
  4. API_URL="https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules"
  5. AUTH_EMAIL="user@gmail.com"
  6. AUTH_KEY="c2547eb745079dac9320b638f5e225cf483cc5cfdda41"

  7. while IFS= read -r ip; do
  8.     [[ -z "$ip" ]] && continue  # 如果为空则跳过

  9.     RESPONSE=$(curl -s -X POST "$API_URL" \
  10.         -H "X-Auth-Email: $AUTH_EMAIL" \
  11.         -H "X-Auth-Key: $AUTH_KEY" \
  12.         -H "Content-Type: application/json" \
  13.         -d '{
  14.             "configuration": {
  15.                 "target": "ip",
  16.                 "value": "'"$ip"'"
  17.             },
  18.             "mode": "challenge",
  19.             "notes": "blacklist"
  20.         }')

  21.     if echo "$RESPONSE" | jq -e '.success' > /dev/null; then
  22.         echo "成功添加 IP: $ip"
  23.     else
  24.         echo "添加 IP: $ip 失败: $(echo "$RESPONSE" | jq -r '.errors[] | .message')"
  25.     fi
  26. done < blacklist.txt
复制代码


运行添加
  1. sh blacklist.sh
复制代码


批量添加后怎么批量删除?保存成 rmblacklist.sh,需要安装jq来解析json
  1. yum -y install jq
复制代码
  1. #!/bin/bash
  2. #https://bbs.itzmx.com/thread-111252-1-1.html
  3. #下面的地址自己换一下
  4. ZONE_ID="023e105f4ecef8ad9ca31a8372d0c353"
  5. AUTH_EMAIL="user@gmail.com"
  6. AUTH_KEY="c2547eb745079dac9320b638f5e225cf483cc5cfdda41"

  7. while true; do
  8.     RESPONSE=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/firewall/access_rules/rules?per_page=100" \
  9.         -H "X-Auth-Email: $AUTH_EMAIL" \
  10.         -H "X-Auth-Key: $AUTH_KEY")

  11.     RULE_IDS=$(echo "$RESPONSE" | jq -r '.result[] | select(.notes == "blacklist") | .id')

  12.     if [ -z "$RULE_IDS" ]; then
  13.         echo "没有找到符合条件的规则,结束操作。"
  14.         break
  15.     fi

  16.     for RULE_ID in $RULE_IDS; do
  17.         DELETE_RESPONSE=$(curl -s -X DELETE "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/firewall/access_rules/rules/$RULE_ID" \
  18.             -H "X-Auth-Email: $AUTH_EMAIL" \
  19.             -H "X-Auth-Key: $AUTH_KEY")

  20.         if echo "$DELETE_RESPONSE" | jq -e '.success' > /dev/null; then
  21.             echo "成功删除规则 ID: $RULE_ID"
  22.         else
  23.             echo "删除规则 ID: $RULE_ID 失败: $(echo "$DELETE_RESPONSE" | jq -r '.errors[].message')"
  24.         fi
  25.     done
  26. done
复制代码


运行添加
  1. sh rmblacklist.sh
复制代码


参考:https://developers.cloudflare.com/api/resources/firewall/subresources/access_rules/methods/create/

[发帖际遇]: 小樱 乐于助人,奖励 6 贡献. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2025/1/7 08:21 , Processed in 0.094903 second(s), 22 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表