در این درس، ما دستگاه تخصصی دیگری را بررسی میکنیم که اغلب تحت مسئولیت تیم شبکه یا امنیت شبکه در سازمان قرار میگیرد. این دستگاه پروکسی (Proxy) یا سرور پروکسی (Proxy Server) نامیده میشود. بیایید ببینیم این دستگاه چه کاری انجام میدهد و چرا در زیرساخت به آن نیاز داریم.
لینک آموزش قسمت دهم : https://vrgl.ir/wC2YE
دو دلیل اصلی برای استفاده از پروکسی وجود دارد. بیایید هر کدام را با یک مثال ساده و سطح بالا بررسی کنیم تا مفهوم آن روشن شود.
بیایید از یک مثال ساده استفاده کنیم تا ببینیم چرا به سرور پروکسی نیاز است. تصور کنید مدیریت زیرساخت یک شرکت را بر عهده دارید. وظیفه شما محافظت از دادههای حساس در برابر سرقت است.
محافظت در برابر تهدیدات خارجی ساده است؛ شما میتوانید از فایروالها برای مسدود کردن اتصالات ورودی از منابع ناشناخته یا غیرمجاز استفاده کنید. اما در مورد تهدیدات داخلی چطور؟ چگونه میتوانید جلوی کارمندی را بگیرید که به صورت مخفیانه در حال آپلود دادههای حساس در یک سرور خارجی است؟
برای جلوگیری از این اتفاق، به راهی برای بازرسی ترافیک کاربران و شناسایی فعالیتهای مشکوک نیاز دارید. مشکل اینجاست که کاربران از طریق اتصالات رمزنگاری شده TLS به سرورهای خارجی متصل میشوند. حتی اگر ترافیک آنها را در هر نقطه از مسیر ضبط کنید، نمیتوانید ببینید که چه کاری انجام میدهند. دادهها رمزنگاری شدهاند، بنابراین همانطور که در نمودار زیر نشان داده شده است، نمیتوانید محتوای واقعی را مشاهده کنید.

حتی اگر بستهها (Packets) را ضبط کنید، فقط آدرسهای IP مبدأ و مقصد، پورتها و پیامهای دستدهی (Handshake) مربوط به TLS را خواهید دید. با این حال، محتوای اپلیکیشن (مانند محتوای وبسایت و دادهها) را نخواهید دید زیرا رمزنگاری TLS آن را پنهان کرده است.
تنها راه برای دیدن محتوای رمزگشایی شده این است که دستگاهی داشته باشید که اتصال TLS را در میانه مسیر قطع (Terminate) کند. شما به یک «واسطه» (Middleman) نیاز دارید. یکی از وظایف اصلی سرورهای پروکسی این است که ترافیک TLS را رمزگشایی کرده، آن را بازرسی کنند و سپس برای ارسال به سرور خارجی، مجدداً آن را رمزنگاری کنند (مطابق شکل زیر). سرور پروکسی به عنوان واسطه بین کلاینتها و سرورها عمل میکند.

پروکسیها به سازمانها اجازه میدهند تا سیاستهای امنیتی شرکتی را روی اتصالات رمزنگاری شده TLS اعمال کنند. آنها میتوانند دستههای خاصی از وبسایتها را مسدود کرده و فعالیتهای کاربر را برای ممیزی (Audit) ثبت (Log) کنند.
حریم خصوصی و ناشناس بودن نیز از دلایل استفاده از پروکسیها هستند. یک پروکسی فوروارد (Forward Proxy) میتواند آدرس IP کلاینت را از سرورهای خارجی مخفی کند.
بیایید از مثال نشان داده شده در نمودار زیر استفاده کنیم. یک کلاینت در ایالات متحده نمیتواند به سرویسی که فقط مخصوص اتحادیه اروپا (EU-only) است متصل شود، زیرا این سرویس فقط در اتحادیه اروپا در دسترس است. ارائهدهنده سرویس، آدرسهای IP کلاینت را بررسی کرده و محدودیتهای جغرافیایی (Geo-location) را برای آدرسهای IP که خارج از اتحادیه اروپا ثبت شدهاند، اعمال میکند.

