كيفية منع الإحالة غير المرغوب فيها باستخدام Nginx؟

StackOverflow https://stackoverflow.com/questions/457447

  •  19-08-2019
  •  | 
  •  

سؤال

أقوم بتشغيل اثنين من الهجين تحت خادم Nginx.أستمر في تلقي طلبات لملف غير موجود.تتغير عناوين IP بشكل متكرر ولكن عنوان URL المرجعي يظل كما هو.أود أن حل هذا.

هل كانت مفيدة؟

المحلول

https://calomel.org/nginx.html

حظر معظم "الرسائل غير المرغوب فيها المرجعية" - "التي تمثل إزعاجًا أكثر من كونها مشكلة"

nginx.conf

    ## Deny certain Referers (case insensitive)
    ## The ~* makes it case insensitive as opposed to just a ~
 if ($http_referer ~* (babes|click|diamond|forsale|girl|jewelry|love|nudit|organic|poker|porn|poweroversoftware|sex|teen|video|webcam|zippo))
    {  return 403;   }

نصائح أخرى

باستخدام نجينكس وحدة الخريطة يعد أكثر كفاءة وأسهل في الإدارة حيث تطول القائمة.

ضع هذا في كتلة http {} الخاصة بك:

map $http_referer $bad_referer {
    hostnames;

    default                           0;

    # Put regexes for undesired referers here
    "~social-buttons.com"             1;
    "~semalt.com"                     1;
    "~kambasoft.com"                  1;
    "~savetubevideo.com"              1;
    "~descargar-musica-gratis.net"    1;
    "~7makemoneyonline.com"           1;
    "~baixar-musicas-gratis.com"      1;
    "~iloveitaly.com"                 1;
    "~ilovevitaly.ru"                 1;
    "~fbdownloader.com"               1;
    "~econom.co"                      1;
    "~buttons-for-website.com"        1;
    "~buttons-for-your-website.com"   1;
    "~srecorder.co"                   1;
    "~darodar.com"                    1;
    "~priceg.com"                     1;
    "~blackhatworth.com"              1;
    "~adviceforum.info"               1;
    "~hulfingtonpost.com"             1;
    "~best-seo-solution.com"          1;
    "~googlsucks.com"                 1;
    "~theguardlan.com"                1;
    "~i-x.wiki"                       1;
    "~buy-cheap-online.info"          1;
    "~Get-Free-Traffic-Now.com"       1;
}

ضع هذا في كتلة الخادم {} الخاصة بك:

if ($bad_referer) { 
    return 444; # emtpy response
}

عملت معي.

حصلت على هذا من http://fadeit.dk/blog/post/nginx-referer-spam-blacklist

لقد كنت في موقف مماثل من قبل حيث كنت بحاجة إلى حظر الأشخاص بناءً على السلوك بدلاً من القواعد التعسفية الأخرى التي يمكن لجدار الحماية حلها من تلقاء نفسه.

كانت الطريقة التي تعاملت بها مع المشكلة هي جعل المنطق الخاص بي (Rails في حالتك) يقوم بالحظر ...لكن الطريق طويل:

  • اجعل المنطق الخاص بك يحتفظ بقائمة الحظر كملف نص عادي مفصول بسطر جديد.
  • قم بإنشاء برنامج نصي bash (أو غيره) كجذر لقراءة هذا الملف وإضافة المستمعين إليه إلى قائمة الحظر الخاصة بجدار الحماية لديك
  • قم بإنشاء مهمة cron لاستدعاء البرنامج النصي كجذر مرة أخرى

السبب وراء قيامي بذلك بهذه الطريقة (بدلاً من مجرد منح Django أذونات لتغيير تكوين جدار الحماية) هو ببساطة:حماية.إذا تم اختراق تطبيقي، فلن أريد أن يؤذي أي شيء آخر.

نص bash يشبه هذا:

exec < /path/to/my/djago-maintained/block-list
while read line
do

    iptables -A INPUT --source $line/32 -j DROP

done

لقد قمت بإنشاء وحدة للتحقق من عنوان IP الوارد في القوائم السوداء https://github.com/oneumyvakin/ngx_http_blacklist_lookup_module

يستخدم القوائم السوداء من projecthoneypot.org وblocklist.de وuceprotect.net

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top