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

标题: Linux iptables防火墙使用curl命令获取abuseipdb的免费恶意黑名单防CC攻击,blacklist下载,kangle cf cloudflare屏蔽ddos循环sh批量添加api [打印本页]

作者: 小樱    时间: 2025/1/4 18:53
标题: Linux iptables防火墙使用curl命令获取abuseipdb的免费恶意黑名单防CC攻击,blacklist下载,kangle cf cloudflare屏蔽ddos循环sh批量添加api
Linux iptables防火墙使用curl命令获取abuseipdb的免费恶意黑名单防CC攻击,blacklist下载,kangle cf cloudflare屏蔽ddos循环sh批量添加api

登录注册,创建一个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黑名单数据库


如果你想报告某个恶意ip地址给这个网站的数据库,可以用这份代码
  1. curl -X POST https://api.abuseipdb.com/api/v2/report \
  2.   -d categories=4 \
  3.   --data-urlencode "ip=127.0.0.1" \
  4.   --data-urlencode "comment=HTTP Flood" \
  5.   -H "Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
  6.   -H "Accept: application/json"
复制代码



每个 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/
https://bbs.itzmx.com/thread-111212-1-1.html

作者: jufengge    时间: 2025/5/22 01:59
支持支持
作者: 小樱    时间: 2025/5/22 18:38
jufengge 发表于 2025/5/22 01:59
支持支持

神奇,这个帖子居然有人回了,试了几个月效果还是很不错的




欢迎光临 ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com (https://bbs.itzmx.com/) Powered by Discuz! X3.4