سلام به همه تون ! خواستم اشاره کنم که این مقاله برای بالا بردن سطح علمی شبکه تون نوشته شده و نه برای آموزش راهکارهای شکوندن فیلتر... من تا جاییکه تونستم سعی کردم از بعد فنی به مسئله پروکسی سرورها بپردازم ولی هنوزم بعضیا سوالای "داداش ! فیلتر فیس بوک رو چطور میشه شکست ؟" میپرسن ! بنده اصلا استفاده از فیلتر شکن ها رو تائید نمیکنم و راهکارهای استفاده ازش رو هم رواج نخواهم داد... این مقاله برای 4 سال پیشه و اینترنت در این چند سال خوب داره بنیان خانواده هامون رو زیر و رو میکنه... به همه تون هم پیشنهاد میکنم قبل از بالا آوردن اون فیلتر شکن، به تاثیری که روی روحتون و بالطبعش خودتون و در نهایت روی رفتارتون با خانواده و زن و بچه هاتون خواهد گذاشت کمی فکر کنید... شاید اون چیزی که با فیلتر شکن به دست میارین، ارزش از دست دادن اون چیزی که با این همه زحمت به بار آوردین رو نداشته باشه... اللهم عجل لولیک الفرج...
Proxy Server چیه ؟ چیکار میکنه ؟ اصلا چرا لازمش داریم ؟ چه وقتایی به کارمون میاد ؟
جواب سوالای بالا همینجاست که پاسخ داده میشه ! پس پشت صندلیتون رو سفت کنین و آماده ی خوندن یه متن خفن طولانی و خسته کننده ی دیگه از من بشین!
خب ! کار Proxy Server چیه ؟ اصولا از شیر مرغ تا جون آدمیزاد رو میتونه برات فراهم کنه ! میتونه یه واسط باشه برای ایجاد دسترسی و Connectivity، برای ارتباط تو و یه عالمه چیز دیگه ! مثل سرورها، کلاینتها، وب سایتها و افراد... میتونه شبا برات مسواک بزنه، بچه بخوابونه، گوش کوبیده درست کنه یا اینکه آشغالا رو بذاره دم در !
کار دیگه ایی هم داره ؟ چرا که نه ! میتونه برات اینترنت رو فیلتر کنه ! میتونه دسترسیت رو کنترل کنه و بعدا به بابایی جونت نشون بده که توی چه سایتایی رفتی ! میتونه اطلاعاتی رو که دنبالشون هستی رو یه جایی ذخیره کنه و بعدش به دیگران بفروشه ! به همین سادگی و به همین خوشمزگی !
عکس 1 : نماد شماتیکی از ساز و کار یک Proxy Server
بعد از توضیح در سطح دبستان بالا که عقل من حسابی میتونست درکش کنه، میرسیم به توضیحهای درست و حسابی !
Proxy Server یه واسط هستش، بین سیستم شما و هر سیستم دیگه. این سیستم در اغلب اوقات یک سرور محسوب میشه. ولی گذشته از این خزعبلات، علت اینکه ما برای ارتباط ممکنه نیاز به یک Proxy Server پیدا کنیم چیه آخه ؟!
• برخی اوقات سرویسی که ازش استفاده میکنین (مثلا eMule رو در نظر بگیرین) در حد خودش و حتی با دسترسی به اینترنت هم نمیتونه کارش رو پیش ببره و برای اینکه بتونه با کاربران دیگر این سرویس در ارتباط باشه، به سروری متصل میشه که این اطلاعات رو داره و سپس این سرور با عمل کردن به عنوان یک میانه (Proxy) شما رو به دیگر استفاده کنندگان این سرویس متصل میکنه.
• در برخی اوقات دیگر، نرم افزاری که به کمک SOCKS برای کار در محیط شبکه ی LAN نوشتین، باز هم نیاز به یک واسطه برای دسترسی به دیگر کلاینتها و سرورهای اون محیط داره، و بدین ترتیب از یک Proxy Server به عنوان این واسطه استفاده میکنه تا بتونه به دیگر سیستمها در اون مجموعه متصل بشه.
• بعضی وقتا ISP یی که به شما اینترنت میده جونش به لبش میاد وقتی میبینه که در طول 1 ساعت 500 نفر زرتی رفتن توی Wikipedia و دنبال یک مقاله ی واحد گشتن. در اینحالت نه تنها پهنای باند تکراری اشغال میشه، بلکه توان اضافی و تکراری از سرورها و دستگاههای ارتباط دهنده ی این ISP هم گرفته میشه. چاره چیه ؟ این ISP میتونه بیاد و با نصب یک Proxy Server که وظیفه ش ارتباط دادن درخواست کلاینتها با محتوای یکبار Cache شده و ذخیره شده در Databaseش هستش، نیاز وصل شدن به اینترنت برای دریافت درخواستهای تکراری رو از بین ببره و در مصرف پهنای باند هم صرفه جویی کنه ! میبینیم که در این سناریو هم Proxy Server ما ارتباط دهنده ی ما با اطلاعات درخواستیمون به شیوه ایی که براش تعریف کردن هستش !
• دیگه چه مصارفی برای Web Proxy میشه پیدا کرد ؟ الان براتون میگم : دسترسی به اینترنت ! شما در شرکتی کار میکنین که برای دسترسی به اینترنت شما رو مجبور به وصل کردن Web Browser تون به Proxy Server کرده...
• یه کار دیگه ی Proxy Server میتونه فیلترینگ باشه ! درسته ! فیلترینگ اینترنت در کشورمون هم به خاطر حضور این عزیزان (Proxy Server ها !) هستش ! همونطوریکه قبلا هم گفتم، باز هم کار PS در اینجا ارتباط دادن هستش ولی ایندفعه یه کمی فضولی هم میکنه و قبل از دادن ارتباط، یه کمی ارتباطه رو چک میکنه و اگه درخواسته جیز باشه، اونوقته که با یه اردنگی صفحه ی "دسترسی به سایت فوق مقدور نمیباشد ! اگر دلتون خوشه در قسمت زیر آدرسش رو وارد کنین تا چکش کنیم !" رو بهتون نشون میده !
• یه کار زشت دیگه ی Proxy Server ها (از نظر سانسورکنندگان محترم و صد البته بنده!) پیچوندن فیلترینگ هستش !
• یه کار دیگه ی Proxy Server ها هم اینه که بشینن جلوی ورودی یک شبکه و هر کی که میخواد بیاد توش رو راهنمایی و کنترل کنه (Reverse Proxy Server) که بعدا در موردش حرفا براتون دارم درباره ش !
خلاصه ! ننه جون ! حرف و حدیث برای Proxy Server خیلی زیاده و در توان اینجانب نیست که همه شون رو بگم ولی از بین اونها مهمترینها رو میخوام انتخاب کنم و براتون توضیح بدم...پس گوش کن ننه :
همونطوریکه تا الان متوجه شدیم، PS یک واسطه در بین ارتباطات ما محسوب میشه که میتونه ارتباطات رو بگیره، بفرسته، جواب بده، کنترل کنه و یا حتی منع. غالبا Proxy Server ها رو در سطح اینترنت و یا خروجیهای شبکه پیاده سازی میکنن و میشه گفت که Proxy Server های داخلی اغلب برای ارتباطات مبتنی بر SOCKS (پروتکلی که برنامه نویسی سوکتی از اون استفاده میکنه و مبتنی بر IP و Port برای ایجاد ارتباطات درون یک شبکه هست و خیلی هم توپ و معروفه هر چند که پروتکلهای جدیدتر و بهتری هم از اون هستن) و ارتباط دادن سیستمهای Client-Server استفاده میشه.
من بیشتر تمرکزم رو در این مقاله بر روی Proxy Server هایی میگذارم که در سطح اینترنت پیاده سازی و استفاده میشن.
Proxy Server ها میتونن یک کامپیوتر باشن که نرم افزار خاصی رو برای ایفای نقش PS بر روی خودشون دارن. مثال بارز این نوع PS میتونه سروری باشه که روش ISA Server نصب شده و این سرور طبق تنظیماتی که بر روی ISA ش اعمال کردیم میتونه اعمالی نظیر دادن دسترسی به اینترنت، بلوکه کردن دسترسی اینترنت، دادن محدودیت در دسترسی و خیلی چیزهای دیگر رو انجام بده که در انتهای این مقاله بهشون اشاره میکنم، پس گیر سه پیچ ندین و سر جاتون بشینین و بخونین !
از طرفی همین PS میتونه یک دستگاه Interconnect باشه. مثل Firewall های خاصی که میتونن اعمال Proxy رو انجام بدن و یا حتی Proxy Server های سخت افزاری پیشرفته و خدا تومنی که شرکتهایی همچون Cisco و یا Siemens درست میکنن و به شرکتها (و صد البته کشورها !) میفروشن.
این دستگاهها بسیار سریعتر و قدرتمند تر از Proxy Server هایی هستن که بر روی کامپیوترهای خانگی (حتی کامپیوترهای بسیار قوی خانگی) نصب میشن. به خاطر نبود سیستم عامل لایه هفتی، این دستگاهها میتونن هزاران درخواست رو در مدت کوتاهی Inspect و Process کرده و سپس Policy های داخلی شون رو بر روی اونها اعمال کنند. به عنوان مثال اگر اطلاعات من در حد شایعه نباشه، کشور ما از Proxy Server ها و Firewall های سخت افزاری در خطوط اینترنتی خروجی از کشور برای کنترل ترافیک استفاده میکنه و قابل درک هستش که نرم افزاری مثل ISA Server حتی با وجود قدرت بسیار بالاش نخواهد توانست این حجم عظیم اطلاعات رو Process کنه.
دسته ی دیگری از Proxy Server ها اونهایی هستند که به عنوان یک سرویس وب در اینترنت در دسترس کاربران قرار میگیرند. این سرویسها میتونن بسیار متفاوت عمل کنند. به عنوان مثال سرویسی که eMule ازش استفاده میکنه برای ارتباط دادن کلاینتهای این نرم افزار P2P هستش، Proxy Server نرم افزار Skype هم تقریبا کاری اینچنین میکنه با این تفاوت که دارای هوشمندی بسیار بالایی در ارتباط دادن نرم افزارهاش (حتی اونایی که پشت Firewall هستند) با یکدیگر داره که این هوشمندی رو در نرم افزارهای P2P دیگه کمتر دیدم و اگه وقت کردم شاید براش مقاله ایی چیزی نوشتم.
نرم افزار Team Viewer از یک Proxy Server به عنوان راهی برای ارتباط با کلاینتهای خودش استفاده میکنه بطوریکه دو کلاینت با آدرسهای IP متفاوت (که متغیر هم هستند) به این سرور همیشه در دسترس وصل میشن و این سرور با اجازه دادن به اینکه دو کلاینت بتونن اطلاعاتشون رو از طریق اون به هم ارسال کنند، عملا این دو رو به هم متصل میکنه.
یه نوع دیگه ی Proxy Server ها که کاربران ایرانی باهاش خوب آشنا هستند، Anonymizing proxy server ها هستند. اینها همون سایتای Proxy محسوب میشن که شما بهشون وصل میشین، در قسمت مخصوصشون آدرس درخواستی تون رو وارد میکنین و سپس میتونین سایت فیلتر شده تون رو مشاهده کنین انگاری اصلا این سایت فیلتر نشده !
توضیحات بالا رو اگر خوب خونده باشین، تا الان باید ایده ی اولیه ایی در مورد اینکه Proxy Server ها عملا چی هستند دستتون اومده باشه که خیلی خوبه. حالا میخوام یه کمی در برخی از سرویسهای ارائه شده با Proxy Server ها ریز بشم تا اگر خدا خواست بتونم شما رو متوجه چگونگی ساز و کار برخی از این PS ها بکنم.
ساز و کار Web Proxy Server ها
مهمترین نوع پراکسی ها Web Proxy ها هستند که کارشون دادن اینترنت به مشتریان هستش. یادمه چند سال پیش که تازگیا سیستم فیلترینگ با قدرت در عرصه ی کشور ظاهر شده بود (!) یکی از راههای دور زدن فیلترینگ استفاده از Web Proxy ها بود بدینصورت که شما یک آدرس IP بهمراه یک Port (که غالبا 8080 بود و توضیح میدم چرا) دریافت میکردین، بعدش میرفتین توی قسمت تنظیمات Browserتون و این آدرس رو در قسمت Proxy Server وارد میکردین و بعدش... یه دفعه میدیدین که فیلتره دود میشد میرفت هوا !
ولی واقعا در این روند چه اتفاقی میفته ؟ در اینحالت شما یک آدرس IP بهمراه یک Port دارین. آدرس مربوطه به سروری در داخل دنیای اینترنت اشاره داره که آماده ی شنیدن درخواستهای ارسالی بهش و گرفتن جواب اون درخواستها هستش و پورت مربوطه (معمولا 8080) پورتی هستش که به طور بین المللی برای دسترسی به Proxy Server ها در نظر گرفته شده و این دستگاههای بیگناه بر روی این پورت اقدام به گوش دادن به درخواستها میکنند.
1. شما درخواستتون رو به کمک Web Browserتون ارسال میکنین.
2. Browser درخواست رو به Proxy Serverیی که براش ذکر کردین میفرسته.
3. در بین راه درخواستتون به دست Firewall محترمتون میرسه که چک میکنه و میبینه که آدرس Proxy Server فوق (که آدرس Destination هست) هنوز درون لیست سیاهش قرار نگرفته و سپس بهمین دلیل اجازه ی ارسال درخواست رو میده.
4. Proxy Server درخواست رو میگیره، پردازش میکنه و سپس به دنبال محتوای درخواستی میره.
5. جواب درخواست توسط Proxy Server به شما فرستاده میشه که در میانه ی راه دوباره دست Firewallتون میفته.
6. Firewall با دیدن اینکه جواب فوق از مسیری میاد که در لیست سیاهش نیست، باز هم اجازه ی عبور جواب رو میده.
7. جواب به شما میرسه و میتونین سایت مورد نظر رو ببینین.
عکس 2 : مراحل طی شده برای دسترسی به یک سایت توسط Proxy Server
این راهکار تا زمانی جواب میداد که Content Filtering Proxy ها نبودن (خدا سال پیش!) و هنگامیکه این دوستان پا به عرصه گذاشتن اوضاع فرق میکرد بخصوص که برخی از این دوستان (Content Filtering Proxy ها) میتونن بسته ی ارسالی رو باز کنن و توش رو چک کنن. در اینحالت میتونن اون وسط مسطا آدرس درخواستی شما که برای Proxy Server ارسال کردین رو مثل موشی که از خمره ی روغن میکشن بیرون تشخیص بدن و بعدش هست که زرتی اونرو از لیستشون چک میکنن و سپس متوجه تیز بازی شما میشن و بعدش هم فیلترتون میکنن !
این رو گفتم ولی یکی از استفاده های مهم Web Proxy ها رو در شبکه های داخلی نگفتم ! راستشو بخواین ممکنه که شما شبکه ایی داشته باشین و بخواین درون این شبکه فقط دسترسی بر اساس محتوای Web بدین (که میشه پورتهای 80 و 8080) و به هیچ وجه نمیخواین که کاربرانتون با استفاده از چیزهای جیزی مثل Skype و یا eMule و هر نرم افزار دیگه ایی که مبتنی بر اینترنت و پورتهای غیر از پورتهای وب کار میکنه، بتونن با اینترنت ارتباط برقرار کنن.
در اینحالت، شما میاین و با پیاده سازی یک Web Proxy در داخل شبکه تون، کاربران رو مجبور به استفاده از پراکسی فوق میکنین. توی این سناریو، کاربرا حتی نمیتونن از سایتای اینترنتی Ping هم بگیرن ! و تنها راه استفاده شون از اینترنت این خواهد بود که بیان و با Browserشون به نت وصل بشن.
با اینکار ما نه تنها میتونیم ترافیک رو به کمک پراکسی مون کنترل کنیم، بلکه میزان مصرف هر یوزر، مقدار پهنای باند مورد استفاده و حتی فیلترینگ رو هم میتونیم روی اونها اعمال کنیم. ایجاد گزارشات بر اساس کاربر اتصالی به اینترنت هم یکی دیگر از موهبات عظیم استفاده از Proxy Server هاست که نمیتونیم روی کاربران NAT اعمالشون کنیم.
پیاده سازی Proxy Server های مرتبط دهنده ی وب و پراکسی سرورهای داخلی دقیقا مثل هم هستش و تنها نوع استفاده هستش که اونها رو میتونه تا حدی کوچکی از هم متمایز کنه. مثال بارز برای چنین نرم افزاری هم ISA Server هستش که با نصبش میتونین کاربران رو مجبور به استفاده از Web Proxy به جای روند عادی NAT بکنین (برای درک مقوله ی NAT میتونین به مقالات گذشته در www.CyberLone.com مراجعه کنید)
ساز و کار Anonymizing Proxy Server ها و Content Filtering Proxy ها
امروزه در دنیای وب ما شاهد انواع و اقسام سایتهای Anonymizing Proxy Server هستیم که میتونن به ما دسترسی به سایتای فیلتر شده بدن. سازوکار برخی از این سایتها خیلی ساده و سازوکار برخی دیگه شون کمی پیچیده تر هستش.
به عنوان مثال شما به سایت www.XYZ.com وصل میشین که یک Anonymizing Proxy Server هستش. توجه داشته باشین که خود این سایت هنوز شناسایی و فیلتر نشده و همین موضوع هستش که باعث وصل شدن شما به سایتای فیلتر شده میشه ! حالا درون سایت، آدرس دلخواهتون که فیلتر شده (مثلا www.bbc.com) رو وارد میکنین.
به محض زدن دکمه ی Go! ، این وب سایت شروع به انجام عملیات اصلیش میکنه. و این عملیات شامل این هست که این وب سایت درخواستی رو درست مثل یک کلاینت به سایت درخواستی ما (بی بی سی) میفرسته، جواب این درخواست که صفحه ایی در فرمت HTML هستش به وب سروری که سایت XYZ روش Upload شده فرستاده میشه. طبق برنامه نویسی که بر اساس زبانهای مختلف وب همچون PHP , ASP و یا Perl برای این وب سایت شده، جواب درخواست ما به دست وب سرور فوق میرسه و سپس یک سری تغییرات اعم از Upload شدن عکسهای اون سایت و همچنین تعویض URL سایته بر روی محتوای دریافتی انجام میشه به طوریکه Firewall و PS ما نتونن اونرو بر اساس آدرس URL ش شناسایی کنند.
حالا اون وب سایت (XYZ)، محتوای تغییر داده شده رو (که بر روی وب سرورش Upload شده) در محیط خودش به ما نمایش میده. در اینحالت Firewall ما آدرسی که داره مشاهده میکنه به جای اینکه www.bbc.com باشه، چیزی مثل این هست : www.XYZ.com/[Encrypted URL] که میتونه مثلا اینطوری باشه : www.XYZ.com/fu|[ei$h%*20
این آدرس توسط Firewall ما از سایت XYZ (سایتی که در لیست سیاه Firewall نیست) خونده میشه و سپس چونکه محتوای داخل URL ش با لیست سیاه مطابقت نداره اجازه ی رد شدن پیدا میکنه و به دست ما میرسه.
اگر بخوایم مراحل انجام گرفته در این نوع Proxy Server رو تشریح کنیم، به مراحل زیر میرسیم :
1. میرین تو سایته، درخواستتون رو وارد میکنین و دکمه ی Go! رو میزنین.
2. سایته درخواستتون رو میگیره، خودش به وب سرور سایت درخواستی شما وصل میشه، اون سایت رو دانلود کامل میکنه (یعنی فایل HTMLش رو بهمراه عکسهاش دریافت میکنه) و سپس در داخل Web Server خودش ذخیره ش میکنه.
3. حالا میاد و فایل ذخیره شده رو از طریق یک URL جدید که خودش میسازه و یک Virtual Directory که از دامنه ی نامش هست برای شما ارسال میکنه.
4. فایل ارسال شده به دست Firewall ما میرسه ولی چونکه URL ش غیرقابل شناسایی هست اجازه ی عبور به فایله میده.
5. فایله دست ما میرسه و میتونیم سایت مورد نظر رو ببینیم.
اگر بخوایم اتفاقات بالا رو یه کمی قابل هضم کنیم میتونیم به عکس زیر اشاره کنیم که موضوع رو در حد سواد پایین بنده تقلیل داده :
عکس 3 : مراحل طی شده توسط یک Anonymizing Proxy Server برای دسترسی به یک سایت منع شده
ولی با وجود تمام این دفتر دستک بازیا و تیزبازیهای باحال (!) ، این نوع Anonymizing Proxy Server ها دارای دو ضعف بزرگ هستند و اون ضعفا ایناست :
• اولیش این هستش که حتی اگر آقای مسئول فیلترینگ دیر متوجه این سایت بشه و این سایت تا زمانی طولانی بتونه خودشو مخفی نگه داره، این نوع Anonymizing Proxy Server ها در برابر Content Filtering Proxy ها ضعیف عمل میکنن که توضیح میدم چیه و چرا ؟
• دومیش که ضعف خفنی هم هستش اینه که آقای مسئول قسمت فیلترینگ میره و خود این سایته رو فیلتر میکنه !
ولی ضعف اول یعنی چی ؟
ما چند نوع فیلترینگ داریم : فیلترینگ بر اساس آدرس سایت، فیلترینگ بر اساس اطلاعات بنیانهای بین المللی (Content Labeling) و صد البته فیلترینگ بر اساس محتوای سایت (به این نوع فیلترینگ Content Filtering Proxy هم میگن و در ضمن یادتون باشه که این پراکسی میتونه یک Firewall هم باشه ولی من اینجا به خاطر درگیری شدید شما با کلمه ی Proxy که هزاران بار در این متن استفاده شده به جای Firewall از همون Content Filtering Proxy استفاده میکنم !)
نوع آخر یه کمی پیچیده تر و در عین حال دارای خطای بیشتر از دیگر نوعهای فیلترینگ هستش.
در این نوع فیلترینگ، Content Filtering Proxy بین ما و دنیای اینترنت قرار میگیره و در ابتدا اگر سایت درخواستی ما در لیست مورد نظرش وجود نداشته باشه به ما اجازه ی ارسال درخواست برای سایت مورد نظرمون رو میده، ولی هنگامیکه پاسخ درخواست ما از سایت مورد نظر برمیگرده (و میتونه شامل صفحه ی اول اون سایت باشه) این Content Filtering Proxy اقدام به چک کردن محتوای سایت فوق میکنه : دنبال کلمات حساس میگرده، اطلاعات اضافی سایت رو چک میکنه، نگاهی به قسمت Meta ی سایت و نوع داده ی درون اون میندازه و غیره و غیره.
در صورتیکه اطلاعات دریافتی توسط Content Filtering Proxy دارای موضوعات حساسی باشند (که در Databaseش تعیین شده) اونوقته که آقای Content Filtering Proxy درخواست رو میریزه تو سطل آشغال و اون صفحه ی تکراری " دسترسی مقدور نیست ! حالتو گرفتیم! " رو به ما نشون میده.
در اینحالت حتی اگر ما از Anonymizing Proxy Server ها هم استفاده بکنیم، اگر محتوای برگشتی دارای کلمات، جملات و موضوعاتی باشد که ممنوع هستند، سایت ما فیلتر خواهد شد !
برای جلوگیری از این نوع اختلال به هنگام ارتباط، Anonymizing Proxy Server ها میان و با ایجاد ارتباطات امن بر مبنای SSL (و امروزه بر مبنای TLS) کاری میکنن که اطلاعات در حال مبادله فقط توسط دو طرف قابل درک باشند و Content Filtering Proxy نتونه این وسط صفحات رو بخونه و درکشون کنه و بدین ترتیب تنها چیزی که خواهد دید اطلاعات غیرقابل خوندن و مزخرفات بید !
استفاده از یک کانال امن ارتباط ما رو میتونه تا مدتی امن کنه ولی به محض اینکه Anonymizing Proxy Server فوق کشف بشه، مسئول شبکه از راه حال دوم استفاده میکنه و اون هم فیلتر کل اون سایته هستش و این تو بمیری دیگه از اون تو بمیریها نیست ! ولی...
هیچوقت نمیشه در دنیای اینترنت هیچ حرفی رو با اطمینان کامل و 100 درصد زد ! پس چطور میشه حتی این مشکل رو هم برش فائق اومد ؟!
تا حالا از نرم افزارهایی همچون X و یا Y استفاده کردین ؟ اگه توجه کرده باشین این نرم افزارها با وجود هر نوع Content Filtering Proxy و Firewallیی در اغلب شبکه ها میتونن به شما دسترسی به اینترنت بدن. چطور همچین چیزی ممکنه مگه نمیشه که اینها رو هم فیلتر کرد ؟
ساختارهای نرم افزاری مبارزه با فیلترینگ میتونن خیلی پیچیده باشن و شرکتهای نرم افزاری فوق برای اینکه دیرتر بشه جلوشون رو گرفت اقدام به انتشار اطلاعات نرم افزارشون نمیکنند. ولی همیشه اینطوری نیست...
طرز ساز و کار نرم افزارهای مبتنی بر Anonymizing Proxy Server (همچون X و Y) بر اساس آدرسهای Proxy Server های مختلف در سراسر دنیا هستش بدینصورت که این نرم افزار با وصل شدن به یک PS سریعا اطلاعات قسمتی از سرورهای Available مربوطه رو به دست میاره که تک تک این سرورها به عنوان یک Proxy عمل میکنند.
سپس سیستم به کمک این نرم افزار اطلاعات درخواستیش رو به این سرورها (که بر اساس نرم افزار فوق مشخص میشن) میفرسته و این سرورها هم جواب رو به عنوان یک Proxy به ما تحویل میدن.
ولی چه اتفاقی میفته وقتیکه Port مخصوص این نرم افزار رو ببندیم و یا اینکه Anonymizing Proxy Server های اونرو فیلتر کنیم ؟
هیچ اتفاقی نمیفته ! این نرم افزارها غالبا بر روی پورت 80 فعالیت میکنند که بدینصورت نمیشه باهاشون مقابله کرد و از طرف دیگر اگر چند تا از وب سرورهای اونرو فیلتر کنیم، سیستم تکنولوژیک شرکت سازنده این نرم افزار سریعا متوجه تغییرات مربوطه میشه و سپس با اعلام اینکه "وب سرورهای فلان تا فلان فیلتر شدن"، خودش اقدام به ایجاد چندین سرور جدید به همراه IP و DNS جدیدی میکنه و سپس بخشی از آدرس این سرورهای جدید به نرم افزار مربوطه و یا Client های درخواست کننده فرستاده خواهد شد.
همونطور که مطمئنا تا الان متوجه شدین، هزینه ی برقراری همچنین زیر ساختی باید سرسام آور باشه و باید اعتراف کرد که "هست !". چنین جنبش هایی غالبا از هزینه ی دولتها شکل میگیرند همونطور که مثلا X از طریق دولت آمریکا تغذیه میشه و Y هم به همین منوال و باید پرسید چی شده که اینا اینقده عاشق چشم و ابروی ما ایرانیا و دسترسی بدون محدودیتمون به اینترنت شدن ؟
این بود توضیح مختصری از یک نوع سرویس قابل ارائه توسط پراکسیها با نام Anonymizing Proxy Server های بد و جیز (!) و صد البته Content Filtering Proxy های محترم !
ساز و کار Caching Proxy ها
Caching Proxy ها کار زیاد سختی رو نمیخواد انجام بدن! این Proxy ها کارشون اینه که اطلاعات درخواستی رو که میتونن Cache کنن رو در یک محل جمع کنن و سپس اگر کسی دوباره این اطلاعات رو از اونها درخواست کرد، این سیستم خودش رو برای رفتن به داخل اینترنت و برگردوندن جواب خسته نمیکنه، بلکه میره و سریع از داخل Cacheش فایل رو به یوزر میفرسته.
این نوع Proxy واقعا یک موهبت برای مسئولان شبکه ایی هستش که خودشون خوره ی اینترنت هستن و نمیخوان که بقیه ی افراد شرکت با وصل شدن به اینترنت سرعت اون رو پایین بیارن ! اینطوری میشه که یه Caching Proxy پیاده سازی میکنن و حسابی در مقدار پهنای باند مصرفی شون صرفه جویی میکنن !
سیستم Caching این نوع Proxy ها غالبا محدودیتهای خودش رو داره، بعنوان مثال نمیتونه صفحه های Dynamic رو به خوبی Cache کنه و اطلاعات در حال تغییر (که بازه ی بزرگی از اینترنت امروز رو تشکیل میدن) به خاطر طبیعت گند در حال تغییرشون (مگه نمیدونین ؟ تغییر بده !) برای این نرم افزارها و سخت افزارها مشکل به وجود میارن.
ولی همونطوری که همیشه گفتن (یا من میگم !) کله ی سگ تو بیابون هم غنیمته ! مگه نیست؟! میشه باهاش کله پاچه درست کرد و زنده موند ! و بهمین دلیل حتی نجات دادن 1 KB هم از دست این کاربران شرکتها و سازمانهای دولتی که معلوم نیست تو FaceBook چه غلطی میکنن هم یک موهبت عظیمه !
بارزترین مثالی که برای Caching Proxy Server میتونم براتون بزنم، Microsoft ISA Server هست. اگه توجه کرده باشین نام ISA از دو قسمت اصلی تشکیل میشه : Internet Security & Acceleration
قسمت اول به Security و طبیعت Firewall گونه ی ISA اشاره داره و قسمت دوم به Acceleration که معنیش "سرعت دهی" هستش و به همین خاصیت Caching این نرم افزار اشاره داره.
این دیاگرام هم هدیه ی من به شما برای درک هر چه بیشتر این موضوع :
عکس 4 : نمادی از نقش Caching Proxy Server در شبکه های داخلی
ساز و کار Reverse Proxy Server ها
در تمامی سناریوهای بالا، Proxy Server ما رو به یک دنیای بزرگ متصل میکرد و معمولا کارش Forward کردن ارتباطات به بیرون از شبکه ی داخلی بودش. ولی بعضی وقتها هستش که شما یه شرکتی دارین که توش چند تا Web Server داشته بیدین و در عین حال از اون Admin های گیر سه پیچی امنیتی هستین که براتون مهمه این Web Server ها هک نشن و یا امنیتشون در خطر نیفته. چیکار میکنین ؟!
میاین و جلوی ورودی شبکه تون یه Reverse Proxy Server نصب میکنین که کارش اینه که بشینه جلوی در و مثل نگهبانها حواسش به ارتباطاتی باشه که میخوان داخل شبکه برای دسترسی به Web Server ها بشن ! بعضیا ممکنه وقتی به Reverse Proxy ها فکر میکنن یاد خواجه های دربار بیفتن که در حرم زنان وایمیسادن و از اونا مراقبت میکردن! ولی باید اذعان کنم که این سرورها نه تنها خیلی مرد هم هستن (!) بلکه کارای زیادی هم میتونن به غیر از ایجاد امنیت بکنن که اینجا بهشون اشاره میکنم :
• Load Balancing : یه Reverse Proxy Server میتونه بشینه جلوی در ورودی شبکه و درخواستهایی رو که برای وب سرورها میاد رو بگیره و سپس اونها رو بین چند وب سرور داخلی شبکه پخش بکنه به طوریکه با ایجاد تعادل در دسترسی به اطلاعات نه تنها سرعت پاسخگویی به درخواستها رو افزایش میده بلکه یه طورایی هم با عمل کردن به عنوان Proxy و واسطه، نمیگذاره که هکره متوجه بشه کدوم وب سرور رو داره ازش استفاده میکنه و اون فقط میتونه یه آدرس Cluster رو تشخیص بده که باید گفت کار رو براش سخت تر میکنه.
• Caching : این سرور میتونه بشینه سر گردنه و بعدش جواب درخواستها رو قبل از فرستادن به درخواست کننده Cache کنه تا اگر دفعه ی بعد یکی دیگه اومد و همون درخواست رو داشت، این سرور سریع محتوای Cache شده رو به طرف ارسال کنه و اصلا سراغ وب سرورها نره و بدین ترتیب نه تنها سرعت رو افزایش بده بلکه میزان Load یی که وب سرورها دارن تحمل میکنن رو کاهش بده.
• Security : همونطوریکه در قسمت Load Balancing هم گفتم، پیاده سازی حتی یک Reverse Proxy خشک و خالی هم میتونه امنیت رو با ایجاد عنصر سردرگمی برای هکر بالا ببره. هنگامیکه کار یک واسطه در دنیای امنیت وسط میاد، هکرها کارشون کمی سخت تر میشه بخصوص هنگامیکه این واسطه از زیرساختهای Masquerading NAT گونه برای پیاده سازی ارتباطاتش هم استفاده بکنه (برای درک Masquerading NAT به مقاله ی قبلی CyberLone رجوع کنین).
• رمزگذاری و SSL Acceleration : این یکی خیلی خوبه ! ما میتونیم روی وب سرورهامون به طور جداگانه SSL رو فعال کنیم و یه حقیقت تلخ در مورد SSL اینه که از نظر محاسباتی خیلی هزینه بر هستش. فکر کنین یه Reverse Proxy باید در آن به 6 تا وب سرور وصل بشه که هرکدوم یک تنظیم خاص برای SSL دارن و این یعنی هدر رفتن قدرت پردازش و زمان. ولی ما میتونیم به وسیله ی یک Reverse Proxy Server قدرتمند کاری کنیم که عملیات رمزگذاری توسط وب سرورها انجام نشه و انجام اینکار فقط به دست پراکسی بیفته که در اینصورت نه تنها زمان ارسال اطلاعات و ایجاد ارتباط بالا میره بلکه باز هم باری که وب سرور باید در پردازشها متحمل بشه پایین میاد.
• Compression : یه Reverse Proxy Server میتونه اطلاعات رو فشرده کنه و بدین ترتیب سرعت ارتباط رو بالا ببره.
• Spoon Feeding : دیدین به بچه ها یواش یواش با قاشق غذا میدن ؟! کاربرهای 56 کیلوبیتی اینترنتی مثل من بدبخت (!) به هنگام ارتباط با وب سرورهای قدرتمند و پر سرعت مثل همین بچه هان ! من به سایت مورد نظرم که محتوای Dynamic داره وصل میشم و درخواست یک Search با 500 تا آیتم میکنم. این Search به طور بسیار سریع روی وب سرور فوق به طور Dynamic انجام میشه و سپس جوابش که تقریبا 500 کیلوبایت شده قراره که به دست من برسه. 500 کیلوبایت برای کاربران 56 کیلوبیتی یعنی یه کابوس !
پراکسی سرور این وسط مثل یه مادر عمل میکنه که یواش یواش اون 500 کیلوبایت رو توی یه قاشق میریزه و بعدش اونرو تو دهن من میگذاره، طوریکه ارتباطم هم Timeout نشه ! در اینحالت وب سرور دیگه مجبور نیست پورتی که برای من باز کرده رو همین طوری باز نگه داره و با سپردن وظیفه ی دادن اطلاعات به Reverse Proxy Server خودش رو از قید و بند من رها میکنه ! پراکسی سرور هم این وسط همونطوری یواش یواش اطلاعات رو به من میده تا ظرفش تموم شه و بعدش هم با دستمال دهن منو تمیز میکنه، بغلم میکنه تا آروغم رو بزنم و بعدشم لالا !
پس عکس مکس دوست دارین، آره ؟ دیگه دیدم نمیشه برای اغلب موضوعات دیاگرام داشته باشم ولی برای موضوعی به این مهمی چیزی برای دیدن نباشه... پس این شما و اینم یه دیاگرام در پیت از Reverse Proxy Server ها :
عکس 5 : نمادی از چگونگی قرارگیری Reverse Proxy Server درون شبکه های حفاظت شده
موضوعات متفرقه
تفاوت NAT و Web Proxy
شاید بعد از خوندن مقاله ی قبلی www.CyberLone.com با نام "NAT چیست و چگونه پیاده سازی میشود ؟!" این سوال در ذهنتون شکل گرفته باشه که "وقتی NAT داریم اصلا چه نیازی به Web Proxy هستش و تفاوت این دو تا چیه ؟!"
ممکنه شما مسئول شبکه ایی باشین که دوست دارین دسترسی کاربرانتون در این شبکه رو تحت کنترل قرار بدین، برای اونها محدودیت دسترسی اعمال کنین و یا اینکه سیستم Accounting براشون راه بندازین تا با داشتن Credit محدود نتونن برن و از Warez ها کیلویی فیلم پیدا کنن و بعدش از Rapidshare دانلود کنن. برای چی دوست دارین اینکار رو بکنین ؟! خب معلومه ! چونکه میخواین خودتون شب تا صبح سیستم رو زیر فشار دانلود بگذارین و دوست ندارین کس دیگه ایی زیاد پهنای باند رو اشغال کنه (نمونه ی بارز فساد دیجیتالی در ادارات و شرکتهای امروزی !) البته بگم که من عمرا اگه اینطوری باشم !
NAT با اینکه میتونه یک سری از این محدودیات رو برای شما محیا کنه، ولی دست کاربر رو عملا در دسترسی به اینترنت خیلی باز میگذاره و این برای کارمندی که نیازش به اینترنت در سطح بالایی نیست میتونه مشکل ساز باشه. ولی Web Proxy این مسخره بازیا رو نداره ! وب پراکسی کاربر رو مجبور میکنه که فقط بتونه از پورتهای 80 و 8080 برای ارتباط با پراکسی سرور استفاده کنه و در اینحالت کاربر حتی نمیتونه از Ping هم برای چک کردن ارتباطش استفاده کنه !
در جایی که NAT وظیفه ش ارجاع درخواستهای کاربران بر اساس هر پورتی بودش، Web Proxy فقط تحت مرورگر و یا برنامه هایی که با اون Compatible هستند کار میکنه.
مشکلات و تهدیدهای Web Proxy
وقتی شما به یک وب پراکسی ناشناخته وصل میشین، دارین عملا اطلاعات شخصیتون اعم از UserName , Password و یا حتی شماره ی کارت اعتباری تون رو در اختیارش قرار میدین تا اون بتونه این اطلاعات رو به عنوان واسطه به محل مورد نظر شما برسونه.
این وسط وب پراکسی هر غلطی میتونه بکنه ! میتونه درخواستهای شما رو Sniff کنه، از اطلاعات فرستاده شده توسط شما یک کپی بگیره، هویت شما رو شناسایی کنه و یا اینکه اقدام به سرقت هویت یا همون Identity Theft بکنه.
این موضوعات هنوز در ایران زیاد جدی گرفته نمیشن که علتش نبود آشنایی کامل با خطراتی هست که ممکنه ما رو تهدید کنه و همچنین اینکه این خطرات هنوز در کشورمون فراگیر نشدن. ولی بهتره اینو بدونیم که پراکسی بین کشور ما و خارج کشور ما در صورتیکه تجهیز به چنین امکاناتی بشه (و شاید هم شده و ما نمیدونیم !) میتونه اطلاعات شخصی هر کاربر ایرانی رو شناسایی کنه و در پایگاه داده ش به دلایل مختلف نگهداری کنه و این خیلی خطرناکه.
راه جلوگیری از این اتفاق چیه ؟ راهش اینه که به پراکسی سروری متصل بشین که از SSL برای ایجاد ارتباط امن استفاده میکنه یا اینکه از راهکارهایی همچون IPSec استفاده کنین. با اینکار اگه پراکسی سروره 100 سال هم پای پاکت اطلاعاتی شما بشینه، نمیتونه رمزش رو بشکونه و چیزی ازش حالیش بشه ! برای آمرزیدن دفی و هلمن، این دو دانشمند که تونستن الگوریتم رمزگذاری دو طرفه رو کشف کنن یه فاتحه بخونین !
SSL همون چیزی هستش که باعث میشه وقتی آدرس یه سایت فیلتر شده رو با HTTPS بزنین بتونین واردش بشین (که البته میشه حتی جلوی اینم گرفت !) و IPSec هم برای امن کردن ارتباطات مبتنی بر IP به کار میره که در مورد هر دوی اینها اگر خدا عمر داد و وقت کردم اقدام به نوشتن یک مقاله ی کامل خواهم کرد.
موخره
همونطوریکه همیشه هم گفتم، موضوعات دنیای IT و به خصوص موضوعات تکنیکیش، مواردی هستند که با یک و یا دو تا مقاله نمیشه تا تهشون رو رفت و باید خودتون آستینا رو بالا بزنین و برای درکشون عمل به خرج بدین.
چیزی که در این مقاله دیدین توضیح مختصری در مورد انواع و اقسام Proxy Server ها بود و باید اذعان کنم که تعداد این نوع سرورها بسیار بیشتر از چیزی هست که در بالا بود و بنده به ناچار و از سر اینکه شیکمم خالیه و آهی در بساط ندارم و روزه هم هستم (!) زورم بیشتر از این نرسید ولی سعی کردم که تونسته باشم مطلب رو به نحو احسن منتقل کرده باشم.
در مورد اینکه مقالات طولانی هستند هم Email هایی زده شده و شکایت شده، ولی من عقیده دارم که اگر یک مطلب رو کامل بگذاری، هر کسی به مقتضای نیازش ازش برداشت میکنه و میره پی کارش و بدین ترتیب منبعی ایجاد کردی که از هر نوع کاربری چه آماتور و چه حرفه ایی میشه بهش رجوع کرد.
بهرحال شرمنده اگر کمی طولانی شد !
موفق باشید.