بلاک کردن user agent در nginx
User Agent یک محتوای متنی است که اطلاعاتی از سیستم عامل، مرورگر و اطلاعاتی جانبی از کاربران به وب سرور می دهند، این اطلاعات گاها در نوع نمایش صفحات و تصمیم گیری یک cms برای نوع برخورد با درخواست ها موثر هستند. برای مثال UA ارسال شده از سمت مرورگر یک کاربر به شکل زیر می باشد:
Mozilla/5.0 (Windows NT 6.2; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1
این کاربر از مرورگر فایرفاکس نسخه 40.1 و سیستم عامل ویندوز نسخه 8.1 استفاده می کند.
لیست کاملی از User Agent ها را در این صفحه می بینید:
http://www.useragentstring.com/pages/useragentstring.php
ربات ها و برنامه های مختلف User Agent های مخصوص خود را دارند، بر اساس اطلاعات موجود در UA می توانید مانع دسترسی یک روبات یا اسکنر به سایت شوید. برای جلوگیری از دسترسی یک اسکنر از طریق تنظیمات nginx مطابق آموزش زیر عمل کنید.
ابتدا UA را مشخص می کنیم:
1 2 | NESSUS::SOAP Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) |
اطلاعات بالا مربوط به اسکنر آسیب پذیری های وب به نام nessus می باشد. فایل کانفیگ nginx را ویرایش می کنیم:
1 | nano /etc/nginx/nginx.conf |
و در بلاک server دستور زیر را وارد می کنیم.
1 2 3 4 | server { if ($http_user_agent = "NESSUS::SOAP Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)"){ return 403;} } |
سپس برای اعمال تنظیمات nginx را reload می کنیم.
1 | service nginx reload |
برای تست یک بار سایت را با nessus اسکن کنید. در تصویر زیر نتیجه اسکن را پس از بلاک کردن اسکنر Havij مشاهده می کنید:
نکته: جلوگیری از اسکن سایت روش های کارآمدتر و مخصوص خود را دارد، آموزش بالا صرفا مانع دسترسی user agent می شود. اکثر اسکنرها قابلیت تغییر User Agent را دارند که به راحتی منجر به بایپس شدن محدودیت اعمال شده می شود.
برای کانفیگ امنیتی سرور خود، با تیم پشتیبانی فنی میزبان آنلاین در تماس باشید.
http://my.mizbanonline.com/submitticket.php?step=2&deptid=1