چگونگی دسترسی به IP های اصلی بازدیدکنندگان وب‌سایت

به طور پیش‌فرض اَبر دِراک به عنوان یک عمل می‌کند. به همین ترتیب، تمام اتصالات به سرور اصلی (مبدا) شما از آدرس های IP اَبر دِراک می‌آیند. در این حالت می‌بایست به دو نکته زیر توجه کنید:

  1. اگر برنامه شما به عنوان بخشی از منطق خود از IP اصلی بازدیدکننده وب‌سایت استفاده می‌کند، در حال حاضر از یک آدرس IP اَبر دِراک استفاده خواهد کرد. اگر از access log خود استفاده می کنید، آن‌ها اکنون یک آدرس IP اَبر دِراک را  به عنوان $remote_addr به شما نشان خواهند داد.
  2. با این‌حال اَبر دِراک طبق استاندارد می‌تواند IPهای اصلی بازدیدکنندگان را به شما بازگرداند. این اطلاعات در هدر(Header)های X-Real-IP به شما تحویل داده می‌شوند.

Nginx

برای اعمال این تنظیمات لازم است تا ماژول http_realip_module را برای Nginx خود نصب کنید. اگر درحال نصب Nginx از پکیج‌های اصلی مربوط به Distributionهای مختلف لینوکس مثل Ubuntu و Fedora و CentOS و … هستید، این ماژول به صورت پیش‌فرض بر روی Nginx نصب شده است. در غیر این صورت، درهنگام نصب، مطمئن شوید که پارامتر –with-http_realip_module در دستور /configure وجود دارد.

با دستور زیر می‌توانید چک کنید که این ماژول بر روی سیستم شما نصب شده یا خیر؟

# nginx -V | grep http_realip_module

با دستورات زیر می‌توانید مطمئن شوید که Real IP را تنها از ما دریافت می‌کنید:

set_real_ip_from 5.145.115.0/24;
set_real_ip_from 5.145.112.0/24;
set_real_ip_from 185.64.176.50/32;
set_real_ip_from 178.62.222.216/29;
set_real_ip_from 174.138.1.32/29;
set_real_ip_from 104.248.161.192/29;
set_real_ip_from 165.22.90.0/28;
set_real_ip_from 185.64.177.64/26;

real_ip_header X-Real-IP;

برای دسترسی به لیست به‌روز شده IPها در هرلحظه می‌توانید از لینک زیر استفاده کنید:
https://api.derak.cloud/public/ipv4
همچنین می‌توانید لیست بازه‌های IP اَبر دِراک را از اینجا ببینید.

تغییر فرمت log

تنظیمات log_format در فایل nginx.conf در تنظیمات مربوط به HTTP وجود دارد. برای اصلاح log_format می‌بایست فیلد X-Real-IP را جایگزین remote_address اصلی کنید. پس از این تغییرات، log_format به صورت زیر خواهد بود:

log_format main '$ http_x_forwarded_for - $ remote_user [$ time_local] $ request' '' $ status $ body_bytes_sent "$ http_referer" "'" $ http_user_agent "'؛

پس از انجام عملیات قبلی،دستور nginx -s را دوباره اجرا کنید تا Nginx مجددا راه‌اندازی و پیکربندی انجام شود. هنگامی که پیکربندی موثر است، پس از انجام تغییرات آدرس IP بازدیدکنندگان در فیلد X-Real-IP ثبت خواهد گردید.

IIS 7