با این حال، کلاینت در این مثال از طریق پروکسی که در داخل اتحادیه اروپا قرار دارد، به سرویس مذکور متصل میشود. پروکسی اتصال TLS کلاینت را خاتمه داده و اتصال دیگری با سرویس برقرار میکند. در این حالت، سرور اتحادیه اروپا اتصال ورودی را به گونهای میبیند که گویی از اروپا منشأ گرفته است و اجازه دسترسی میدهد.
در نهایت، پروکسیها به بهبود عملکرد نیز کمک میکنند. یک پروکسی میتواند پاسخها را کش (Cache) کند. اگر کاربران زیادی یک محتوای یکسان را درخواست کنند، پروکسی میتواند آن را از حافظه کش خود ارائه دهد. این کار مصرف پهنای باند را کاهش داده و سرعت دسترسی کاربر را افزایش میدهد. کشینگ بهویژه برای فایلهای استاتیک بزرگ و صفحات وب محبوب مفید است.
مهمترین ویژگی پروکسی این است که همیشه بین کلاینت و سرور قرار میگیرد و درخواستها را بازپخش (Relay) میکند. جریان اصلی شامل چندین مرحله است که در نمودار زیر نشان داده شده است.

۱. کلاینت به جای ارسال مستقیم درخواست به مقصد، آن را به پروکسی میفرستد. این اتفاق میتواند به این دلیل رخ دهد که کلاینت با تنظیمات پروکسی پیکربندی شده است، یا به این دلیل که شبکه ترافیک را به سمت پروکسی هدایت میکند (Transparent Proxy). ۲. پروکسی درخواست را بررسی میکند. ممکن است با سیاستهای امنیتی، حافظه کش یا سرویسهای احراز هویت مشورت کند. ۳. اگر محتوای درخواستی در حافظه کش باشد و معتبر باشد، پروکسی بلافاصله آن را برمیگرداند. در غیر این صورت، پروکسی اتصالی به سرور مقصد برقرار کرده و درخواست را فوروارد میکند. ۴. وقتی سرور پاسخ میدهد، پروکسی میتواند پاسخ را بازرسی یا اصلاح کند. سپس پروکسی پاسخ نهایی را به کلاینت برمیگرداند.
علاوه بر این، پروکسیها را میتوان بر اساس نقش آنها در زیرساخت به انواع مختلفی طبقهبندی کرد:
پروکسی فوروارد (Forward Proxy): نماینده یک یا چند کلاینت در دنیای خارج است. درخواستهای خروجی را مدیریت کرده و میتواند سیاستهای شرکتی را اعمال کند.
پروکسی معکوس (Reverse Proxy): نماینده یک یا چند سرور برای کلاینتهای خارجی است. درخواستهای ورودی را مدیریت کرده و میتواند توزیع بار (Load Balancing)، خاتمه TLS و امنیت برنامههای تحت وب را فراهم کند.
همچنین، پروکسیها بر اساس اینکه کلاینتها از وجود آنها مطلع هستند یا خیر، به دو دسته تقسیم میشوند:
حالت صریح (Explicit mode): کلاینتها صراحتاً برای استفاده از پروکسی پیکربندی شدهاند. کلاینتها میدانند که پروکسی در مسیر شبکه وجود دارد. تمامی سیستمعاملها و مرورگرهای مدرن اجازه پیکربندی IP پروکسی را میدهند.
حالت شفاف (Transparent mode): شبکه بدون نیاز به پیکربندی در سمت کلاینت، ترافیک را به سمت پروکسی هدایت میکند. پروکسیهای شفاف راحت هستند اما میتوانند بازرسی TLS و احراز هویت کلاینت را پیچیده کنند.
بیایید توجه ویژهای به نوعی از پروکسی داشته باشیم که درخواستهای ورودی را مدیریت میکند: پروکسی معکوس. این سروری است که در جلوی وبسرورها قرار میگیرد و درخواستهای کلاینت را به آنها فوروارد میکند (مطابق شکل زیر).

این پروکسی هویت سرورهای پسزمینه (Backend) را از کلاینتها مخفی میکند و میتواند ترافیک را بین چندین سرور توزیع کند. پروکسیهای معکوس اغلب برای توزیع بار، امنیت و کشینگ استفاده میشوند.
در شبکههای مدرن، پروکسیها در چندین مکان ظاهر میشوند. مکان دقیق بستگی به نوع پروکسی و اهداف طراحی دارد.
پروکسی فوروارد برای دسترسی به وب: معمولاً در لبه شبکه (Network Edge) قرار میگیرد؛ یعنی بین LAN داخلی و اینترنت. ترافیک کاربران سازمانی قبل از رسیدن به اینترنت به پروکسی میرود. این مکان امکان کنترل دسترسیهای خروجی را فراهم میکند. همچنین به پروکسی اجازه میدهد محتوا را برای صرفهجویی در پهنای باند اینترنت کش کند. در بسیاری از طراحیها، پروکسی فوروارد در همان ناحیه امنیتی فایروال اینترنت قرار دارد.
پروکسی معکوس: در محیط پیرامونی (Perimeter) رو به اینترنت قرار میگیرد و اغلب در DMZ زندگی میکند. پروکسی معکوس درخواستهای خارجی را میپذیرد و آنها را به سرورهای اپلیکیشن داخلی فوروارد میکند. این چیدمان، سرورها را از قرارگیری مستقیم در معرض اینترنت محافظت میکند. همچنین اجازه تخلیه بار TLS (TLS offload)، عملکردهای فایروال اپلیکیشن تحت وب (WAF) و توزیع بار را میدهد.
امروزه اکثر قابلیتهای پروکسی معکوس به صورت SaaS (نرمافزار به عنوان سرویس) مصرف میشوند. برای مثال، Cloudflare پرکاربردترین پروکسی معکوس جهانی است که در ابر قرار دارد (مطابق شکل زیر). این سرویس بین یک وبسایت و بازدیدکنندگان آن قرار میگیرد و به عنوان یک سپر و تقویتکننده عملکرد عمل میکند.

