ابزارهای ویندوز مطالب برجسته مطلب روز

همه چیز راجع به SymLinks یا Symbolic Links در ویندوز

به کاربران حرفه ای و قدیم سایت این نوید را میخواهم هم اکنون بدهم که هنگام نگارش این مطلب روی مد زمان قدیم هستم که امنیت سیستم ویندوز ویستا را بررسی میکردم. برای مطلبی که هم اکنون مینویسم زمان بسیاری را صرف خواهم کرد و تا جای ممکن تلاش میکنم که مطلب را ساده سازی کنم.

در این مطلب بررسی میکنیم SymLinks و استفاده مایکروسافت در ویندوز و همچنین اینکه چه ایده هایی برای استفاده از آن میتوان داشت یا نقاط ضعف امینتی که با آن میتوان بوجود آورد.

SymLinks یا نام کامل آن Symbolic Links یک ویژگی سودمند است که در Windows Vista معرفی شد و راه درازی را طی کرده است که هم اکنون به ویندوز ۱۰ رسید. این ویژگی شما را قادر میسازد فایل ها و پوشه ها را بدون از بین بردن سازگاری با سیستم عامل یا سایر برنامه های کاربردی انتقال دهید و در عین حال از چندین کاربرد بدیهی و منطقی دیگر نیز برخوردار است.

اگر در یک جمله بخواهم تعریف کنم SymLinks همان Shortcut است ولی نه به آن شکل.

Symlinks

برای شروع کار باید بگویم که مایکروسافت مخترع Symlinks نیست بلکه این ویژگی از سیستم عامل لینوکس به ویندوز آمد و اکثر کاربران لینوکس نمیدانند هم اکنون این ویژگی در ویندوز نیز موجود است. شما میتوانید از این ویژگی برای کارهای ساده و حتی حرفه ای استفاده کنید مثلا: فرض کنید درایور C شما درحال پرشدن بدون اینکه اتفاق خاصی بیفتد میخواهید آنرا به هارد اکسترنال هدایت کنید. برای برقراری Symlinks حتما شما باید یه نقشه بکشید و از روی نقشه اجرا کنید.

مایکروسافت هم اکنون از این سیستم استفاده کرده است و برای این مورد میشود مثال XP و ویندوز ویستا به بعد را زد. اگر توجه کرده باشید در ویندوز XP شما پوشه ای به این آدرس داشتید C:\documents and settings اما در ویندوز ویستا به بعد این پوشه وجود ندارد ولی شما هنگامیکه نرم افزار نصب میکنید برخی از آنها در تنظیمات Setup به شما میگویند که اطلاعات را در این پوشه بارگذاری میکنند ولی وقتی به سراغ اطلاعات میروید آنها را در پوشه C:\users\user\documents میبینید.

مایکروسافت در ویندوز ویستا به این نتیجه رسید بهتر است فایل های شخصی هرکاربر در پوشه خودش در نام کاربری خودش ذخیره شود به همین دلیل چنین ساختاری برای فایل های شخصی و برای هر برنامه C:\programData را قرار داد تا دسترسی اطلاعات هر کاربر به کاربر دیگر داده نشود.

همین چند خط بالا یعنی چی؟

اگر این قسمت را متوجه نشوید نمیتوانید Symlinks را درک کنید. ببینید مایکروسافت با Symlinks این امکان را فراهم کرد که تا که یک شی (فایل و پوشه) از سیستم فایل NTFS به یک شی دیگر از همان سیستم فایل اشاره کند به عنوان مثال فایل mywindows.txt در درایو C  و فایل mywin.txt در درایو D با استفاده از این متد هر دو به یک مکان از حافظه اشاره میکنند که این بدین معناست محتوا هر دو فایل یکی است و با ایجاد تغییرات در هر کدام از فایل ها محتوای دیگری نیز تغییر میکند.

تفاوت Symlinks و Shortcut چیست؟

برای اینکه بهتر symlinks را درک کنید باید گفت یک Shorcut نوعی Symlink است و کاربردهای خودش را دارد اما به هیچ وجه به قدرتمندی آن نیست. یک ShortCut، اشاره گری به یک فایل یا یک پوشه است و منوی start در ویندوز اساسا مجموعه ای از این Shortcut ها است. آن ها لین کهایی به مکان واقعی برنامه هستند. پس از انجام این کار یک آیکون به دسکتاپ اضافه میشود که وقتی برروی آن کلیک کنید مستقیما به برنامه اصلی وصل میشوید.
تفاوت این دو این است که ShortCut نمیتواند جایگزین یک فایل یا یک فولدر شود چون فقط به آن اشاره میکند. اما Symlinks یک جایگزین از روی آن میسازد.
شما هیچگاه نمیتوانید محتوای c:\folder را با محتوای D:\folder در ویندوز با Shortcut یکی کنید اما با symlinks این امکان پذیر است.

به همین دلیل نرم افزارهایی که در ویندوز xp پوشه c:\documents and settings را میخواهند با اینکه در ویندوز ویستا وجود نداشت اما باز میتوانستند به آن دسترسی داشته باشند.

Symlinks برنامه ها و ویندوز را فریب می دهد تا فکر کنند آن فایل و پوشه هنوز هم در مکان قدیمی قرار دارد اما درواقع در مکان دیگری جای گرفته است.
اگر بخواهید یک فایل یا یک پوشه را به یک مکان جدید برروی همان دیسکی که مایکروسافت در ویندوز XP و ویستا قرار داده منتقل کنید این کار سودمندی خواهد بود اما در عین حال شما را قادر میسازد آن ها را به یک دیسک درایو جدید منتقل نمائید. اگر یک دیسک اکسترنال USB با ظرفیت بالا مثل ۱ یا ۲ ترابایت داشته باشید اما دیسک داخلی کوچ شما تقریبا پر شده باشد میتوانید فایل ها و پوشه ها را به درایو اکسترنالی که فضای بسیار زیادی دارد منتقل نماید.

