
حجب Nginx للروبوتات الضارة، وحاجب الإحالات المزعجة، وماسحات الثغرات الأمنية، ووكلاء المستخدم، والبرمجيات الخبيثة، والبرمجيات الإعلانية، وبرمجيات الفدية، والمواقع الخبيثة، مع حماية من هجمات DDOS، وحظر كاشف قوالب ووردبريس، وسجن Fail2Ban للمخالفين المتكررين
| REPO | BECOME A SPONSOR |
|---|---|
| سيظهر شعارك ورابط موقعك هنا إذا أصبحت راعياً. فقط أرسل لي بريداً إلكترونياً على [email protected] إذا كنت ترغب في رعاية هذا المشروع، حيث أن جنوب أفريقيا غير مدعومة بعد ضمن برنامج الرعاة في Github. | |
| ساعدني في دعمي على https://ko-fi.com/mitchellkrog |
يرجى التأكد من اشتراكك في إشعارات Github ليتم إعلامك عند تحديث الحاجب أو عند حدوث أي تغييرات مهمة أو حرجة للمهمة (قد تكون مسببة للكسر).
هذه هي طريقتنا الجديدة المفضلة للتثبيت والتي تتم الآن من خلال مجموعة من سكربتات shell المساهمة في هذا المستودع والتي يحافظ عليها Stuart Cardall @itoffshore وهو أحد القائمين على حزم Alpine Linux.
التعليمات أدناه مخصصة لعملية تثبيت سريعة وخالية من الألم والتي تقوم بتنزيل جميع الملفات المطلوبة للحاجب وتتضمن السكربتات إضافة الـ includes المطلوبة إلى ملف nginx.conf وملفات .vhost الخاصة بـ nginx. يفترض سكربت الإعداد أن ملفات إعدادات vhost موجودة في /etc/nginx/sites-available/ وأن كل ملف إعدادات vhost ينتهي بامتداد ملف .vhost
لتعليمات التثبيت اليدوي يرجى الاطلاع على - يرجى الاطلاع على: https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/blob/master/MANUAL-CONFIGURATION.md
يمكن تكوين setup-ngxblocker وinstall-ngxblocker وupdate-ngxblocker جميعها بمواقع تثبيت/تحديث مخصصة من سطر الأوامر. (راجع الخطوة 11 من التعليمات لمعرفة كيفية استخدام هذه السكربتات ومواقع Nginx غير القياسية)
قم بتشغيل أي من سكربتات الإعداد أو التثبيت أو التحديث مع --help أو -h لعرض الخيارات.
يرجى ملاحظة: لمن يستخدمون شهادات SSL من Let's Encrypt، الطريقة المفضلة والعاملة 100% هي استخدام طريقة Webroot Authenticator. يبدو أن هناك بعض المشكلات لدى الأشخاص الذين يستخدمون طريقة تحدي http ولكن يمكنني تأكيد أن webroot يعمل بشكل لا تشوبه شائبة. لسنا متأكدين في هذه المرحلة ما إذا كانت طريقة تحدي http-01 خطأ من certbot أو nginx.
تقارير الشبكة المكررة من Nginx ليست خطأ ولا يمكن إصلاحها، هذا هو السلوك المطلوب للحاجب. التحديثات اليومية للقوائم السوداء لعناوين IP تتسبب في إدراج بعض عناوين IP والنطاقات المعروفة في القائمة السوداء القيمة القديمة "1" ثم يتم إدراجها في القائمة البيضاء في نهاية globalblocklist وهو ترتيب التحميل الذي يحدد بعد ذلك عناوين IP التي نعرف أنها جيدة إلى القيمة "0" الجديدة وبالتالي إدراجها في القائمة البيضاء. الأمر هكذا منذ اليوم الأول للحاجب وسيبقى هكذا. هذه مجرد رسائل [WARN] بسيطة وليست رسائل [EMERG] ولا تؤثر على تشغيل Nginx بأي شكل من الأشكال.
قم بتنزيل install-ngxblocker إلى دليل /usr/local/sbin/ الخاص بك واجعل السكربت قابلاً للتنفيذ.```sh sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -O /usr/local/sbin/install-ngxblocker sudo chmod +x /usr/local/sbin/install-ngxblocker
إذا لم تكن توزيعة لينكس لديك تتضمن wget، يمكنك استبدال أمر wget أعلاه باستخدام curl على النحو التالي:```sh
curl -sL https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -o /usr/local/sbin/install-ngxblocker
قم بتثبيت الحزمة.```sh pkg install www/nginx-ultimate-bad-bot-blocker
بدلاً من ذلك، قم بالتثبيت عبر portmaster:```sh
portmaster www/nginx-ultimate-bad-bot-blocker
الآن قم بتشغيل سكربت install-ngxblocker في وضع DRY-MODE والذي سيعرض لك التغييرات التي سيقوم بها والملفات التي سيقوم بتنزيلها لك. هذه مجرد محاكاة تشغيل (DRY-RUN) لذا لا يتم إجراء أي تغييرات بعد.
يقوم install-ngxblocker بتنزيل جميع الملفات المطلوبة بما في ذلك سكربتات الإعداد والتحديث.```sh cd /usr/local/sbin sudo ./install-ngxblocker
سيعرض لك هذا الناتج التالي للتغييرات التي سيتم إجراؤها
**(ملاحظة: هذه مجرد محاكاة تجريبية (DRY-RUN) ولم يتم إجراء أي تغييرات)**```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'install-ngxblocker -x' to install files.
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker
يمكن تكوين setup-ngxblocker وinstall-ngxblocker وupdate-ngxblocker جميعها بمواقع تثبيت / تحديث مخصصة من سطر الأوامر.
قم بتشغيل أي من نصوص الإعداد أو التثبيت أو التحديث مع --help أو -h لعرض الخيارات.
الآن قم بتشغيل نص التثبيت مع المعامل -x لتنزيل جميع الملفات الضرورية من المستودع:```sh cd /usr/local/sbin/ sudo ./install-ngxblocker -x
سيعطيك هذا المخرجات التالية:```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf...OK
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf...OK
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf...OK
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker...OK
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker...OK
تم الآن تنزيل جميع الملفات المطلوبة إلى المجلدات الصحيحة على Nginx لك مباشرةً من المستودع.
تأكد من جعل نصوص الإعداد والتحديث قابلة للتنفيذ عن طريق تشغيل الأمرين التاليين. هذا مهم قبل المتابعة مع الخطوة 4 وما بعدها.```sh sudo chmod +x /usr/local/sbin/setup-ngxblocker sudo chmod +x /usr/local/sbin/update-ngxblocker
**يمكن تكوين setup-ngxblocker وinstall-ngxblocker وupdate-ngxblocker جميعها بمواقع تثبيت / تحديث مخصصة من سطر الأوامر.**
**قم بتشغيل أي من نصوص الإعداد أو التثبيت أو التحديث مع --help أو -h لعرض الخيارات.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-4.png"/>
الآن قم بتشغيل نص setup-ngxblocker في الوضع الجاف (DRY-MODE) والذي سيعرض لك التغييرات التي سيقوم بها والملفات التي سيقوم بتنزيلها لك. هذا مجرد تشغيل تجريبي (DRY-RUN) لذا لا يتم إجراء أي تغييرات بعد.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker
سيعطيك هذا مخرجات على النحو التالي (يفترض هذا الإخراج أدناه أن ملف nginx.conf لديك يحتوي بالفعل على التضمين الافتراضي لـ /etc/nginx/conf.d/*) جميع تثبيتات Nginx التي أعرفها تحتوي على هذا التضمين الافتراضي في ملف nginx.conf الموزع مع جميع الإصدارات.```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'setup-ngxblocker -x' to setup files.
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
يقوم هذا السكربت أيضًا بإضافة عنوان IP الخاص بك إلى قائمة البيضاء في ملف whitelist-ips.conf نيابةً عنك.
يمكن إضافة المزيد من عناوين IP أو نطاقات IP إلى ملف whitelist-ips.conf القابل للتخصيص والموجود في /etc/nginx/bots.d/whitelist-ips.conf.
**يمكن تكوين setup-ngxblocker وinstall-ngxblocker وupdate-ngxblocker جميعها بمواقع تثبيت / تحديث مخصصة من سطر الأوامر.**
**قم بتشغيل أي من سكربتات setup أو install أو update مع --help أو -h لعرض الخيارات.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-5.png"/>
الآن قم بتشغيل سكربت الإعداد مع المعامل -x لإجراء جميع التغييرات الضرورية على ملف nginx.conf الخاص بك (إذا لزم الأمر) وكذلك لإضافة التضمينات المطلوبة إلى جميع ملفات vhost الخاصة بك.
يفترض سكربت setup-ngxblocker هذا أن جميع ملفات vhost الموجودة في /etc/nginx/sites-available تنتهي بامتداد .vhost. من الممارسات الجيدة جعل جميع ملفات إعدادات vhost تنتهي بامتداد .vhost، ولكن إذا كنت تفضل الالتزام بما لديك بالفعل مثل .conf، يمكنك ببساطة تعديل تشغيل setup-ngxblocker باستخدام المعامل `-e` لتحديد الامتداد الذي تستخدمه لملفات vhost الخاصة بك.
على سبيل المثال، إذا كانت ملفات vhost الخاصة بك تنتهي بـ .conf، فستقوم بتغيير ذلك عن طريق تنفيذ setup-ngxblocker مع معامل سطر أوامر إضافي كما يلي:
`sudo ./setup-ngxblocker -x -e conf`
لذا الآن دعنا نشغّل سكربت الإعداد ونتركه يقوم بجميع التغييرات التي نحتاجها لتفعيل Bot Blocker على جميع مواقعك.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker -x
سوف ترى الإخراج على النحو التالي:```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
ستلاحظ أنه قام بتضمين ملفات include في جميع ملفات .vhost على خادم الاختبار الخاص بي، كما قام أيضًا بإدراج عنوان IP الخاص بك في قائمة البيضاء داخل ملف whitelist-ips.conf نيابةً عنك. يمكن إضافة المزيد من عناوين IP أو نطاقات IP إلى ملف whitelist-ips.conf القابل للتخصيص والموجود في /etc/nginx/bots.d/whitelist-ips.conf.
ما فعله هذا السكربت الإعدادي هو ببساطة إضافة عبارات include التالية إلى ملفات .vhost الخاصة بك، كما يضيف /etc/nginx/conf.d/* إلى التضمينات في nginx.conf (إذا لم يكن موجودًا بالفعل في nginx.conf)، وإلا فسيفشل السكربت بأكمله.```nginx
# Bad Bot Blocker
include /etc/nginx/bots.d/ddos.conf;
include /etc/nginx/bots.d/blockbots.conf;
يمكن تكوين setup-ngxblocker وinstall-ngxblocker وupdate-ngxblocker جميعها بمواقع تثبيت/تحديث مخصصة من سطر الأوامر.
قم بتشغيل أي من نصوص الإعداد أو التثبيت أو التحديث مع --help أو -h لعرض الخيارات.
الآن اختبر تكوين nginx الخاص بك
sudo nginx -t
ويجب أن ترى```text nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-7.png"/>
الآن ببساطة أعد تحميل / إعادة تشغيل Nginx وسيكون Bot Blocker نشطًا فورًا ويحمي جميع مواقع الويب الخاصة بك.
`sudo nginx -t && sudo nginx -s reload`
أو
`sudo service nginx restart`
هذا كل شيء، أصبح الحاجز نشطًا الآن ويحمي مواقعك من آلاف الروبوتات والمجالات الضارة.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-8.png"/>
الآن قم بإعداد cron لتحديث الحاجز تلقائيًا لك كل يوم بحيث تحصل دائمًا على أحدث حماية محدثة.
`sudo crontab -e`
أضف السطر التالي في نهاية ملف crontab الخاص بك. لاحظ إضافة معلمة سطر الأوامر `-e` لتحديد عنوان بريدك الإلكتروني حيث يتم إرسال تقرير التحديث إليه. من الواضح استبدل `[email protected]` بعنوان بريدك الإلكتروني الحقيقي أو لن تستلم البريد الإلكتروني عند تحديث البرنامج النصي.
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
سيؤدي هذا إلى تحديث الحاجز كل ليلة لك في الساعة 10 مساءً.
إذا كنت تريد تحديثه بشكل متكرر (لأنني أحيانًا أدفع 3-4 تحديثات يوميًا) يمكنك ضبطه كما يلي لتشغيل cron كل 8 ساعات، على الرغم من أن مرة واحدة يوميًا أكثر من كافية.
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
إذا كنت لا تريد أي إشعار بريد إلكتروني بعد التحديث (غير مستحسن في حال واجه Nginx أي EMERG عند إعادة التحميل)، فببساطة شغّل cron الخاص بك كما يلي.
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -n`
إذا كنت تفضل إرسال البريد الإلكتروني عبر <a href="https://www.mailgun.com/">mailgun</a> فشغّل cron الخاص بك هكذا:
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -g [email protected] -d yourdomain.com -a mailgun api key -f [email protected]`
هذا كل شيء، سيحافظ الحاجز تلقائيًا على تحديث نفسه وسيعيد أيضًا تحميل Nginx بمجرد تنزيل أحدث إصدار من ملف globalblacklist.conf.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-9.png"/>
يمكنك الآن تخصيص أي من الملفات التالية أدناه لتناسب بيئتك أو متطلباتك. هذه الملفات لا يتم تعديلها أبدًا أثناء التحديث باستخدام برنامج التحديث التلقائي أعلاه، لذا أي تخصيصات تقوم بها هنا لن يتم استبدالها أبدًا أثناء التحديث.```text
/etc/nginx/bots.d/whitelist-ips.conf
/etc/nginx/bots.d/whitelist-domains.conf
/etc/nginx/bots.d/blockbots.conf
/etc/nginx/bots.d/blacklist-domains.conf
/etc/nginx/bots.d/blacklist-user-agents.conf
/etc/nginx/bots.d/blacklist-ips.conf
/etc/nginx/bots.d/bad-referrer-words.conf
/etc/nginx/bots.d/custom-bad-referrers.conf
/etc/nginx/bots.d/ddos.conf
لنفترض أنك لسبب "غامض" تريد فعلاً حظر GoogleBot من الوصول إلى موقعك. كل ما عليك فعله هو إضافته إلى ملف /etc/nginx/bots.d/blacklist-user-agents.conf وسيتجاوز القائمة البيضاء الافتراضية لـ GoogleBot. وينطبق الأمر نفسه على أي روبوتات أخرى مدرجة في القائمة البيضاء افتراضياً.
جميع ملفات الـ include معلّق عليها لراحتك.
(اختبر أنه يعمل)
الاختبار
شغّل الأوامر التالية واحداً تلو الآخر من طرفية على جهاز لينكس آخر ضد اسم النطاق الخاص بك.
❗ استبدل http://yourdomain.com ❗ في الأمثلة أدناه باسم النطاق الحقيقي الخاص بك ❗
curl -A "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -I http://yourdomain.com
curl -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" -I http://yourdomain.com
يجب أن يستجيب برمز 200 OK
curl -A "Xenu Link Sleuth/1.3.8" -I http://yourdomain.com
curl -A "Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)" -I http://yourdomain.com
يجب أن يستجيب بإحدى رسائل الخطأ التالية:
curl -I http://yourdomain.com -e http://100dollars-seo.com
curl -I http://yourdomain.com -e http://zx6.ru
يجب أن يستجيب بإحدى رسائل الخطأ التالية:
أصبح Nginx Ultimate Bot Blocker الآن يعمل ويحمي مواقع الويب الخاصة بك !!!
❗ استبدل http://yourdomain.com ❗ في الأمثلة أدناه باسم النطاق الحقيقي الخاص بك ❗
إذا كنت مستخدماً لـ Cloudflare وتستخدم نظام CDN / التخزين المؤقت الخاص بـ Cloudflare، فيجب عليك دائماً تعطيل Cloudflare CDN (اضبط السحابة على الرمادي)
أثناء الاختبار ستحصل على رموز الاستجابة الصحيحة كما يلي:
هذا مقصود بالتصميم. فـ CDN يقوم بعمله، أي أن الاستجابة الأولى من خادمك قالت للروبوت "ارحل" بإصدارها رموز 444 أو 443.
يقوم Cloudflare بتخزين تلك الاستجابة مؤقتاً، وبالتالي في المرة الثانية التي تختبر فيها ستحصل على رسالة خطأ 520 Origin Error.
أثناء اختبار الحاجز، عطّل نظام CDN / التخزين المؤقت، وبمجرد أن ترضى عن اختباراتك، أعد تفعيل CDN/Cache على بيئتك الحية لأنك تريد فعلاً أن تحصل الروبوتات على تلك الاستجابة من Cloudflare.
معظم أنظمة CDN الأخرى ستظهر على الأرجح سلوكاً مشابهاً، لذا عطّل دائماً CDN أثناء الاختبار لاستبعاد أي شيء قد يتداخل مع اختبارك. تأكد دائماً من إعادة تفعيل CDN عند الانتهاء من الاختبار !!
بمجرد تفعيل Cloudflare CDN، اختبر مرة أخرى.
أثناء الاختبار، ستحصل على:
هذا يعني أن CDN يعمل.
تثبيت الحاجز في مواقع مجلدات Nginx غير القياسية
بعض الأشخاص يبنون Nginx بأنفسهم ولا يحصلون في النهاية على مواقع مجلدات nginx القياسية في /etc/nginx
لمستخدمين مثل هؤلاء يمكنك تشغيل install-ngxblocker و setup-ngxblocker و update-ngxblocker مع تحديد موقع المجلد في سطر الأوامر كما يلي.
sudo ./install-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./setup-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./update-ngxblocker -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d -e [email protected]
سيضع هذا تلقائياً الملفات في المواقع التي تحددها، وسيقوم بعمل الـ includes في vhosts الخاصة بك باستخدام مواقعك المخصصة، وعندما يسحب update-ngxblocker تحديثاً جديداً سيعيد أيضاً كتابة أقسام "Include" داخل ملف globalblacklist.conf تلقائياً بمواقعك المخصصة. شكراً مرة أخرى لـ Stuart Cardall @itoffshore على مساهماته في هذه البرامج النصية الممتازة.
تقارير الشبكة المكررة من Nginx ليست خطأ برمجياً ولا يمكن إصلاحها، فهذا هو السلوك المطلوب من الحاجز. التحديثات اليومية لقوائم IP السوداء تتسبب في إدراج بعض عناوين IP والنطاقات المعروفة في القائمة السوداء old value "1" ثم يتم إدراجها في القائمة البيضاء في نهاية globalblocklist وهو ترتيب التحميل الذي يضبط بعدها عناوين IP التي نعرف أنها جيدة إلى قيمتها الجديدة value "0" وبالتالي إدراجها في القائمة البيضاء. الأمر على هذا النحو منذ اليوم الأول للحاجز وسيبقى كذلك. هذه مجرد رسائل [WARN] بسيطة وليست رسائل [EMERG] ولا تؤثر على تشغيل Nginx بأي شكل من الأشكال.
(أكثر من 4000 مُحيل سيئ، ومُحيلو بريد عشوائي، وUser-Agents، وروبوتات سيئة، وعناوين IP سيئة، ومواقع إباحية وقمار وClickjacking، وشركات SEO مربحة، وكاشفات قوالب Wordpress، والعدد في ازدياد)
آلاف الساعات من البرمجة والاختبار ذهبت في هذا المشروع، أظهر بعض الحب
تحاول الروبوتات أن تجعل نفسها تبدو كبرمجيات أو مواقع ويب أخرى عبر إخفاء الـ user agent الخاص بها. قد تبدو أسماء الـ user agent الخاصة بها غير ضارة، بل وشرعية تماماً.
على سبيل المثال، "^Java" ولكن وفقاً لـ Project Honeypot، فهي في الواقع واحدة من أخطر السلاسل، لكن الكثير من الروبوتات الشرعية لديها "Java" في سلسلة الـ user agent الخاصة بها، لذا فإن النهج الذي يتبعه الكثيرون لحظر "Java" ليس جاهلاً فحسب بل يحجب أيضاً زاحفات شرعية جداً بما في ذلك بعض زاحفات Google و Bing، وهذا يوضح لي بوضوح أن أولئك الذين يكتبون سكربتات حظر الروبوتات نادراً ما يختبرونها.
يستخدم مُحيلو الـ Spam وأسماء النطاقات العشوائية تقنيات ذكية جداً للقفز من مواقعك وتشغيل حملات click-jacking و click-redirecting مربحة جداً تعرض إعلانات لأشخاص غير متوقعين يتصفحون الويب أو حتى تزرع برمجيات خبيثة أو إعلانية أو برامج فدية في متصفحاتهم والتي تصبح بعد ذلك جزءاً من شبكة الروبوتات المربحة الخاصة بهم.
يتضمن حاجز الروبوتات هذا مئات أسماء النطاقات وعناوين IP التي لن يراها معظم الناس حتى في سجلات Nginx الخاصة بهم. يأتي هذا نتيجة لجميع مواقعي التي تعمل عبر SSL وتستخدم Content-Security-Policy (CSP) التي تحظر الأشياء قبل وصولها حتى إلى Nginx، وقد التقطت وما زلت ألتقط بعضاً من أسوأ النطاقات والروبوتات الموجودة.
يتم أيضاً حظر كمية هائلة من المواقع الإباحية ومواقع القمار والمواقع الإخبارية المزيفة في سكربت الحظر هذا الذي ينمو أيضاً بوتيرة سريعة.
لسوء الحظ، معظم سكربتات حظر الروبوتات الموجودة هي ببساطة منسوخة ولصوقة من سكربتات أشخاص آخرين وتُجعل لتبدو كعمل خاص بهم. هذا السكربت استُلهم من السكربت الذي أنشأه https://github.com/mariusv وقد ساهمت في ذلك المشروع لكنني انطلقت في تخطيط جديد كلياً، ونظفته بشكل كبير وبدأت من الصفر. أصبح الآن مشروعاً مستقلاً تماماً. إنه نظيف، ويعمل، وقد تم اختباره بدقة.
قائمة حظر الروبوتات السيئة لـ nginx هذه مصممة لتكون ملف include عام لـ Nginx وتستخدم توجيهات Nginx map $http_user_agent و map $http_referer و geo $validate_client.
بهذه الطريقة يتم تحميل ملف .conf مرة واحدة في ذاكرة Nginx ويكون متاحاً لجميع مواقع الويب التي تشغّلها. كل ما عليك فعله هو استخدام عبارة Include في ملف إعداد vhost الخاص بـ Nginx.
جمال هذا الأمر أنه ملف مركزي واحد تستخدمه جميع مواقع الويب الخاصة بك. هذا يعني أن هناك مكاناً واحداً فقط لإجراء التعديلات أي إضافة روبوتات جديدة تكتشفها في ملفات السجلات الخاصة بك. تُطبَّق أي تغييرات فوراً على جميع المواقع بعد "sudo service nginx reload" بسيط. لكن بالطبع قم دائماً بـ sudo nginx -t لاختبار أي تغييرات في الإعداد قبل إعادة التحميل.
الملف صغير الحجم. في وقت كتابة هذا وأول إصدار عام لهذا، كان حجم الملف بما في ذلك جميع التعليقات "التي يتجاهلها nginx" حالياً فقط 185 كيلوبايت ويحتوي بالفعل على أكثر من 5000 نطاق سيئ وروبوت سيئ وعنوان IP سيئ. إنه خفيف جداً لدرجة أن Nginx لا يشعر بوجوده حتى. يحتوي بالفعل على آلاف الإدخالات - إجمالي التحديثات في أعلى ملف README هذا.
خلافاً للعديد من حواجز الروبوتات السيئة الأخرى لـ Nginx و Apache حيث يقوم الناس ببساطة بنسخ ولصق القوائم من الآخرين، فقد بُنيت هذه القائمة من الصفر وتم اختبارها بدقة وأعني بدقة لأكثر من 10 أشهر الآن. إنها تأتي من سجلات خوادم فعلية تتم مراقبتها يومياً وهناك ما لا يقل عن 3-10 إضافات جديدة لهذا الملف يومياً تقريباً.
كما تم اختبارها بدقة ضد الإيجابيات الكاذبة باستخدام أشهر من الاختبار المستمر والمنتظم ومراقبة ملفات السجلات.
جميع المواقع المدرجة في قائمة المُحيلين السيئين يتم فحصها واحداً تلو الآخر قبل إضافتها حتى. مجرد نسخ أي شيء يبدو مريباً في ملف السجل الخاص بك وإضافته إلى حاجز مثل هذا دون رؤية ما هو فعلاً أولاً .... حسناً، إنه أمر أحمق على أقل تقدير.
لدى Nginx خطأ جميل يسمى 444 والذي يقوم حرفياً بإسقاط الاتصال. جميع هذه القواعد تصدر استجابة 444، لذا إذا تطابقت قاعدة، فإن عنوان IP الطالب ببساطة لا يحصل على أي استجابة ويبدو له أن خادمك غير موجود أو يبدو غير متصل.
اختبار باستخدام curl مع أحد أسطر أوامر الاختبار الموثقة في ملف /conf.d/globalblacklist.conf سيعطي ببساطة "curl: (52) Empty reply from server" وهذا هو الرد الذي يحصل عليه المُحيلون السيئون والروبوتات.
بالنسبة للروبوتات أو العناكب التي ما زلت تريد السماح بها ولكن تريد تقييد معدل زيارتها، يمكنك استخدام وظائف تحديد المعدل المدمجة التي أدرجتها. الملف معلّق عليه بشكل موسع في جميع أنحائه لذا يجب أن تكتشف الأمر بنفسك وإلا فقط راسلني إذا كنت تواجه مشاكل.
أو للمساهمة بمُحيلين سيئين أو روبوتات خاصة بك أو لإجراء تصحيحات على أي روبوتات أو نطاقات محظورة بشكل غير صحيح، يرجى عمل fork لنسخة من هذا المستودع وإرسال طلبات سحب على الملفات الفردية الموجودة هنا ثم إرسال طلب سحب (PR).
بخصوص القوائم غير الصحيحة أو أي مشاكل أخرى على نظام المشكلات وسيتم التحقيق فيها وإزالتها إذا لزم الأمر. أستجيب بسرعة كبيرة لمشاكل المستخدمين وقد ساعدت عدداً لا يحصى من المستخدمين لأيام متواصلة لجعل حاجز الروبوتات الخاص بهم يعمل. يمكنك القول أنني مجنون (هذا قابل للنقاش) لكنني أحب مساعدة الناس ولا أتجاهل المشكلات أو الأشخاص الذين يواجهون مشاكل في جعل هذا يعمل.
الكثير من القوائم الموجودة تضع نطاقات غريبة في ملف hosts الخاص بها. ملف hosts الخاص بك و DNS لن يفهموا هذا. هذه القائمة تستخدم نطاقات محولة وهي بصيغة DNS الصحيحة ليتم فهمها بواسطة أي نظام تشغيل. تجنب استخدام القوائم التي لا تضع بنية النطاق المنسقة بشكل صحيح في قوائمها.
على سبيل المثال النطاق:
lifehacĸer.com (لاحظ حرف K)
يُترجم فعلياً إلى:
xn--lifehacer-1rb.com
يمكنك عمل nslookup على أي نظام تشغيل وسيتم حله بشكل صحيح.
`nslookup xn--lifehacer-1rb.com````xn--lifehacer-1rb.com origin = dns1.yandex.net mail addr = iskalko.yandex.ru serial = 2016120703 refresh = 14400 retry = 900 expire = 1209600 minimum = 14400 xn--lifehacer-1rb.com mail exchanger = 10 mx.yandex.net. Name: xn--lifehacer-1rb.com Address: 78.110.60.230 xn--lifehacer-1rb.com nameserver = dns2.yandex.net. xn--lifehacer-1rb.com text = "v=spf1 redirect=_spf.yandex.net" xn--lifehacer-1rb.com nameserver = dns1.yandex.net.
- انظر إلى: https://www.charset.org/punycode لمزيد من المعلومات حول هذا.
************************************************
## راقب دائماً ما تفعله:
**تأكد من مراقبة سجلات موقعك على الويب** بعد تنفيذ هذا. أقترح أن تقوم أولاً بتحميل هذا على موقع واحد ومراقبته بحثاً عن أي نتائج إيجابية خاطئة محتملة قبل وضعه في الإنتاج على جميع مواقع الويب الخاصة بك.
لا تجلس مثل النعامة ورأسك في الرمال، فكونك مشغلاً مسؤولاً للخوادم ومالكاً لموقع ويب يعني أنه يجب عليك مراقبة سجلاتك بشكل متكرر. سبب وصول الكثير منكم إلى هنا في المقام الأول هو أنكم رأيتم أشياء سيئة المظهر في ملفات سجل Nginx الخاصة بكم.
كما يجب عليك مراقبة سجلاتك يومياً بحثاً عن أي عناوين إحالة (Referers) سيئة جديدة وسلاسل وكلاء مستخدم (User-Agent) تريد حظرها. أفضل مصدر للإضافة إلى هذه القائمة هو سجلات الخادم الخاصة بك، وليس سجلاتي.
لا تتردد في المساهمة بعناوين الإحالة السيئة من سجلاتك الخاصة إلى هذا المشروع عن طريق إرسال طلب سحب (Pull Request). ومع ذلك، يمكنك الاعتماد على هذه القائمة لإبعاد 99% من الأشرار هناك.
************************************************
## كيفية مراقبة سجلاتك يومياً (الطريقة السهلة):
**مع خالص الشكر والتقدير إلى**
https://blog.nexcess.net/2011/01/21/one-liners-for-apache-log-files/
لمراقبة أهم عناوين الإحالة لديك لملفات سجل موقع ويب على أساس يومي، استخدم مهام cron البسيطة التالية والتي سترسل لك عبر البريد الإلكتروني قائمة بأهم عناوين الإحالة / وكلاء المستخدم كل صباح من ملفات سجل موقع ويب معين. هذا مثال لوظيفة cron واحدة فقط لموقع واحد. قم بإعداد عدة وظائف لكل موقع تريد مراقبته. إليك cron يعمل في الساعة 8 صباحاً كل يوم ويرسل لي عبر البريد الإلكتروني السجل المجرد من عناوين الإحالة. عندما أقول مجرداً، فإن نطاق الموقع وعناوين الإحالة الأخرى مثل Google و Bing يتم استبعادها من النتائج. بالطبع يجب عليك تغيير اسم ملف السجل واسم النطاق وعنوان بريدك الإلكتروني في الأمثلة أدناه. وظيفة cron الثانية لجمع وكلاء المستخدم لا تقوم بأي استبعاد لأي عناوين إحالة ولكن يمكنك إضافة هذه الوظيفة إذا أردت نسخ عبارة awk `!~` من المثال الأول.
##### Cron لمراقبة عناوين الإحالة اليومية على Nginx
`00 08 * * * tail -10000 /var/log/nginx/mydomain-access.log | awk '$11 !~ /google|bing|yahoo|yandex|mywebsite.com/' | awk '{print $11}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Referers for Mydomain.com" [email protected]`
يرسل لك هذا قائمة يومية بعناوين الإحالة باستخدام أمر awk لاستبعاد النطاقات مثل google و bing واسم النطاق الخاص بك.
##### Cron لمراقبة وكلاء المستخدم اليوميين على Nginx
`00 08 * * * tail -50000 /var/log/nginx/mydomain-access.log | awk '{print $12}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Agents for Mydomain.com" [email protected]`
يرسل لك هذا قائمة بأهم وكلاء المستخدم الذين زاروا موقعك في آخر 24 ساعة، وهو مفيد لاكتشاف أي سلاسل وكلاء مستخدم مارقة أو مشبوهة.
************************************************
## حظر الروبوتات العدوانية على مستوى جدار الحماية باستخدام FAIL2BAN:
لقد أضفت عامل تصفية وإجراء Fail2Ban مخصصاً كتبته بنفسي والذي يراقب سجلات Nginx الخاصة بك بحثاً عن الروبوتات التي تولد عدداً كبيراً من أخطاء 444. سيقوم هذا السجن المخصص لـ Fail2Ban بفحص السجلات على مدى أسبوع واحد وحظر المخالف لمدة 24 ساعة.
يساعد هذا بشكل كبير في إبعاد بعض المخالفين المتكررين ومنعهم من ملء ملفات السجل الخاصة بك بأخطاء 444.
انظر إلى مجلد Fail2Ban للحصول على إرشادات حول تكوين هذه الإضافة الرائعة لـ Nginx Bad Bot Blocker.
************************************************
## إيقاف "الأشباح" في سبام Google Analytics:
مجرد استخدام حاجب Nginx لا يوقف سبام الإحالة الشبحية في Google Analytics لأنها تضرب Analytics مباشرة ولا تلمس موقعك الإلكتروني بالضرورة في كل مرة.
يجب عليك استخدام عوامل تصفية regex في Analytics لمنع سبام الإحالة الشبحية.
لهذا الغرض، توجد عدة ملفات google-exclude-0*.txt تم إنشاؤها لك ويتم تحديثها في نفس الوقت الذي يتم فيه تحديث حاجب Nginx. مع نمو القائمة، سيتم إنشاء المزيد من ملفات الاستبعاد.
************************************************
## لإيقاف سبام "الأشباح" على GOOGLE ANALYTICS اتبع الدليل المرئي البسيط أدناه
اتبع التعليمات المرئية خطوة بخطوة أدناه لإضافة ملفات google-exclude هذه كشرائح (Segments) إلى موقع الويب الخاص بك.
<table style="width:100%;margin:0;">
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-01.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-02.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-03.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-04.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-05.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-06.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-07.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
</table>
************************************************
## حظر نطاقات السبام باستخدام GOOGLE SEARCH CONSOLE / أدوات مشرفي المواقع
(كيفية استخدام ملف google-disavow.txt)
لقد أضفت إنشاء ملف نصي لـ Google Disavow يسمى google-disavow.txt. يمكن استخدام هذا الملف في أدوات مشرفي المواقع من Google لحظر كل هذه النطاقات باعتبارها روابط سبام أو روابط سيئة. استخدمه بحذر.
************************************************
## نسخة ROBOTS.txt لمن لا يستطيعون استخدام هذا الحاجب الكامل؟
الكثير من الأشخاص تحت رحمة شركة الاستضافة الخاصة بهم وليس لديهم وصول جذر إلى الخادم الذي يعمل خلف موقع الويب الخاص بهم. إذا كان هذا هو وضعك، فاطلع على ملف robots.txt الذي يتم إنشاؤه تلقائياً والذي سيساعدك إلى حد ما في إبعاد الكثير من الروبوتات السيئة ووكلاء المستخدم عن مواقعك.
************************************************
## نسخ .htaccess لمن لا يستطيعون استخدام هذا الحاجب الكامل؟
الكثير من الأشخاص تحت رحمة شركة الاستضافة الخاصة بهم وليس لديهم وصول جذر إلى الخادم الذي يعمل خلف موقع الويب الخاص بهم.
إذا كان هذا هو وضعك، فاطلع على إصدارات .htaccess التي يتم إنشاؤها تلقائياً من حاجب عناوين إحالة السبام والتي يمكن العثور عليها في <a href="https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/tree/master/.htaccess">هذا المستودع</a> طريقة .htaccess هذه (لمواقع APACHE فقط) ستساعدك في إبقاء جميع عناوين إحالة السبام الموجودة في هذا الحاجب خارج موقعك.
يُذكر هذا هنا فقط لأن الكثير من الأشخاص الذين يستخدمون أنظمة CPanel يعتقدون أنهم خلف خادم Nginx ولكن في الواقع يعملون على خادم Apache خلف خادم وكيل Nginx. .htaccess لا يعمل على مواقع Nginx.
لا تستخدم خادم ويب Nginx؟ انظر إلى [](https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker)
************************************************
# إنه يعمل بحق !!!
************************************************
## استمتع الآن فقط بما يمكن أن يقدمه لك Nginx Bad Bot Blocker وللمواقع الخاصة بك.
### وساعد في دعم هذا المشروع
لقد ذهبت آلاف الساعات من البرمجة والاختبار في هذا المشروع، أظهر بعض الحب
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Buy me Coffee" width="300"/>](https://ko-fi.com/mitchellkrog)
************************************************
# هل تم اختراق موقع الويب الخاص بك؟
[](mailto:[email protected]) لمساعدتك في تنظيف وتأمين موقع الويب الخاص بك.
************************************************
### بعض المشاريع المجانية الرائعة الأخرى
- https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker
- https://github.com/mitchellkrogza/Badd-Boyz-Hosts
- https://github.com/mitchellkrogza/Ultimate.Hosts.Blacklist
- https://github.com/mitchellkrogza/Stop.Google.Analytics.Ghost.Spam.HOWTO
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/fail2ban-useful-scripts
- https://github.com/mitchellkrogza/linux-server-administration-scripts
- https://github.com/mitchellkrogza/Travis-CI-Nginx-for-Testing-Nginx-Configuration
- https://github.com/mitchellkrogza/Travis-CI-for-Apache-For-Testing-Apache-and-PHP-Configurations
- https://github.com/mitchellkrogza/Fail2Ban-Blacklist-JAIL-for-Repeat-Offenders-with-Perma-Extended-Banning
- https://github.com/funilrys/PyFunceble
- https://github.com/funilrys/dead-hosts
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/Suspicious.Snooping.Sniffing.Hacking.IP.Addresses
- https://github.com/mitchellkrogza/Fail2Ban.WebExploits
************************************************
### تحقق أيضاً من القائمة الكبيرة الجديدة لمواقع الويب المخترقة والملوثة بالبرمجيات الخبيثة و WORDPRESS
يحتوي هذا المستودع على قائمة بجميع مواقع الويب التي أصادفها والتي تم اختراقها ببرمجيات خبيثة.
معظم مالكي المواقع غير مدركين أن مواقعهم قد تم اختراقها ويتم استخدامها لزرع برمجيات خبيثة.
تحقق منها على: https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
************************************************
### مهتم بالتصوير الفوتوغرافي؟
تفضل بزيارتي على [mitchellkrog.com](https://mitchellkrog.com) أو [فيسبوك](https://www.facebook.com/MitchellKrogPhotography) أو تابعني على تويتر <a href='https://twitter.com/MitchellKrog'><img src="https://img.shields.io/twitter/follow/MitchellKrog.svg?style=social&label=Follow" alt='Follow @MitchellKrog'></a>
************************************************
### الشكر والمساهمون:
شكر جزيل لأولئك الذين ساهموا في هذا المشروع.
تم تكييف أجزاء كثيرة من نصوص التوليد والكود الذي يعمل خلف هذا المشروع من مقتطفات من مئات المصادر.
في الواقع، من الصعب جداً ذكر الجميع ولكن إليك بعض الأشخاص الرئيسيين الذين ساعدتني مقتطفاتهم البرمجية الصغيرة في تقديم ميزات جديدة طوال الوقت. أظهر لهم بعض الحب وتحقق من بعض مشاريعهم أيضاً.
- Konstantin Goretzki @konstantingoretzki https://github.com/konstantingoretzki (تحسين Regex على عامل تصفية Fail2Ban)
- Stuart Cardall - https://github.com/itoffshore (نصوص التثبيت والتحديث والإعداد وقائم على حزمة Alpine Linux)
- Mike van Eckendonk - https://github.com/Eckybrazzz
- Nissar Chababy @funilrys - https://github.com/funilrys/PyFunceble (نص ممتاز للتحقق من أسماء النطاقات النشطة وغير النشطة والمنتهية)
- Marius Voila https://github.com/mariusv
- Cătălin Mariș https://github.com/alrra
- deformhead https://github.com/deformhead
- bluedragonz https://github.com/bluedragonz
- Alexander https://github.com/shoonois
- Steven Black https://github.com/StevenBlack
- Fail2Ban - https://github.com/fail2ban
- Stevie-Ray Hartog https://github.com/Stevie-Ray
- Sir Athos من StackOverFlow - http://stackoverflow.com/users/2245910/sir-athos (مساعدة في وضع علامات Travis Build والالتزام)
- StackOverflow - http://stackoverflow.com/ (نصوص bash من مئات الأسئلة والأجوبة)
- SuperUser - http://superuser.com/ (مقتطفات من أسئلة وأجوبة مختلفة)
إذا كنت تعتقد أن اسمك يجب أن يكون هنا، أرسل لي رسالة.
************************************************
### كتابة كود مثل هذا يستغرق الكثير من الوقت !!
لقد ذهبت آلاف الساعات من البرمجة والاختبار في هذا المشروع، أظهر بعض الحب
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Buy me Coffee" width="300"/>](https://ko-fi.com/mitchellkrog)
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/zuko.png"/>
************************************************
# رخصة MIT
## حقوق النشر (c) 2017 Mitchell Krog - [email protected]
## https://github.com/mitchellkrogza
يُمنح الإذن بموجب هذا، مجاناً، لأي شخص يحصل على نسخة
من هذا البرنامج وملفات التوثيق المرتبطة به ("البرنامج")، للتعامل
في البرنامج دون قيود، بما في ذلك على سبيل المثال لا الحصر الحقوق
في استخدام ونسخ وتعديل ودمج ونشر وتوزيع وترخيص و/أو بيع
نسخ من البرنامج، والسماح للأشخاص الذين يتم تزويدهم بالبرنامج
بالقيام بذلك، مع مراعاة الشروط التالية:
يجب تضمين إشعار حقوق النشر أعلاه وإشعار الإذن هذا في جميع
النسخ أو الأجزاء الجوهرية من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو
ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق،
والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال لا يتحمل
المؤلفون أو أصحاب حقوق النشر المسؤولية عن أي مطالبة أو أضرار أو غيرها
من المسؤوليات، سواء في إجراء تعاقدي أو تقصيري أو غير ذلك، الناشئة عن،
أو من أو فيما يتعلق بالبرنامج أو الاستخدام أو التعاملات الأخرى في
البرنامج.