
حجب Nginx للروبوتات الضارة، وحاجب الإحالات المزعجة، وماسحات الثغرات الأمنية، ووكلاء المستخدم، والبرمجيات الخبيثة، والبرمجيات الإعلانية، وبرمجيات الفدية، والمواقع الخبيثة، مع حماية من هجمات DDOS، وحظر كاشف قوالب ووردبريس، وسجن Fail2Ban للمخالفين المتكررين
| المستودع | كن راعيًا |
|---|---|
| سيظهر شعارك ورابط موقعك هنا إذا أصبحت راعيًا. فقط أرسل لي بريدًا إلكترونيًا على [email protected] إذا كنت ترغب في رعاية هذا المشروع، لأن جنوب إفريقيا غير مدعومة بعد في برنامج الرعاة على Github. | |
| ساعدني في الدعم عبر https://ko-fi.com/mitchellkrog |
يرجى التأكد من اشتراكك في إشعارات Github ليتم إعلامك عند تحديث الحاجز أو عند حدوث أي تغييرات مهمة أو حرجة للمهمة (قد تسبب انقطاعًا) قد تحدث.
هذه هي طريقتنا الجديدة المفضلة للتثبيت، والتي تتم الآن من خلال مجموعة من سكربتات شل مقدمة إلى هذا المستودع ويحافظ عليها Stuart Cardall @itoffshore، أحد القائمين على حزم Alpine Linux.
التعليمات أدناه لعملية تثبيت سريعة وخالية من المتاعب، والتي تقوم بتنزيل جميع الملفات المطلوبة للحاجز، وتتضمن السكربتات إضافة التضمينات المطلوبة إلى ملفات nginx.conf و nginx .vhost الخاصة بك. يفترض سكربت الإعداد أن ملفات إعداد 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 لعرض الخيارات.
يرجى ملاحظة: لمن يستخدمون شهادات Let's Encrypt SSL، الطريقة المفضلة والمضمونة 100% هي استخدام طريقة Webroot Authenticator. يبدو أن هناك بعض المشاكل لدى الأشخاص الذين يستخدمون طريقة تحدي http، لكننا نؤكد أن webroot يعمل بدون أخطاء. لسنا متأكدين في هذه المرحلة ما إذا كانت طريقة تحدي http-01 عبارة عن خلل في certbot أو nginx.
تقارير الشبكة المكررة من Nginx ليست خللًا ولا يمكن إصلاحها، فهذا هو السلوك المرغوب للحاجز. تؤدي التحديثات اليومية للقوائم السوداء لعناوين IP إلى إدراج بعض عناوين IP والنطاقات المعروفة في القائمة السوداء old value "1"، ثم يتم إدراجها في القائمة البيضاء في نهاية globalblocklist تمامًا، وهو ترتيب التحميل الذي يضبط عناوين IP التي نعرف أنها جيدة على value "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 جميعها بمواقع تثبيت / تحديث مخصصة من سطر الأوامر.
قم بتشغيل أي من نصوص setup أو install أو update مع خيار --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 مباشرةً من المستودع.
تأكد من جعل نصوص setup وupdate الخاصة بك قابلة للتنفيذ عن طريق تشغيل الأمرين التاليين. هذا مهم قبل المتابعة مع الخطوة 4 وما بعدها.```sh sudo chmod +x /usr/local/sbin/setup-ngxblocker sudo chmod +x /usr/local/sbin/update-ngxblocker
**يمكن تكوين كل من 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-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 إلى ملف whitelits-ips.conf القابل للتخصيص والموجود في /etc/nginx/bots.d/whitelist-ips.conf.
**يمكن تهيئة كل من setup-ngxblocker وinstall-ngxblocker وupdate-ngxblocker بمواقع تثبيت/تحديث مخصصة من سطر الأوامر.**
**قم بتشغيل أي من سكربتات الإعداد أو التثبيت أو التحديث مع --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 بمواقع تثبيت/تحديث مخصصة من خلال سطر الأوامر.
شغّل أيًا من سكربتات setup أو install أو update باستخدام --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]`
إذا كنت لا تريد أي إشعار بريد إلكتروني بعد التحديث (وهو أمر غير مستحسن في حال حدوث خطأ EMERG في Nginx عند إعادة التحميل)، فما عليك سوى تشغيل 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. وينطبق الأمر نفسه على أي بوتات أخرى مبيّضة افتراضيًا.
جميع ملفات التضمين موثّقة (معلّق عليها) لتسهيل الأمر عليك.
(اختبر أنه يعمل)
الاختبار
قم بتشغيل الأوامر التالية واحدًا تلو الآخر من جهاز طرفي على جهاز Linux آخر موجّهًا إلى اسم النطاق الخاص بك.
❗ استبدل 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 / التخزين المؤقت في بيئتك المباشرة، فأنت تريد أن يحصل البوتات على تلك الاستجابة من 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]
سيؤدي هذا تلقائيًا إلى وضع الملفات في المواقع التي تحددها، وسيقوم بعمل التضمينات داخل vhosts الخاصة بك باستخدام المواقع المخصصة لديك، وعندما يسحب update-ngxblocker تحديثًا جديدًا، سيعيد أيضًا كتابة أقسام "Include" داخل ملف globalblacklist.conf تلقائيًا إلى مواقعك المخصصة. شكرًا مرة أخرى لـ Stuart Cardall @itoffshore على مساهماته في هذه البرامج النصية الممتازة.
تقارير الشبكة المكررة من Nginx ليست خطأ ولا يمكن إصلاحها، فهذا هو السلوك المطلوب من الحاجز. التحديثات اليومية للقوائم السوداء للـ IP تتسبب في إدراج بعض عناوين ونطاقات IP المعروفة في القائمة السوداء old value "1" ثم يتم إدراجها في القائمة البيضاء في نهاية globalblocklist وهذا هو ترتيب التحميل الذي يضبط الـ IP التي نعرف أنها جيدة إلى value "0" الجديد مما يضعها في القائمة البيضاء. هكذا كان الأمر منذ اليوم الأول للحاجز وسيبقى كذلك. هذه مجرد رسائل [WARN] وليست رسائل [EMERG] ولا تؤثر على تشغيل Nginx بأي شكل من الأشكال.
(أكثر من 4000 إحالة سيئة، وإحالات سبام، وUser-Agent، وبوتات سيئة، وعناوين IP سيئة، ومواقع إباحية وقمار وClickjacking، وشركات SEO مربحة، وكاشفات قوالب ووردبريس، والعدد في ازدياد)
آلاف الساعات من البرمجة والاختبار ذهبت في هذا المشروع، أظهر بعض الحب
تحاول البوتات أن تجعل نفسها تبدو كبرامج أو مواقع ويب أخرى عبر إخفاء الـ user agent الخاص بها. قد تبدو أسماء الـ user agent الخاصة بها غير ضارة، بل وشرعية تمامًا.
على سبيل المثال، "^Java" ووفقًا لمشروع Project Honeypot، فهو في الواقع واحد من أخطر البوتات، لكن الكثير من البوتات الشرعية لديها "Java" في سلسلة الـ user agent الخاصة بها، لذا فإن النهج الذي يتبعه كثيرون لحظر "Java" ليس جاهلًا فحسب، بل يحجب أيضًا زاحفات شرعية جدًا بما في ذلك بعض زاحفات Google و Bing، ويوضح لي بوضوح أن أولئك الذين يكتبون نصوص حظر البوتات نادرًا ما يختبرونها.
تستخدم الإحالات المزعجة وأسماء النطاقات المزعجة تقنيات ذكية جدًا للقفز من مواقعك وتشغيل حملات Click-Jacking و Click-Redirect مربحة جدًا تقدم إعلانات لأشخاص غير متوقعين يتصفحون الويب أو حتى تزرع برامج ضارة أو Adware أو Ransomware في متصفحاتهم، والتي تصبح لاحقًا جزءًا من شبكة البوتات المربحة الخاصة بهم.
يتضمن حاجز البوتات هذا مئات أسماء النطاقات وعناوين IP التي لن يراها معظم الناس حتى في سجلات Nginx الخاصة بهم. يأتي هذا نتيجة لجميع مواقعي التي تعمل عبر SSL وتستخدم Content-Security-Policy (CSP) التي تحظر الأشياء قبل وصولها حتى إلى Nginx، وقد التقطت وما زلت ألتقط بعضًا من أسوأ النطاقات والبوتات هناك.
كمية هائلة من المواقع الإباحية ومواقع القمار والأخبار المزيفة محظورة أيضًا في سكربت الحاجز هذا، والذي ينمو أيضًا بوتيرة سريعة.
لسوء الحظ، فإن معظم سكربتات حظر البوتات الموجودة هي ببساطة منسوخة ولصوقة من سكربتات أشخاص آخرين وتُجعل لتبدو كعمل خاص بهم. هذا السكربت مستوحى من السكربت الذي أنشأه https://github.com/mariusv وقد ساهمت في ذلك المشروع لكنني انطلقت في تخطيط جديد كليًا، ونظفته كثيرًا وبدأت من الصفر. أصبح الآن مشروعًا مستقلاً تمامًا. إنه نظيف، ويعمل، وقد خضع لاختبارات شاملة.
قائمة حظر البوتات السيئة هذه لـ nginx مصممة لتكون ملف تضمين عام لـ 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 الخاصة بك.
راقب أيضاً سجلاتك يومياً بحثاً عن المُحيلين السيئين الجدد وسلاسل User-Agent التي تريد حظرها. أفضل مصدر للإضافة إلى هذه القائمة هو سجلات الخادم الخاصة بك، وليس سجلاتي.
لا تتردد في المساهمة بمُحيلين سيئين من سجلاتك الخاصة إلى هذا المشروع عن طريق إرسال Pull Request (PR). ومع ذلك يمكنك الاعتماد على هذه القائمة لإبعاد 99% من الأشرار.
************************************************
## كيفية مراقبة سجلاتك يومياً (الطريقة السهلة):
**مع جزيل الشكر والتقدير إلى**
https://blog.nexcess.net/2011/01/21/one-liners-for-apache-log-files/
لمراقبة أهم المُحيلين في ملفات سجل موقع ويب على أساس يومي، استخدم مهام cron البسيطة التالية والتي سترسل لك عبر البريد الإلكتروني قائمة بأهم المُحيلين / وكلاء المستخدم كل صباح من ملفات سجل موقع ويب معين. هذا مثال لمهمة cron واحدة فقط لموقع واحد. أنشئ عدة مهام لكل موقع تريد مراقبته. إليك cron يعمل في الساعة 8 صباحاً كل يوم ويرسل لي سجل المُحيلين بعد تجريده. عندما أقول مجرداً، يتم استبعاد نطاق الموقع والمُحيلين الآخرين مثل Google وBing من النتائج. بالطبع يجب عليك تغيير اسم ملف السجل واسم النطاق وعنوان بريدك الإلكتروني في الأمثلة أدناه. مهمة cron الثانية لجمع User-Agents لا تقوم بأي تجريد لأي مُحيلين، ولكن يمكنك إضافة هذه الوظيفة إذا أردت بنسخ جملة 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 لمراقبة User-Agents يومياً على 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]`
يرسل لك هذا بريداً إلكترونياً بقائمة أفضل User-Agents الذين زاروا موقعك في آخر 24 ساعة، وهو مفيد لاكتشاف أي سلاسل User-Agents مارقة أو مشبوهة.
************************************************
## حظر الروبوتات العدوانية على مستوى جدار الحماية باستخدام 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 هذه كشرائح إلى موقعك على الويب.
<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 - إضافة شرائح لإيقاف سبام الأشباح"/></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 - إضافة شرائح لإيقاف سبام الأشباح"/></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 - إضافة شرائح لإيقاف سبام الأشباح"/></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 - إضافة شرائح لإيقاف سبام الأشباح"/></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 - إضافة شرائح لإيقاف سبام الأشباح"/></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 - إضافة شرائح لإيقاف سبام الأشباح"/></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 - إضافة شرائح لإيقاف سبام الأشباح"/></td>
</tr>
</table>
************************************************
## حظر نطاقات السبام باستخدام Google Search Console / أدوات مشرفي المواقع
(كيفية استخدام ملف google-disavow.txt)
أضفت إنشاء ملف Google Disavow نصي يسمى google-disavow.txt. يمكن استخدام هذا الملف في أدوات مشرفي المواقع من Google لحظر كل هذه النطاقات باعتبارها روابط سبام أو روابط سيئة. استخدمه بحذر.
************************************************
## إصدار ROBOTS.txt لأولئك الذين لا يمكنهم استخدام هذا الحاجب الكامل؟
الكثير من الناس تحت رحمة شركة الاستضافة الخاصة بهم وليس لديهم وصول جذر إلى الخادم الذي يعمل خلف موقعهم على الويب. إذا كان هذا هو وضعك، فاطلع على ملف robots.txt المُولّد تلقائياً والذي سيساعدك إلى حد ما في إبعاد الكثير من الروبوتات السيئة ووكلاء المستخدم عن مواقعك.
************************************************
## إصدارات .htaccess لأولئك الذين لا يمكنهم استخدام هذا الحاجب الكامل؟
الكثير من الناس تحت رحمة شركة الاستضافة الخاصة بهم وليس لديهم وصول جذر إلى الخادم الذي يعمل خلف موقعهم على الويب.
إذا كان هذا هو وضعك، فاطلع على إصدارات .htaccess المُولّدة تلقائياً من Spam Referrer Blocker الموجودة في <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="اشترِ لي قهوة" 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
************************************************
### وتحقق أيضاً من القائمة الكبيرة الجديدة للمواقع المخترقة والملوثة بالبرمجيات الخبيثة ومواقع ووردبريس
يحتوي هذا المستودع على قائمة بجميع المواقع التي أصادفها والتي تم اختراقها بالبرمجيات الخبيثة. معظم أصحاب المواقع لا يدركون أن مواقعهم تم اختراقها ويتم استخدامها لزرع البرمجيات الخبيثة.
اطلع عليها على: https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
************************************************
### من محبي التصوير الفوتوغرافي؟
مرر بزيارة إليّ على [mitchellkrog.com](https://mitchellkrog.com) أو [Facebook](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="اشترِ لي قهوة" 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
يُمنح بموجب هذا الإذن، مجاناً، لأي شخص يحصل على نسخة من هذا البرنامج وملفات التوثيق المرتبطة به ("البرنامج")، للتعامل مع البرنامج دون أي قيود، بما في ذلك دون حصر حقوق استخدام البرنامج ونسخه وتعديله ودمجه ونشره وتوزيعه وترخيصه من الباطن و/أو بيع نسخ منه، والسماح للأشخاص الذين يُسلَّم إليهم البرنامج بالقيام بذلك، وفقاً للشروط التالية:
يجب تضمين إشعار حقوق النشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الجوهرية من البرنامج.
يُقدَّم البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات قابلية التسويق والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال، لا يتحمل المؤلفون أو أصحاب حقوق النشر المسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في دعوى تعاقدية أو تقصيرية أو غير ذلك، تنشأ عن البرنامج أو فيما يتعلق به أو نتيجة لاستخدامه أو أي تعاملات أخرى معه.