آشنایی با پروتکل SNMP
SNMP یا پروتکل مدیریت آسان شبکه Simple Network Management ،پروتکل دادههای وابسته با جابجایی مدیریت بین سرورهای شبکه را پشتیبانی میکند. پروتکل SNMP در لایه Application از مدل OSI رفتار می نماید، به این گونه که برای جلوگیری از پیدایش ناهماهنگی در کارکرد پروتکل TCP/IP، این پروتکل پروتکل تبادل داده را بدون برگزاری پیوند انجام میدهد، یعنی داده فرستاده شده با این پروتکل از لایه Session که لایه برگزارکننده اتصال بین فرستنده و گیرنده است نمیگذرد و در نتیجه برای ارسال داده خط اشغال نشده و اختلالی در کارکرد پروتکل اصلی شبکه (TCP/IP) پدید نمیآید. در واقع پروتکل SNMP راهی را در شبکه برای ارسال داد پدید نمیآورد، بلکه داده را از یک میانگاه به میانگاه دیگر راهبری میکند تا به مقصد برسد. از همین رو، قابلیت اطمینان این پروتکل که حاوی لایه Session نمیباشد، کمتر از پروتکل TCP/IP است.کاربرد این پروتکل در شبکههای با بیش از یک سرور ( مانند سیستمهای اتوماسیون پستها که دارای دو سرور روشن و سرورذخیره روشن هستند) میباشد که با از دست رفتن سرور روشن، پیام راه اندازی سرور ذخیره از سوی این پروتکل به آن داده شده و روشن می گردد و مدیریت شبکه را به جای سرور از دست رفته به عهده میگیرد.از این پروتکل برای جمع آوری اطلاعات مربوط به کانفیگ ها و تجهیزات شبکه مانند سرورها، پرینترها، سوییچ ها و روترها، بر اساس یک IP، استفاده می شود.
بطور کلی نحوه کار پروتکل بدین شکل است که یک agent (ویژگیست که روی کلاینت ها نصب و فعال شده تا اطلاعات کلاینت را جمع آوری کرده و به سرور بفرستد) اطلاعات کلاینت ها را به SNMP Manger (همان سروری که قرار است اطلاعات کلاینت ها را از agent دریافت کرده و به نرم افزار مانیتورینگ تحویل بدهد) ارسال کرده و مانیتور می کند.
اجزای پروتکل و کاربردهای آنها
در شبکه، عموما یک یا چندین کامپیوتر از وظیفه مدیریت یا مانیتور تجهیزات را به عهده دارند (مانند سرور مانیتورینگ) که به آنها SNMP Manager گفته می شود. در واقع هر تجهیز و کلاینتی که شما می خواهید آن را مدیریت و مانیتور کنید، ویژگی به نام agent را روی آن فعال کرده تا اطلاعات را از طریق این پروتکل به SNMP Manager ارسال کند. وظیفه SNMP Manager، دریافت اطلاعات و query از agent، تعیین متغیرهای مورد نظر خود و اعلام وقایع و تغییرات به agent است.
Agent نیز برنامه و ویژگی است که درون تجهیزات شبکه قرار دارد و می بایست فعال شود. فعال سازی آن باعث می شود تا اطلاعات مدیریتی کلاینت را بصورت local جمع آوری کرده و آنها را برای ارسال به SNMP Manager آماده کند، تا هر زمانSNMP Manager درخواست کرد، پاسخگو باشد. البته این agent می تواند استاندارد بوده (مانند Net-SNMP) یا مربوط به شرکت خاصی (مانند HP insight agent) باشد.
بنابراین، بطور کلی وظایف agent در موارد زیر خلاصه می شود:
- ذخیره و بازبابی اطلاعات مدیریتی به عنوان MIB (در ادامه توضیح داده می شود)
- علامت دادن به SNMP Manager در صورت بروز هر تغییر یا اتفاقی در کلاینت
- جمع آوری اطلاعات مدیریتی درباره محیطی که در آن قرار دارد
در واقع یک SNMP Manager می تواند، انواع اطلاعات زیر را از agent درخواست کرده و مانیتور کند:
- آمار و تشخیص هویت پروتکل شبکه
- اطلاعات پیکربندی نرم افزاری و سخت افزاری
- آمار کارکرد و میزان کارایی تجهیز
- پیام های خطا و event ها
- آمار کارکرد برنامه ها و نرم افزارهای استفاده شده در کلاینت
- یافتن تجهیزات متصل به شبکه
اگر در agent اجازه write به SNMP Manager بدهید، SNMP Manager می تواند درخواست ایجاد یک کانفیگ را با استفاده از پیام Set به agent ارسال کرده و یک پارامتر local را تغییر دهد و در اصطلاح کلاینت را از راه دور و با استفاده از این پروتکل کانفیگ کند. البته دقت کنید که درخواست های Set به مجموعه پارامترهای کوچکی از کلاینت محدود می شود که برایشان دسترسی read-write تعریف شده است. بیشتر پارامترهای کلاینت فقط اجازه خواندن داشته و read-only می باشند.
مفهوم Management Information Base ) MIB)
MIB مجموعه ای اطلاعات است که برای مدیریت عناصر موجود در شبکه استفاده می شود. MIB ها object های مدیریت شده ای را که SNMP manager نیاز داشته و می خواهد مانیتور کند، ایجاد می کنند. هنگامی که SNMP manager اطلاعات را از agent درخواست می کند، SNMP agent اطلاعات مورد درخواست را از MIB بازیابی می کند. به زبان ساده، تمامی اطلاعاتی که قرار است SNMP manager از agent دریافت کرده و مانیتور کند، در این MIB ها ذخیره می شوند.
هر سیستمی در شبکه (کامپیوترها، سرور، روتر و غیره) یک MIB داشته که وضعیت منابع مدیریت شده را روی سیستم نشان می دهد، مانند ورژن نرم افزاری که روی آن دستگاه نصب شده است، IP هر پورت یا interface، میزان فضای آزاد هارد و یا تعداد فایل های در حال اجرا. MIB اطلاعات ثابت را در خود ذخیره نمی کند، اما در عوض وابسته به object هاست؛ دیتابیس پویایی داشته که مجموعه منطقی از تعاریف موارد مدیریت شده دارد. به زبان ساده، MIB فقط اطلاعاتی را در خود ذخیره می کند که قابل تغییر هستند، همچنین MIB ها نوع اطلاعات هر object مدیریت شده را تعریف می کنند.
SNMP Community
همانطور که می دانید، برای استفاده از SNMP، این ویژگی را روی کلاینت ها و سرور مانیتور فعال می کنید تا agentاطلاعات کلاینت ها را به SNMP manager (سرور مانیتور) برساند. اما به این فکر کرده اید که اگر شخصی، SNMP manager ای را در جای دیگری از شبکه اجرا کند، می تواند به اطلاعات کلاینت های شما دسترسی داشته باشد؟! مایکروسافت برای جلوگیری از این کار و بالا بردن سطح امنیت، از یک نام share شده بین agent و manager استفاده می کند تا ترافیک SNMP احراز هویت شود.
یک community name در واقع پسورد share شده ایست که بین چندین agent و یک SNMP manager عمل می کند. شما SNMP manager را کانفیگ کرده و کامپیوترها و دستگاه هایی را که قرار است زیر نظر manager باشند را بهcommunity آن مرتبط می کنید. بنابراین، یک SNMP agent فقط درخواست های SNMP manager ای را قبول می کند که در لیست قابل قبول agent باشند.
وقتی یک SNMP manager درخواستی را به یک agent ارسال می کند، سرویس SNMP نام community تقاضا کننده را باcommunity name آن agent و میزان دسترسی آن مقایسه می کند. اگر نام یکسان بود، SNMP manager با موفقیت احراز هویت شده و agent به درخواست گزارش یا انجام کار خواسته شده پاسخ می دهد؛ اما اگر نام یکسان نباشد، agent به درخواست پاسخ نمی دهد. البته در صورتی که کانفیگ کرده باشید، یک پیام trap ارسال کرده و می گوید یک تلاش ناموفق انجام شده است.
بخاطر داشته باشید که یک کامپیوتر یا تجهیز، می تواند به چندین community متصل باشد. نام SNMP community به خود سرویس SNMP مربوط شده و ربطی به نام های Active Directory یا Workgroup ندارد. در ورژن های قبلی ویندوز، بصورت پیشفرض، نام SNMP community برای دسترسی های read-only از عبارت “Public” و برای دسترسی read-write عبارت “Private” استفاده می شد. اما برای افزایش امنیت، همانند یک پسورد با آن برخورد کنید.
با تعریف SNMP community، می توانید کامپیوترها و تجهیزات شبکه را برای مدیریت بهتر و امنیت بیشتر، در یکcommunity قرار دهید. دو روش رایج برای جدا کردن کامپیوترها از یک دیگر و قرار دادن در گروه های مجزا اینست که آنها را یا از روی مکان فیزیکی و یا از روی عملکرد گروه بندی کنید (برای مثال کامپیوترها و تجهیزات حسابداری و مالی از سایر گروه ها جدا شده و در community مجزا قرار گیرند) که بهترین راه، گروه بندی از روی عملکرد است.
علاوه بر این، می توانید مشخص کنید که agent فقط با مجموعه خاصی از SNMP manager ها در ارتباط باشد. می توان برای هر community اجازه دسترسی (مانند read-only و یا read-write) تعیین کرده و یا اینکه وقتی نام community و یا اجازه دسترسی نادرست بود، با ارسال پیام trap هشدار دهد. همانطور که می دانید، نرم افزارهای مانیتورینگ از این پروتکل برای خواندن اطلاعات کلاینت ها استفاده می کنند و بنابراین فقط می بایست بصورت read-only دسترسی داشته باشند، اما برخی از نرم افزارهای مدیریتی مانند SCCM که نیاز دارند از طریق این سرویس، تغییراتی را نیز روی کلاینت ها ایجاد کنند، می بایست دسترسی read-write داشته باشند. فقط دقت کنید که تا حد ممکن دسترسی read-write ندهید. در برخی از مکان هایی که امنیت بسیار اهمیت دارد، برای ارتباط SNMP manager با agent ها از IPSec استفاده می کنند.