پرش به محتوا

امنیت Proxmox: کاربران با کمترین دسترسی، ورود دومرحله‌ای و فایروال

به‌جای root برای هر نفر حساب جداگانه با نقش مشخص بسازید، TOTP را اجباری کنید، توکن API محدود بسازید و فایروال دیتاسنتر را بدون قفل شدن خودتان فعال کنید.

Proxmox VE 9سطح: متوسطبه‌روزرسانی: ۱۷ آبان ۱۴۰۵

۱. کاربران و نقش‌ها

دو realm وجود دارد: pam (کاربران لینوکسی میزبان) و pve (کاربران داخلی Proxmox). برای اپراتورها pve ساده‌تر است:

bash
pveum group add ops --comment "Operators"
pveum user add ali@pve --groups ops --email ali@sahor.ir
pveum passwd ali@pve

# Operators can manage all VMs but not hosts, storage config or users
pveum acl modify /vms --groups ops --roles PVEVMAdmin
pveum acl modify /storage --groups ops --roles PVEDatastoreUser

# Read-only auditor
pveum user add audit@pve
pveum acl modify / --users audit@pve --roles PVEAuditor
pveum user permissions ali@pve

۲. ورود دومرحله‌ای (TOTP)

هر کاربر بعد از ورود به رابط وب، از منوی نام کاربری بخش TFA را باز می‌کند و TOTP را با برنامه‌ای مثل Aegis یا Google Authenticator ثبت می‌کند. برای root هم همین کار را انجام دهید و کدهای Recovery را جای امنی نگه دارید.

برای اجباری کردن، در Datacenter › Permissions › Realms، realm pve را ویرایش کنید و TFA را روی TOTP بگذارید.

۳. توکن API برای اسکریپت‌ها

رمز root را هرگز در اسکریپت نگذارید. یک توکن با دسترسی محدود بسازید:

bash
pveum user add automation@pve
pveum user token add automation@pve backup --privsep 1
pveum acl modify /vms/101 --tokens 'automation@pve!backup' --roles PVEVMUser

مقدار توکن فقط یک بار نمایش داده می‌شود. با --privsep 1 توکن فقط به اندازه‌ی ACL خودش دسترسی دارد، حتی اگر کاربرش دسترسی بیشتری داشته باشد.

۴. فایروال دیتاسنتر

وقتی فایروال دیتاسنتر روشن شود، ورودی‌ها به‌طور پیش‌فرض مسدود می‌شوند. اول قانون‌ها را بنویسید، بعد فایروال را فعال کنید.

/etc/pve/firewall/cluster.fw:

ini
[OPTIONS]
enable: 0
policy_in: DROP

[IPSET management]
192.168.10.0/24 # admin LAN

[RULES]
IN ACCEPT -source +management -p tcp -dport 8006 -log nolog # web UI
IN ACCEPT -source +management -p tcp -dport 22 -log nolog   # SSH
IN ACCEPT -p icmp -log nolog

ipset با نام management معنای ویژه‌ای دارد و Proxmox دسترسی مدیریتی آن را خودکار باز می‌کند. ارتباط بین اعضای خوشه (corosync) هم خودکار مجاز است. بررسی و فعال‌سازی:

bash
pve-firewall compile | head -40
sed -i 's/^enable: 0/enable: 1/' /etc/pve/firewall/cluster.fw
pve-firewall status

اگر دسترسی قطع شد، از کنسول سرور pve-firewall stop را بزنید.

۵. فایروال هر VM

در VM › Firewall همان قانون‌ها را برای هر ماشین تعریف کنید و در Options آن را فعال کنید. کارت شبکه‌ی VM هم باید گزینه‌ی Firewall را تیک‌خورده داشته باشد. این‌طوری ماشین‌های یک شبکه هم از هم جدا می‌شوند.

۶. چند نکته‌ی دیگر

  • رابط وب (8006) را مستقیم روی اینترنت باز نکنید. از VPN مثل WireGuard استفاده کنید.
  • به‌روزرسانی منظم: apt update && apt full-upgrade. فقط از apt full-upgrade استفاده کنید و apt upgrade نزنید، چون ممکن است وابستگی‌ها را ناقص بگذارد.
  • برای ورود SSH از کلید استفاده کنید و ورود رمزی را ببندید.