سرور لینوکس را از نصب پیشفرض به امنیتی قابلاندازهگیری برسانید
Xeniguard پلتفرم متنباز سختسازی لینوکس است. وضعیت سرور را بررسی میکند، پیش از هر تغییر برنامهاش را نشانتان میدهد، آن را اعمال میکند و اگر لازم شد برمیگرداند. نتیجه یک امتیاز سختسازی است که میشود اندازه گرفت و راستیآزمایی کرد.
- ورود SSH فقط با کلید
- بستن ورود root
- فایروال با پیشفرض بسته
- پارامترهای امن کرنل
- غیرفعالسازی سرویسهای اضافه
- ممیزی و لاگ سیستم
- کاتالوگ کاملEnt
- اصلاح بر پایه CVEEnt
یک موتور، دو نسخه
Community و Enterprise روی یک موتور Bash مشترک ساخته شدهاند؛ تفاوت فقط در کاتالوگ کنترلها و پنل است.
هر تغییر برگشتپذیر
پیش از اعمال، برنامه را میبینید و پس از آن، راه بازگشت دارید.
قابلاندازهگیری
امتیاز سختسازی با وزنهای مستند، وضعیت هر سرور را به یک عدد قابل پیگیری تبدیل میکند.
متنباز
موتور و کاتالوگ با Apache-2.0، سرور و پنل با AGPL-3.0.
بررسی، برنامه، اعمال، بازگردانی
چهار عمل، همیشه به همین ترتیب. هیچ چیز بدون اینکه اول ببینید روی سرورتان تغییر نمیکند. روی هر مرحله کلیک کنید تا اجرای آن را ببینید.
یک پنل برای همه سرورها، یا مستقیم روی خود سرور
Xeniguard دو حالت اتصال دارد. انتخاب بین آنها به این بستگی دارد که پنل کجا اجرا شود.
حالت SSH
پنل روی یک سرور مدیریتی اجرا میشود و سرورهای هدف را از راه SSH سخت میکند. روی سرورهای هدف چیزی نصب نمیشود.
- کلید میزبان هر سرور یک بار تأیید و پین میشود؛ کلید متفاوت یعنی توقف کامل.
- موتور در یک پوشه موقت بارگذاری، با
sudo -nاجرا و پس از کار حذف میشود. - کاربر SSH باید root باشد یا sudo بدون رمز داشته باشد.
حالت محلی
پنل، یک کمککننده ممتاز و موتور مستقیماً روی خود سروری اجرا میشوند که سخت میشود. برای وقتی که میخواهید خود همان ماشین را سخت کنید.
- کمککننده ممتاز به root واقعی روی فایلسیستم واقعی نیاز دارد.
- به همین دلیل عمداً داخل کانتینر اجرا نمیشود؛ مرز کانتینر دقیقاً برای جلوگیری از همین دسترسی است.
- با سرویسهای systemd روی خود میزبان اجرا میشود.
ابزاری که با root کار میکند باید محتاطتر از همه باشد
سختسازی یعنی دست بردن در حساسترین تنظیمات سرور. Xeniguard از روز اول با یک مدل تهدید STRIDE طراحی شده است.
محافظ قفلشدن
تغییراتی که ممکن است دسترسی شما را قطع کنند فقط وقتی اعمال میشوند که محافظ روی systemd فعال شود. بدون systemd، اعمال رد میشود.
کلید میزبان پینشده
اثر انگشت کلید میزبان یک بار تأیید میشود. کلید چرخیده یا ناهمخوان بدون استثنا رد میشود.
بدون ردپا روی هدف
در حالت SSH، نسخه موتور در یک پوشه موقت بارگذاری و پس از کار پاک میشود.
کانتینر حداقلی
پنل در Docker با کاربر غیر root، فایلسیستم فقطخواندنی، بدون هیچ capability و با no-new-privileges اجرا میشود.
برنامه پیش از اجرا
هر تغییر پیش از اعمال فهرست میشود تا بدانید دقیقاً چه چیزی عوض خواهد شد.
کیفیت کد موتور
موتور Bash در هر تغییر با shellcheck، shfmt و bats بررسی میشود و سرور با gosec.
Community یا Enterprise
هر دو نسخه یک موتور و یک قرارداد کنترل مشترک دارند. تفاوت در محتوای کاتالوگ و امکانات مدیریت ناوگان است، نه در منطق موتور.
| قابلیت | Community | Enterprise |
|---|---|---|
| سقف امتیاز سختسازی | ~۷۰ | ~۹۵ |
| موتور سختسازی و خط فرمان | ✓ | ✓ |
| پنل وب محلی یا از راه SSH | ✓ | ✓ |
| بررسی، برنامه، اعمال و بازگردانی | ✓ | ✓ |
| کاتالوگ کامل کنترلها | — | ✓ |
| ایجنت روی میزبان و مدیریت ناوگان | — | ✓ |
| اتصال به اسکنر و اصلاح بر پایه CVE | — | ✓ |
| استثناهای کنترلشده و گزارش انطباق | — | ✓ |
| مجوز | متنباز | تجاری |
Apache-2.0سرور و پنل وب: AGPL-3.0سرور شما آماده سختسازی است؟
پیش از اولین اعمال، این موارد را روی سرور هدف بررسی کنید. هر کدام را که آماده است علامت بزنید؛ فهرست در مرورگر شما میماند تا وقتی برگشتید ادامه دهید.
هر مورد به بخش مربوطش در مستندات لینک شده است.
از بالا شروع کنید.
Xenitex پیدا میکند، Xeniguard محکم میکند
Xeniguard کاملاً مستقل کار میکند. Xenitex، همخانوادهاش، آسیبپذیریهای شبکه را کشف میکند؛ اتصال یافتههای اسکنر به اصلاح خودکار بخشی از نسخه Enterprise است.
وضعیت پروژه
Xeniguard در مرحله پایهگذاری است. این تصویر صادقانهای از جایی است که هستیم.
آماده
- مدل تهدید STRIDE و روش امتیازدهی مستند
- بررسی، برنامه، اعمال و بازگردانی از راه SSH
- پین کلید میزبان و محافظ قفلشدن
- استقرار Docker برای پنل مدیریت
در حال ساخت
- تکمیل مرحله پایهگذاری و گسترش کاتالوگ
- بستهبندی سادهتر برای حالت محلی
- پنل کاملتر برای مدیریت چند سرور
مسیر بعدی
- نسخه Enterprise با ایجنت و مدیریت ناوگان
- اصلاح بر پایه یافتههای CVE و اتصال به Xenitex
- گزارشهای انطباق
پرسشهای پرتکرار
Xeniguard از چه توزیعهای لینوکسی پشتیبانی میکند؟
Xeniguard برای میزبانهای خانواده دبیان و خانواده ردهت طراحی شده است.
اگر تغییری مشکل ایجاد کند چه میشود؟
هر تغییر پیش از اعمال در مرحله برنامه قابل بازبینی است و پس از اعمال میتوان آن را بازگرداند. برای تغییرات پرخطری که ممکن است دسترسی شما را قطع کنند، Xeniguard یک محافظ روی systemd فعال میکند و اگر systemd در دسترس نباشد اصلاً اعمال نمیکند.
آیا باید روی هر سرور چیزی نصب کنم؟
در حالت SSH نه. Xeniguard از طریق SSH وصل میشود، یک نسخه موقت از موتور را در پوشهای موقت بارگذاری میکند، آن را با sudo اجرا میکند و پس از پایان کار پاک میکند. کاربر SSH باید root باشد یا sudo بدون رمز داشته باشد.
آیا Xeniguard متنباز است؟
بله. موتور سختسازی و کاتالوگ کنترلها با مجوز Apache-2.0 و سرور و پنل وب با مجوز AGPL-3.0 منتشر میشوند.
تفاوت نسخه Community و Enterprise چیست؟
هر دو نسخه از یک موتور مشترک استفاده میکنند. نسخه Community متنباز است و تا امتیاز سختسازی حدود ۷۰ میرسد. نسخه Enterprise با کاتالوگ کامل کنترلها، ایجنت، اتصال به اسکنر و مدیریت ناوگان تا حدود ۹۵ میرسد.
آیا Xeniguard بدون Xenitex کار میکند؟
بله، کاملاً مستقل است. اتصال به اسکنرها و اصلاح بر پایه یافتههای CVE، مثل یافتههای Xenitex، بخشی از نسخه Enterprise است.
پنل را همین حالا بالا بیاورید
یک سرور لینوکس با Docker کافی است. از آنجا سرورهای هدف را با SSH اضافه کنید. راهنمای کامل به فارسی و انگلیسی آماده است.
# from the repository root
docker compose up -d --build
curl http://127.0.0.1:8091/healthz