آژیر (Azhir) – فریمورک امنیت میزبان و تحلیل لاگها
ویژگیهای کلیدی
ثبتنام ایجنتها
ثبتنام امن ایجنتها به همراه صدور خودکار کلید API
امنیت API
دریافت و پردازش امن رویدادها با استفاده از کلیدهای اختصاصی API
پارس کردن لاگهای SSH
شناسایی ورودهای ناموفق، کاربران غیرمجاز، دسترسیهای سطح Root و سایر رویدادهای احراز هویت
صف رویدادهای قابل اطمینان
صف ذخیرهسازی روی دیسک جهت جلوگیری از ازدسترفتن دادهها هنگام قطعی سیستم
موتور تلاش مجدد خودکار
مکانیزم بازتلاش هوشمند با الگوریتم Exponential Backoff برای تضمین تحویل دادهها
راهاندازی با داکر
کانتینریزه کردن PostgreSQL و FastAPI جهت استقرار یکپارچه و آسان
پروژه آژیر به عنوان یک پروژه کاربردی در حوزه امنیت سایبری ایجاد شد تا طراحی و پیادهسازی یک معماری مدرن SIEM با استفاده از پایتون را مورد بررسی قرار دهد.
این سیستم از دو سرویس مستقل تشکیل شده است:
ایجنت لینوکس (Linux Agent): بهطور مداوم journal سیستمدی (systemd) را پایش میکند، رویدادهای امنیتی مربوط به SSH را تشخیص میدهد، ورودیهای خام لاگ را به شیءهای ساختاریافته تبدیل کرده و قبل از ارسال، آنها را به صورت محلی ذخیره میکند. این لایه ذخیرهسازی محلی تضمین میکند که در صورت قطع موقت شبکه یا از دسترس خارج شدن سرور، هیچ رویداد امنیتی از دست نرود.
سرور FastAPI: به عنوان سرویس مرکزی دریافت داده (Ingestion) عمل میکند. ایجنتها با استفاده از یک توکن ثبتنام (Enrollment Token) به صورت امن احراز هویت شده و کلید اختصاصی API دریافت میکنند که برای تایید تمام درخواستهای بعدی استفاده میشود. رویدادهای ورودی پس از اعتبارسنجی، به صورت ناهمگام (Async) پردازش شده و با استفاده از SQLAlchemy 2.0 و مایگریشنهای Alembic در پایگاهداده PostgreSQL ذخیره میشوند.
این پروژه از یک معماری ماژولار با لایهبندی کاملاً مجزا بهره میبرد (شامل بخشهای API، منطق کسبوکار، Repositoryها، مدلهای دیتابیس، امنیت و تنظیمات). در سمت ایجنت نیز بخشهای جمعآوری (Collectors)، پارسرها (Parsers)، لایه انتقال (Transport) و لایه پایداری دادهها از هم جدا شدهاند که افزوده شدن منابع لاگ جدید و قوانین جدید شناسایی را بسیار ساده میکند.
برای افزایش پایداری، ایجنت از یک صف رویداد روی دیسک (Disk-backed queue) همراه با یک ورکر تلاش مجدد خودکار با الگوریتم Exponential Backoff استفاده میکند. این ویژگی، ارسال قطعی رویدادها را حتی در صورت عدم دسترسپذیری موقت سرور تضمین مینماید.
پروژه برای محیط توسعه کاملاً کانتینریزه (Containerized) شده و مفاهیم مختلفی از مهندسی بکاند را به نمایش میگذارد، از جمله:
احراز هویت امن API و ثبتنام ایجنتها
طراحی برنامههای ناهمگام (Async) با FastAPI
استفاده از SQLAlchemy 2.0 به همراه مدلهای ORM تایپشده (Typed)
معماری نرمافزاری ماژولار و ساختاریافته
جمعآوری لاگهای سیستم لینوکس با استفاده از systemd
پارس کردن لاگهای SSH بر اساس قوانین (Rule-based)
سیستم ارسال رویداد مقاوم در برابر خطا (Fault-tolerant)
محیط توسعه مبتنی بر Docker
تستنویسی خودکار با Pytest
اگرچه پروژه آژیر هنوز در حال تکمیل است، اما نسخه فعلی پایهای محکم برای افزودن قابلیتهای آتی مانند داشبورد تحت وب، موتور تحلیل و ارتباطدهی هشدارها (Alert Correlation Engine)، کالکتورهای جدید لاگ و پشتیبانی از ایجنتهای ویندوز فراهم کرده است.
بازخورد جامعه(3بررسیها)