SSD ها بسیار کوچکتر از دیسک های مکانیکی هستند بنابراین چنان چه درایو PC خود را با یک SSD سریع جایگزین کنید فضای ذخیره سازی شما به راحتی پر میشود. انتقال فایل ها و پوشه ها به دیسک اکسترنال و جایگزین ساختن آن ها با یک Symlink راه حل فوق العاده ای به نظر میرسد. به عنوان مثال شما میتوانید برنامه های C:\program files را به یک دیسک اکسترنال یا SSD منتقل کنید و آنرا با یک Symlink جایگزین نمائید. در این مورد حتی خود ویندوز هم فکر میکند هنوز program file برروی درایو C قرار دارد.

چگونه از Symlinks استفاده کنیم؟

خوب برای شروع کار طبق معمول به یار قدیمی Command Prompt یا CMD مراجعه میکنیم.

CMD را در حالت ادمین باز کنید و خط فرمان mklink را وارد کنید. هنگامیکه این خط فرمان را اجرا میکنید خودش دارای سه سوئیچ مختلف یعنی D/ h/ و j/ است.

سوئیچ /D

این سوئیچ تفاوت چندانی با ایجاد shortcut ندارد و تقریبا دارای ویژگی shortcut ویندوز میباشد.

سوئیچ /H یا Hardlink

به وسیله این سوئیچ میتوانید یک فایل با عملکرد مشابه که تنها نامی متفاوت دارد ایجاد کنید که با تغییر در هر یک از فایلها، فایل دگیر نیز تغییر خواهد کرد.

سوئیچ /J

به وسیله این سوئیچ میتوانید یک پیوند بین دایرکتوری های سیستم عامل (Directory Junction) ایجاد کنید،عملکرد این سوئیچ بسیار شبیه به سوئیچ /H میباشد با این تفاوت که میتوانید از آن در بین دایکتوری های مختلف استفاده کنید.

فرض کنید قصد این را داریم که یک برنامه را از c:\myfolder\myprog.exe به D:\files\myprog.exe منقل کنیم. شما میتوانید از نسخه اول فرمانی شبیه زیر برای انجام اینکار استفاده کنید.

mklink c:\myfolder\myprog.exe d:\files\myprog.exe

link همان symbolic link هست که ایجاد میشود و target مکان جدیدی است که به آن اشاره میکنید. برای انتقال یک پوشه یا دایرکتوری از پارامتر /d استفاده کنید:

mklink /d c:\folder d:\newfolder

Symbolic link در اغلب موارد کار میکند اما در مواقعی جواب نمیدهد مثلا بستگی به حق دسترسی برنامه به پوشه دارد که آنوقت باید از پارامتر /j بجای /d استفاده کنید.

همچنین نرم افزارهایی نیز برای اینکار وجود دارند که کار را ساده تر انجام میدهند

 

امنیت Symlink هم در ویندوز هم در لینوکس

symlink یکی از خطرناکترین مواردی است که می بایست روی سرور محدود شود. symlink یکی از ابزارهای هسته سیستم عامل لینوکس است.

در صورت عدم رفع مشکل و محدودیت symlink در سرور لینوکس و ویندوز ، در صورتی که اکانتی مورد نفوذ قرار گیرد توسط symlink می توان به اکانت های دیگر نیز نفوذ کرد.

[box style=”note”] سیستم عامل cloudlinux تا حد بسیار بالایی توانسته این موضوع را برطرف کند. این سیستم عامل توسط ابزاری به نام cagefs هر اکانت را بصورت قفس در حیطه خود زندانی می کند.[/box]

یکی از رایجترین حملات امنیتی در سرور‌های اشتراکی (Shared host) که حتی در برخی شرکت‌های بزرگ هاستینگ هم مشاهده کرده‌ام، استفاده از نحوه مدیریت کردن symlink ها در آپاچی است.

روش کار به صورت خلاصه به شرح زیر است:

گام اول: هکر کنترل یکی از سایت‌های هاست شده روی سرور اشتراکی را به دست می‌گیرد. برای این کار معمولا از حفره‌های امنیتی نرم‌افزارهایی که به روزرسانی نشده اند مانند وردپرس، جوملا و … استفاده می‌کند.

گام دوم: اسکریپتی روی سرور اجرا می‌کند که یک سلسله از symlink ها به آدرس‌های محتمل فایل‌های config و settings ایجاد می‌کند.

mywindows-wordpress-wp-config.txt --> /home/mywindows/public_html/wp-config.php
mywindows-drupal-settings.txt --> /home/mywindows/public_html/sites/default/settings.php
mywindows-unknown.txt --> /home/mywindows/public_html/config.php
...

پس از اجرای این اسکریپت هکر می‌داند هر اکانت روی این هاست اشتراکی از چه نرم‌افزاری استفاده می‌کند و همچنین اطلاعات settings شامل رمز پایگاه داده، دانه درهم‌ریختگی (hash salt) و … را می‌داند.

البته آپاچی نیز مستنداتی را برای جلوگیری از روش بالا آورده است که مستقیما لینک میدهم.

موفق باشید
علی مختاری

 

برچسب ها: cmd ShortCut Symbolic Links Symlinks

پیام بگذارید

ما را در شبکه های اجتماعی دنبال کنید

© تمامی حقوق برای علی مختاری محفوظ است.

تماس با من

میدان جمهوری اسلامی ، جنب بانک مسکن ، مجتمع اداری تجاری نگین

۰۳۱-۹۱۰۱۵۰۶۲ 

info@alimokhtari.name