پیمان مسئول DevOps یک سایت شده که چند کاربر بَلا دارد که ریکوئستهای زیادی میزنند و پیمان میخواهد آنها را بلاک کند.
به پیمان کمک کنید از روی فایل لاگ nginx
بتواند آن دسته از IPهایی که بیشتر از n
ریکوئست در دقیقه زدهاند را با استفاده از iptables
بلاک کند. او برای این کار یک اسکریپت bash نیاز دارد که argumentهای آدرس فایل لاگ و عدد n را دریافت کند.
برای دانلود پروژهی اولیه روی این لینک کلیک کنید.
نکات تکمیلی
۱. نمونه لاگ nginx
که در داوری استفاده میشود در فایل nginx_logs_sample
در پروژهی اولیه ( این لینک ) قرار دارد. بخشی از این لاگ نمونه:
148.251.49.20 - - [20/May/2021:19:05:24 +0000] "GET /downloads/product_2 HTTP/1.1" 200 931 "-" "Wget/1.13.4 (linux-gnu)"
104.131.19.181 - - [20/May/2021:19:05:31 +0000] "GET /downloads/product_1 HTTP/1.1" 404 328 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)"
37.16.72.129 - - [20/May/2021:19:05:25 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.10.3)"
37.16.72.129 - - [20/May/2021:19:05:01 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.10.3)"
37.16.72.129 - - [20/May/2021:19:05:41 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.10.3)"
۲. برای نمونه اسکریپتی که شما مینویسید با دستور زیر اجرا و داوری خواهد شد:
bash blocker.sh nginx_logs_sample 7
پس از اجرای دستور فوق با فایل لاگ نمونه که در پروژه اولیه در اختیارتان است، باید IP های زیر در iptables بلاک شوند:
129.67.24.6
130.199.3.165
137.117.180.46
137.117.183.81
137.117.184.211
137.117.184.219
148.251.112.153
148.251.23.199
173.255.243.139
174.103.128.249
178.62.213.239
180.179.174.219
185.20.227.198
186.67.186.2
192.133.141.142
193.84.27.10
200.28.3.2
200.28.3.3
209.177.145.225
216.46.173.126
217.168.17.5
50.57.209.100
54.144.73.8
54.165.189.135
54.172.110.13
54.172.164.189
54.173.226.7
54.194.93.59
54.213.131.92
54.244.94.5
54.77.28.244
54.84.191.5
5.63.153.125
5.63.157.73
65.39.197.164
72.32.152.84
74.125.60.158
80.91.33.133
84.208.15.12
85.21.237.138
89.191.68.234
94.236.106.132
94.242.57.74
94.242.58.153
94.242.58.216
نحوه ارسال پاسخ
شما تنها مجاز به ارسال فایل blocker.sh
هستید.
#!/bin/bash
log_path=$1
n=$2
# TODO: Block IPs with more than n request per minute by iptables
ارسال پاسخ برای این سؤال