یک پروکسی معکوس جهانی به حل مشکلاتی کمک میکند که تیمهای شبکه و امنیت اغلب به تنهایی با آنها دست و پنجه نرم میکنند. در دنیای هوش مصنوعی امروز، بیشتر ترافیک اینترنت از سمت باتها و عوامل خودکار هوش مصنوعی میآید که متوقف کردن حملات DDoS و سیل باتها را سختتر از همیشه میکند. با استفاده از کلودفلر (یا پروکسی ابری دیگر)، سازمانها میتوانند وظایف کلیدی امنیتی و عملکردی را به ارائهدهندهای بسپارند که در آنها تخصص دارد، از جمله:
دفاع در برابر حملاتی مانند DDoS.
افزایش سرعت وبسایتها با کشینگ و شبکه توزیع محتوای جهانی (CDN).
ایمنسازی ترافیک با فایروالها، SSL و محافظت در برابر باتها.
افزایش در دسترس بودن از طریق مسیریابی هوشمند ترافیک.
اگر وبسرورهای خود را مستقیماً در معرض اینترنت قرار دهید، چگونه از آنها محافظت میکنید؟ باتها و عوامل سرکش هوش مصنوعی آنها را از بین خواهند برد.
در نهایت، بیایید ابهامی را برطرف کنیم که برخی دانشجویان ممکن است داشته باشند. هنگام یادگیری در مورد لود بالانسرها و پروکسیها، آنها اغلب در مورد تفاوت بین یک پروکسی معکوس و یک لود بالانسر دچار سردرگمی میشوند. از نظر عملکردی، به نظر میرسد هر دو دستگاه یک کار را انجام میدهند: هر دو به عنوان واسطه عمل میکنند، TLS را خاتمه میدهند و ترافیک را بین سرورها متعادل میکنند. این در واقع درست است؛ عملکردهای آنها همپوشانی دارند. اما تفاوتهای زیادی نیز وجود دارد و هر کدام در حوزه خاص خود متخصص هستند:
لود بالانسر در توزیع ترافیک بین سرورهای پسزمینه تخصص دارد.
پروکسی معکوس در بازرسی و محافظت از سرورهای پسزمینه در برابر کلاینتهای مخرب تخصص دارد.
آنها را مانند یک روتر و یک فایروال در نظر بگیرید. هم روتر و هم فایروال میتوانند مسیریابی اولیه (Static, OSPF, BGP و غیره)، کنترل دسترسی پایه (ACLs) و NAT را انجام دهند. اما:
یک روتر قابلیتهای تخصصی فایروال مانند بازرسی لایه ۷، کلاسترینگ حالتمند (Stateful) و غیره را ندارد.
یک فایروال قابلیتهای تخصصی مسیریابی مانند BGP در داخل VRFها و فیلتر کردن پیشوندها با Route-map را ندارد.
پروکسی یک واسطه بین کلاینتها و سرورها است که درخواستها را بازپخش میکند.
پروکسیها امنیت را با رمزگشایی و بازرسی ترافیک TLS بهبود میبخشند.
آنها با مخفی کردن IP کلاینت و دور زدن محدودیتهای جغرافیایی، حریم خصوصی فراهم میکنند.
پروکسیها با استفاده از کشینگ، عملکرد را افزایش داده و مصرف پهنای باند را کاهش میدهند.
پروکسیهای فوروارد دسترسیهای خروجی را کنترل میکنند.
پروکسیهای معکوس از سرورهای ورودی محافظت میکنند.
پروکسیهای معکوس مبتنی بر ابر (مانند کلودفلر) امنیت و سرعت جهانی را اضافه میکنند.
پروکسیهای معکوس و لود بالانسرها همپوشانی دارند اما نقشهای تخصصی متفاوتی ایفا میکنند.
**حمید رضا اسفندیاری _ کارشناس شبکه و فناوری اطلاعات**