در ویندوزسرور شما می توانید آدرس IP واقعی بازدیدکنندگان وب‌سایت را از طریق ماژول F5XForwardedFor دریافت کنید.

  1. دو فایل F5XFFHttpModule.dll و F5XFFHttpModule.ini را از دایرکتوری x86\Release یا x64\Release (بر اساس نسخه سیستم عامل سرور) به یک پوشه مشخص شده به عنوان C:\x_forwarded_for\x86 و C:\x_forwarded_for\x64  کپی کنید و اطمینان حاصل کنید که پروسس IIS (یا IIS Process) دارای مجوز خواندن از این پوشه باشد. در IIS Manager دوبار کلیک کنید تا ماژول باز شود.
  2. روی Configure Local Module کلیک کنید.
  3. در کادر Configure Local Module بر روی Register کلیک کنید و فایل DLL دانلود شده را ثبت کنید.
  4. ماژول x_forwarded_for_x86 را ثبت کنید:
    • نام: x_forwarded_for_x86
    • مسیر: C:\x_forwarded_for\x86\F5XFFHttpModule.dll
  5. ماژول x_forwarded_for_x64 را ثبت کنید:
    • نام:  x_forwarded_for_x64
    • مسیر:  C:\x_forwarded_for\x64\F5XFFHttpModule.dll
  6. پس از ثبت، ماژول‌های ثبت شده جدید را انتخاب کنید (x_forwarded_for_x86) و (x_forwarded_for_x64) را انتخاب کنید و برای فعال‌سازی آنها روی OK کلیک کنید.
  7. DLL ثبت‌شده را در محدودیت‌های API و CGI اضافه کنید و تنظیمات را از Restricted به Allowed تغییر دهید.
  8. سرور  IIS را مجددا راه‌اندازی کرده و صبر کنید تا پیکربندی اعمال گردد.

Apache

ویندوز:

در نسخه‌های ۲.۴ آپاچی یا بالاتر فایل remoteip_module  (mod_remoteip.so) در پکیج نصب موجود است. شما می‌توانید با استفاده از این فایل به IP بازدیدکنندگان دسترسی داشته‌ باشید.

  • در پوشه پیکربندی آپاچی در مسیر conf/extra/ یک فایل به نام httpd-remoteip.conf  ایجاد کنید
  • در فایل ایجادشده کدهای زیر را وارد کنید
load mod_remoteip.so
LoadModule remoteip_module modules/mod_remoteip.so
# congifure RemoteIPHeader
RemoteIPHeader X-Real-IP
# configure WAF back-to-source IP addresses
RemoteIPInternalProxy 5.145.115.0/24 5.145.112.0/24 185.64.176.50/32 178.62.222.216/29 174.138.1.32/29 104.248.161.192/29 165.22.90.0/28 185.64.177.64/26 

پس از نصب Nginx ، فایل default.conf را باز کنید و IPهای اَبر دِراک را به قسمت location/{} اضافه کنید:

Include conf/extra/httpd-remoteip.conf

در httpd.conf  فرمت log را تغییر دهید:

LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %>s %b" common

آپاچی را مجددا راه‌اندازی نمایید تا تغییرات اعمال گردند.

لینوکس:

با نصب ماژول mod-rpaf  شما می‌توانید به لیست IPهای بازدیدکنندگان واقعی سایت خود در آپاچی تحت سیستم‌عامل لینوکس دسترسی داشته باشید.

برای نصب ماژول mod-rpaf دستور زیر را اجرا نمایید.

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
/alidata/server/httpd/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

فایل تنظیمات آپاچی را از مسیر /alldata/server/httpd/conf/httpd.conf باز کرده و موارد زیر را به انتهای آن اضافه کنید:

LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips ip addresses
RPAFheader X-Real-IP 

دستور زیر را جهت راه‌اندازی مجدد آپاچی اجرا نمایید:

/alidata/server/httpd/bin/apachectl restart

نمونه تنظیمات فایل mod-rpaf

LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 5.145.115.0/24 5.145.112.0/24 185.64.176.50/32 178.62.222.216/29 174.138.1.32/29 104.248.161.192/29 165.22.90.0/28 185.64.177.64/26
RPAFheader X-Real-IP

Tomcat

شما می‌توانید ویژگی  X-Real-IP را برای وب‌سرورهای Tomcat به شیوه زیر فعال نمایید.

فایل tomcat/conf/server.xml را باز کنید و تابع AccessLogValve را مطابق زیر تغییر دهید:

Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt
pattern="%{X-Real-IP}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false"/> " 

در همه موارد بالا می‌توانید Derak-Real-IP را جایگزین X-Real-IP کنید.