OffshoreVps
امنیت19 اکتبر 20268 دقیقه مطالعهنوشته‌ی تیم OffshoreVps

پنهان کردن IP سرور مبدأ: پراکسی‌ها، CDNها و نشت‌ها

CDN فقط وقتی سرور شما را پنهان می‌کند که هیچ چیز دیگری آن را لو ندهد. بیاموزید IP مبدأ از طریق تاریخچه‌ی DNS، ایمیل و گواهی‌ها چگونه نشت می‌کند و مبدأ را چگونه قفل کنید.

قرار دادن یک CDN یا reverse proxy جلوی سایت، ترافیک را جذب می‌کند و آدرس سرور را پنهان می‌کند، اما فقط تا زمانی که IP واقعی ناشناخته بماند. مهاجمان به‌ندرت CDN را می‌شکنند. آن‌ها مستقیماً دنبال origin می‌گردند. این راهنما فهرست می‌کند origin از کجا لو می‌رود و چگونه می‌توان آن را وادار کرد همه‌چیز جز پروکسی شما را رد کند.

تصویر سپر و قفل با برچسب‌های «پراکسی در جلو»، «فهرست مجاز مبدأ»، «بدون نشت»، نمایانگر مخفی نگه‌داشتن IP سرور مبدأ
ایده‌های کلیدی این نوشته.

origin چگونه پیدا می‌شود

  • تاریخچه DNS: سرویس‌ها رکوردهای قدیمی را نگه می‌دارند، بنابراین IPی که پیش از افزودن CDN استفاده می‌کردید هنوز ثبت شده است.
  • زیردامنه‌ها: رکوردهای mail.، ftp. یا dev. که مستقیم به سرور اشاره می‌کنند.
  • هدرهای ایمیل: ایمیل خروجی از همان میزبان، IP آن را در هدرها فاش می‌کند.
  • شفافیت گواهی و اسکن‌های اینترنتی: اسکنرها یک گواهی را با هر IPای که آن را ارائه می‌دهد تطبیق می‌دهند.
  • رفتار برنامه: وب‌هوک‌ها، دریافت‌کننده‌های تصویر و قابلیت‌های «این URL را بررسی کن» از origin به بیرون متصل می‌شوند.

گام ۱: از صفر و تمیز شروع کنید

اگر سرور قبلاً در معرض دید قرار گرفته، امن‌ترین راه‌حل یک IP جدید یا یک سرور جدید و مهاجرت است. پنهان کردن آدرسی که از قبل عمومی شده جواب نمی‌دهد. جابه‌جایی را با راهنمای مهاجرت بدون قطعی برنامه‌ریزی کنید.

گام‌های این راهنما به ترتیب: ۱. مبدأها چگونه پیدا می‌شوند؛ ۲. از صفر شروع کنید؛ ۳. فقط ترافیک پراکسی را بپذیرید؛ ۴. هر چیزی را که می‌تواند نشت کند جدا کنید؛ ۵. مثل یک مهاجم آزمایش کنید
گام‌های این راهنما به ترتیب.

گام ۲: فقط ترافیک پروکسی را بپذیرید

پورت‌های وب را فقط از بازه‌های منتشرشده پروکسی باز کنید و هیچ چیز دیگری را نه. با UFW این کار به شکل زیر است، با استفاده از بازه‌هایی که ارائه‌دهنده شما منتشر می‌کند.

sudo ufw default deny incoming
sudo ufw allow OpenSSH
for ip in $(cat proxy-ranges.txt); do sudo ufw allow from "$ip" to any port 443 proto tcp; done
sudo ufw enable

چون بازه‌ها تغییر می‌کنند، فهرست را به‌صورت زمان‌بندی‌شده به‌روز کنید. برای اطمینان بیشتر از authenticated origin pulls (mutual TLS) استفاده کنید تا Nginx هر کلاینتی را که گواهی پروکسی را ندارد رد کند.

گام ۳: هر چیزی را که می‌تواند نشت کند جدا کنید

  • ایمیل را از طریق میزبان یا رله‌ای دیگر ارسال کنید، هرگز از origin.
  • زیردامنه‌های غیر وب را از IP مربوط به origin دور نگه دارید.
  • درخواست‌های خروجی برنامه را از طریق یک پروکسی یا یک worker جداگانه انجام دهید.
  • یک server block پیش‌فرض Nginx تعریف کنید که برای Host ناشناخته پاسخ خالی برگرداند، تا اسکن IP خام چیزی نشان ندهد.
server {
    listen 443 ssl default_server;
    ssl_reject_handshake on;
}

گام ۴: مثل یک مهاجم تست کنید

دامنه خود را در ابزارهای تاریخچه DNS جست‌وجو کنید، بازه IP خودتان را برای یافتن گواهی اسکن کنید و هدرهای ایمیل یک پیام آزمایشی را بررسی کنید. اگر هر یک از آن‌ها origin را نشان داد، IP را عوض کنید و دوباره تکرار کنید.

به یاد داشته باشید این کار چه می‌کند و چه نمی‌کند: از در دسترس بودن و حریم خصوصی آدرس محافظت می‌کند. اینکه صاحب حساب کیست را پنهان نمی‌کند. برای آن، گمنامی واقعی هاستینگ گمنام را بخوانید و برای حملاتی که از لایه شبکه عبور می‌کنند دفاع‌های لایه 7 را ببینید.