Một người bạn đưa trang web của công ty mình lên cloud hosting và lưu lượng truy cập không lớn. Tuy nhiên, do nó được sử dụng và thường xuyên bị CC tấn công nên biểu hiện chính là IO và CPU tăng mạnh. trang web trở nên không thể truy cập được. Cloudflare ban đầu được kích hoạt nhưng kẻ tấn công quét điên cuồng và hiệu quả phòng thủ chỉ ở mức trung bình.
Để xác định chính xác các IP độc hại, bạn cần kích hoạt mô-đun Real IP trong Nginx và Apache sau khi kích hoạt Cloudflare CDN, sau đó sử dụng tập lệnh để phân tích nhật ký trang web, thu thập IP bất thường từ nhật ký và sau đó sử dụng API Cloudflare để thêm IP độc hại tới Cloudflare theo đợt trong tường lửa.
Tất nhiên, khi trang web gặp phải các cuộc tấn công CC và DDoS rất mạnh, chúng ta có thể kích hoạt lá chắn 5 giây cổ điển của Cloudflare để ngăn chặn các cuộc tấn công. Nếu không nắm bắt được tần suất các cuộc tấn công, chúng ta có thể thiết lập tác vụ theo lịch trình khi tải hệ thống vượt quá một mức. giá trị nhất định (nói chung Cuộc tấn công sẽ khiến tải hệ thống phát nổ), hãy gọi API Cloudflare để kích hoạt lá chắn 5 giây.
Để biết thêm về bảo mật và tối ưu hóa trang web, đây là:
- Năm mẹo bảo mật khi sử dụng bảng điều khiển VPS miễn phí – đừng để tin tặc lợi dụng
- Quá trình trải nghiệm tối ưu hóa php-fpm của Linux-php-fpm chiếm bộ nhớ lớn và không giải phóng các vấn đề về bộ nhớ
- Kích hoạt HSTS và tham gia Danh sách tải trước HSTS để giúp truy cập HTTPS vào website an toàn hơn - với phương pháp xóa HSTS
PS: Cập nhật ngày 25/03/2019, Về vấn đề bảo mật của VPS, nhiều bạn có thể bỏ qua cấu hình SSH của chính VPS Dưới đây là các chiến lược tăng cường: Bảo vệ an ninh máy chủ và máy chủ VPS: Cổng sửa đổi SSH. , thêm Danh sách trắng, chỉ đăng nhập bằng khóa.
PS: Được cập nhật vào ngày 4 tháng 1 năm 2020, Cloudflare Railgun là giải pháp tăng tốc tối ưu do Cloudflare cung cấp dành riêng cho khách hàng Doanh nghiệp và Doanh nghiệp. Tuy nhiên, nó có thể được bật miễn phí thông qua Cloudflare Partner: Bật tính năng tăng tốc Cloudflare Railgun miễn phí - giảm độ trễ kết nối và đạt được khả năng tăng tốc và bộ nhớ đệm trang động.
1. Cloudflare tự động chặn IP độc hại
1.1 Tìm IP độc hại
Sử dụng tập lệnh để phân tích tần suất truy cập vào một IP trong một phút. Nếu tần số vượt quá một tần số nhất định (thông thường, truy cập bình thường không được vượt quá 60 lần trong một phút, bạn có thể đặt tần số đó thành giá trị nhỏ hơn). được coi là một IP độc hại. Kịch bản như sau:
#/bin/bash #日志文件,你需要改成你自己的路径 logfile=/data/wwwlogs/ last_minutes=1 #开始时间1分钟之前(这里可以修改,如果要几分钟之内攻击次数多少次,这里可以自定义) start_time= date +"%Y-%m-%d %H:%M:%S" -d '-1 minutes' echo $start_time #结束时间现在 stop_time=`date +"%Y-%m-%d %H:%M:%S"` echo $stop_time cur_date="`date +%Y-%m-%d`" echo $cur_date #过滤出单位之间内的日志并统计最高ip数,请替换为你的日志路径 tac $logfile/sky.ucblog.net_nginx.log | awk -v st="$start_time" -v et="$stop_time" '{t=substr($2,RSTART+14,21);if(t>=st && t<=et) {print $0}}' | awk '{print $1}' | sort | uniq -c | sort -nr > $logfile/log_ip_top10 ip_top=`cat $logfile/log_ip_top10 | head -1 | awk '{print $1}'` ip=`cat $logfile/log_ip_top10 | awk '{if($1>2)print $2}'` # 单位时间[1分钟]内单ip访问次数超过2次的ip记录入black.txt,这里wzfou.com为了测试设置了2,你需要改成其它的数字 for line in $ip do echo $line >> $logfile/black.txt echo $line # 这里还可以执行CF的API来提交数据到CF防火墙 done
1.2 Thêm IP vào tường lửa theo đợt
Sử dụng mã sau đây để thêm hàng loạt IP độc hại vào tường lửa của Cloudflare. Hãy nhớ thay thế mã này bằng API Cloudflare của bạn.
#!/bin/bash # Author: Zhys # Date : 2018 # 填Cloudflare Email邮箱 CFEMAIL="freehao123@gmail.com" # 填Cloudflare API key CFAPIKEY="xxxxxxxxxxxxxxxx" # 填Cloudflare Zones ID 域名对应的ID ZONESID="xxxxxxxxxxxxxxxxxxxx" # /data/wwwlogs/black.txt存放恶意攻击的IP列表 # IP一行一个。 IPADDR=$(</data/wwwlogs/black.txt) # 循环提交 IPs 到 Cloudflare 防火墙黑名单 # 模式(mode)有 block, challenge, whitelist, js_challenge for IPADDR in ${IPADDR[@]}; do echo $IPADDR curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$ZONESID/firewall/access_rules/rules" -H "X-Auth-Email: $CFEMAIL" -H "X-Auth-Key: $CFAPIKEY" -H "Content-Type: application/json" --data '{"mode":"block","configuration":{"target":"ip","value":"'$IPADDR'"},"notes":"CC Attatch"}' done # 删除 IPs 文件收拾干净 rm -rf /data/wwwlogs/black.txt
1.3 Tự động tìm IP độc hại và thêm chúng vào tường lửa
Chỉ cần hợp nhất hai tập lệnh trên thành một tập lệnh.
#/bin/bash #日志文件,你需要改成你自己的路径 logfile=/data/wwwlogs/ last_minutes=1 #开始时间1分钟之前(这里可以修改,如果要几分钟之内攻击次数多少次,这里可以自定义) start_time= date +"%Y-%m-%d %H:%M:%S" -d '-1 minutes' echo $start_time #结束时间现在 stop_time=`date +"%Y-%m-%d %H:%M:%S"` echo $stop_time cur_date="`date +%Y-%m-%d`" echo $cur_date #过滤出单位之间内的日志并统计最高ip数,请替换为你的日志路径 tac $logfile/sky.ucblog.net_nginx.log | awk -v st="$start_time" -v et="$stop_time" '{t=substr($2,RSTART+14,21);if(t>=st && t<=et) {print $0}}' | awk '{print $1}' | sort | uniq -c | sort -nr > $logfile/log_ip_top10 ip_top=`cat $logfile/log_ip_top10 | head -1 | awk '{print $1}'` ip=`cat $logfile/log_ip_top10 | awk '{if($1>2)print $2}'` # 单位时间[1分钟]内单ip访问次数超过2次的ip记录入black.log,这里为了测试设置2,你需要改成其它的数字 for line in $ip do echo $line >> $logfile/black.txt echo $line # 这里还可以执行CF的API来提交数据到CF防火墙 done # 填Cloudflare Email邮箱 CFEMAIL="freehao123@gmail.com" # 填Cloudflare API key CFAPIKEY="xxxxxxxxxxxxxxxxxxxxxxxx" # 填Cloudflare Zones ID 域名对应的ID ZONESID="xxxxxxxxxxxxxxxxxxxxxxxxxxx" # /data/wwwlogs/black.txt存放恶意攻击的IP列表 # IP一行一个。 IPADDR=$(</data/wwwlogs/black.txt) # 循环提交 IPs 到 Cloudflare 防火墙黑名单 # 模式(mode)有 block, challenge, whitelist, js_challenge for IPADDR in ${IPADDR[@]}; do echo $IPADDR curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$ZONESID/firewall/access_rules/rules" -H "X-Auth-Email: $CFEMAIL" -H "X-Auth-Key: $CFAPIKEY" -H "Content-Type: application/json" --data '{"mode":"block","configuration":{"target":"ip","value":"'$IPADDR'"},"notes":"CC Attatch"}' done # 删除 IPs 文件收拾干净 rm -rf /data/wwwlogs/black.txt
Tôi đã đặt đoạn script trên vào trung tâm tải xuống của mình và có thể cung cấp cho mọi người tải xuống và sử dụng.
wget https://do.wzfou.net/shell/attack-ip.sh chmod +x /qicmd/cfblockip.sh ./cfblockip.sh wget https://do.wzfou.net/shell/attack-ip.sh chmod +x /qicmd/attack-ip.sh ./attack-ip.sh wget https://do.wzfou.net/shell/cf-block-attack-ip.sh chmod +x /qicmd/cf-block-attack-ip.sh ./cf-block-attack-ip.sh
Cuối cùng, thiết lập tác vụ theo lịch trình và để tập lệnh phát hiện nó mỗi phút (vui lòng điều chỉnh theo nhu cầu của bạn. Để sử dụng tác vụ theo lịch trình, vui lòng tham khảo: Cú pháp cơ bản về tác vụ theo lịch trình của lệnh Linux Crontab)
* * * * * /bin/bash /root/cf-block-attack-ip.sh > /tmp/ou1t.log 2>&1
Tác dụng của việc tự động thêm IP độc hại vào tường lửa CloudFlare như sau:
2. Cloudflare tự động chuyển tập lệnh khiên 5 giây
trang mạng:
- HTTPS://GitHub.com/MAPUMP/cloud bùng phát
Khi máy chủ của bạn bị tấn công, tải hệ thống sẽ phát nổ. Sử dụng tập lệnh để tự động phát hiện tải hệ thống. Khi áp suất vượt quá một giá trị nhất định, bạn có thể chuyển sang chế độ "Tôi đang bị tấn công!" Các bước thực hiện như sau:
#下载 cd /root && git clone https://github.com/Machou/Cloudflare-Block.git DDoS #打开Cloudflare.sh,修改配置 API_KEY You're Global API Key (https://dash.cloudflare.com/profile) MAIL_ACCOUNT Email of your Cloudflare account DOMAIN Zone ID (https://dash.cloudflare.com/_zone-id_/domain.com) #设置定时任务 crontab -e */1 * * * * /root/DDoS/Cloudflare.sh 0 # check every 1 minute if protection is not enabled */20 * * * * /root/DDoS/Cloudflare.sh 1 # check every 20 minutes if protection is enabled
Theo mặc định, tập lệnh phát hiện tải hệ thống ở mức 10 và kích hoạt chế độ “Tôi đang bị tấn công!” Như được hiển thị bên dưới:
Mã script hoàn chỉnh như sau:
#!/bin/bash # $1 = 1min, $2 = 5min, $3 = 15min loadavg=$(cat /proc/loadavg|awk '{printf "%f", $1}') # load is 10, you can modify this if you want load more than 10 maxload=10 # Configuration API Cloudflare # You're Global API Key (https://dash.cloudflare.com/profile) api_key= # Email of your account Cloudflare email= # Zone ID (https://dash.cloudflare.com/_zone-id_/domain.com) zone_id= # create file attacking if doesn't exist if [ ! -e $attacking ]; then echo 0 > $attacking fi attacking=./attacking hasattack=$(cat $attacking) if [ $(echo "$loadavg > $maxload"|bc) -eq 1 ]; then if [[ $hasattack = 0 && $1 = 0 ]]; then # Active protection echo 1 > $attacking curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level" -H "X-Auth-Email: $email" -H "X-Auth-Key: $api_key" -H "Content-Type: application/json" --data '{"value":"under_attack"}' fi else if [[ $hasattack = 1 && $1 = 1 ]]; then # Disable Protection echo 0 > $attacking curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$zone_id/settings/security_level" -H "X-Auth-Email: $email" -H "X-Auth-Key: $api_key" -H "Content-Type: application/json" --data '{"value":"high"}' fi fi exit 0
3. Tóm tắt
Cloudflare là một công cụ rất dễ sử dụng để bảo vệ khỏi các cuộc tấn công DDos và CC. Phiên bản miễn phí của Cloudflare kết hợp với API có thể đạt được các chức năng linh hoạt hơn và đủ để phòng thủ thông thường.
Việc bảo vệ Cloudflare cũng có một số vấn đề nhất định, đó là sau khi kích hoạt Cloudflare, IP người dùng thu được chính là IP của node Cloudflare CDN. Chúng ta cũng cần thực hiện tối ưu hóa thêm trong cấu hình máy chủ.