بررسی امنیت سرویس NFS
بررسی امنیت سرویس NFS
NFS تکنولوژیی است که توسط SUN Microsystem برای دسترسی به فایل تحت شبکه پیاده سازی شده است.
NFS در ابتدا بر روی UDP کار می کرد، اما امروزه بر روی TCP کار می کند.
مزیت TCP امنیت بالاتر آن نسبت به UDP است.
در TCP که ارتباط گرا است، ابتدا یک اتصال برای بررسی موارد میان دو ماشین ایجاد می شود
و در صورتی که ماشین سرور قادر به پاسخ گویی باشد،
یک ارتباط دائمی میان کلاینت و سرور تا مادامی که درخواست های کلاینت از سمت سرور پاسخ داده شود، ماندگار می ماند.
در پایان سرور درخواست قطع ارتباط را به کلاینت می دهد.
این باعث بالا رفتن امنیت می شود، زیرا که هدف از TCP، این است
که تمامی بسته ها میان دو ماشین به صورت کامل و با همان ترتیبی که ارسال شده به کلاینت برسد.
پس TCP نسبت به UDP امنیت بیشتر ولی سرعت کمتری دارد.
تا پیش از نسخه 4 NFS یا NFSv4 تمامی نسخه های NFS به صورت Stateless بودند،
به این معنی که در پروتکل های Stateless هر درخواست هیچ اطلاعاتی از درخواست های پیشین ندارد
به این معنی که هر درخواست مستقل از درخواست های قبلی است.
انواع متفاوتی از فایل سیستم ها قابل دسترسی هستند ک
ه این با استفاده از یک سری API که Virtual File System گفته می شوند، انجام می گیرد.
هدف اصلی از VFS اجازه دادن به برنامه های کاربردی کلاینت برای دسترسی به انواع فایل سیستم ها
در یک شکل واحد بدون آگاهی از این تفاوت ها، که در تمامی سیستم های عامل مانند ویندوز، لینوکس، مکینتاش و تمامی شبه یونیکس ها استفاده می شود.
یک فایل سیستم NFS که بر روی ماشینی Mount شده است بسیار شبیه به فایل سیستم محلی همان ماشین است.
هدف از VFS برای دسترسی به فایل سیستم های مختلف بر روی ماشین است.
optionهای NFS
- ro: مخفف Read Only، که کلاینت های تنظیم شده با این گزینه، تنها دسترسی فقط خواندنی روی دایرکتوری Mount شده دارند.
- rw: مخفف Read Write، که کلاینت های تنظیم شده با این گزینه، دسترسی خواندن و نوشتن بر روی دایرکتوری اشتراکی را دارند.
- no_root_squash: گزینه ای بسیار مهم در تنظیم یک دایرکتوری برای اشتراک گذاشتن، به این دلیل که باعث کاهش امنیتی در سرور NFS خواهد شد.
اگر از این گزینه استفاده می کنید باید بدانید که کاربر root روی ماشین کلاینت،
روی دایرکتوری اشتراک شده، دسترسی root مطابق با root ماشین سرور را خواهد داشت
و توصیه می شود که از این گزینه استفاده نکنید.
- root_squash : نقطه مقابل no_root_squashاست.
با استفاده از این گزینه، درخواست های آمده از uid = 0 و gid = 0 به کاربر anonymous که به nobody user یا nfsnobody user شناخته می شود، نگاشت خواهد شد.
یعنی اگر دسترسی کاربر root روی ماشین کلاینت بر روی دایرکتوری Share شده،
معادل با دسترسی کاربرroot روی ماشین سرور نباشد باعث افزایش امنیت خواهد شد.
- sync : این گزینه باعث می شود که سرور تنها پس از نوشتن داده ها (اعمال تغییرات) که کاملا تمام شد،
به کلاینت پاسخ دهد. این گزینه، به عنوان پیش فرض است و اگر ننویسید، همین گزینه در نظر گرفته می شود.
- async : نقطه مقابل sync است، یعنی اینکه سرور قبل از تکمیل تغییرات بر روی Storage، به در خواست های دیگر نیز پاسخ خواهد داد.
بسته های utils-nfs و portmap لازم برای پیکربندی NFS هستند.
Portmap نرم افزاری که به درخواست های RPC گوش می دهد
و لازم در هر دو ماشین کلاینت و سرور و مورد استفاده نسخه های 1 و 2 و 3 از NFS هستند.
سرویس portmap باید در هر دو ماشین کلاینت و سرور نصب باشد.
یکی از مشکلاتی که هنگامmount کردن دایرکتوری بر روی ماشین محلی پیش می آید، عدم فعال بودن سرویس portmap است.
سرویس portmap بر روی Port شماره 111 هم برای TCP و هم برای UDP به در خواست ها گوش می دهد.
بر روی کلاینت با استفاده از فرمان mount به صورت موقتی و با نوشتن یک خط درون فایل fstab به صورت دائمی دایرکتوری اشتراکی را mount می کنیم.
در NFSv4 با استفاده از گزینه fsid=num می توانیم rootفایل سیستم Share شده از این سرور را اعلان کنیم.
به عنوان مثال در خط زیر از فایل etc/exports/ دایرکتوری /data به عنوان root است.
(data 192.168.214.100 (rw,fsid=0,sync/
– می توانیم زمانmount شدن در کلاینت از علامت / بجای data/ استفاده کنیم.
mount -t nfs4 -o rw 192.168.214.101:/ /mnt
fsid=0 یعنی دایرکتوری /data درون ماشین سرور به عنوانroot برای زیر دایرکتوری های خودش به حساب می آید.
به عنوان مثال اگر یک دایرکتوری به نام test درون دایرکتوری /data وجود داشته باشد، پس می توانیم به صورت زیر آن را mountکنیم.
mount -t nfs4 -o rw 192.168.214.101:/test /test
در مثال بالا test/ معادل data/test/ است. همچنین توجه کنید که زمان mount کردن از سوئیچ t nfsv4- استفاده کردیم.
با شروع NFSv3 از فایل هایی بزرگتر از g2 پشتیبانی شد و همچنین از گزینه async در export کردن دایرکتوری ها برای بالا بردن کارایی استفاده می شود.
NFSv4 دارای بهبود ها و قابلیت های بیشتری نسبت به NFSv3 است و همچنین در NFSv4 نیازی به سرویس portmap نمی باشد.
NFSv4 از TCPبر روی Port شماره 2049 برای بهبود و کارایی بیشتر استفاده می کند.
جهت مشاهده دوره های آموزشی بر روی این لینک کلیک نمایید.
جدیدترین اخبار مجموعه فراز نتورک را در این صفحه اجتماعی دنبال کنید.
بررسی امنیت سرویس NFS – نویسنده: موسی رشوند
بررسی امنیت سرویس NFS
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.