دانشنامهدواپسسایرمجازی سازیمجازی سازی Proxmox

راهنمای کامل Hardening Proxmox VE 2026: جلوگیری از هک شدن در دنیای واقعی

امنیت Proxmox VE در برابر حملات واقعی: چک‌لیست عملی و تست‌شده

در دنیای امروز که مجازی‌سازی به یکی از پایه‌های اصلی زیرساخت‌های IT تبدیل شده، Proxmox Virtual Environment (Proxmox VE) به عنوان یک پلتفرم متن باز قدرتمند، جایگاه ویژه‌ای در میان کاربران خانگی (Home Lab)، شرکت‌های کوچک و حتی سازمان‌های بزرگ پیدا کرده است. این هایپروایزر که بر پایه سیستم عامل دبیان ساخته شده و از KVM برای ماشین‌های مجازی و LXC برای کانتینرها استفاده می‌کند، ترکیبی بی‌نظیر از سادگی، انعطاف‌پذیری، قابلیت‌های پیشرفته مانند High Availability، Live Migration، ZFS و Ceph را ارائه می‌دهد، بدون نیاز به پرداخت هزینه‌های سنگین لایسنس‌هایی مانند VMware یا Hyper-V.

نسخه Proxmox VE 9.1 (که در نوامبر ۲۰۲۵ منتشر شد) با پایه Debian 13 (Trixie) و کرنل به‌روز ۶.۱۷، ویژگی‌های جدیدی مانند پشتیبانی بهتر از Nested Virtualization، Intel TDX، ایجاد کانتینر از تصاویر OCI، بهبودهای عملکرد بکاپ و اسنپ‌شات، و اقدامات امنیتی بیشتر در برابر آسیب‌پذیری‌های CPU مانند Spectre/VMScape اضافه کرده است. اما همین قدرت و دسترسی آسان، Proxmox را به هدفی جذاب برای مهاجمان تبدیل کرده است. در سال‌های اخیر شاهد افزایش حملات به سرورهای مجازی‌سازی بوده‌ایم؛ از brute-force روی SSH گرفته تا بهره‌برداری از آسیب‌پذیری‌های وب‌اینترفیس (مانند XSSهای گزارش‌شده در نسخه‌های قبلی مانند CVE-2025-57540 و مشابه‌ها)، VM escape (هرچند نادر)، و حتی حملات زنجیره‌ای که از طریق یک VM آلوده به هاست نفوذ می‌کنند.

چرا امنیت Proxmox اینقدر مهم است؟

در محیط هوم‌لب، بسیاری از کاربران Proxmox را مستقیماً به اینترنت متصل می‌کنند یا پورت ۸۰۰۶ (وب‌اینترفیس) را باز می‌گذارند تا از راه دور به آن دسترسی داشته باشند. اگر هک شود، مهاجم می‌تواند به تمام ماشین‌های مجازی، داده‌ها، عکس‌ها، فایل‌های خانوادگی، سرورهای شخصی و حتی کلیدهای SSH و رمزهای عبور دسترسی پیدا کند.

در محیط پروداکشن، یک نفوذ می‌تواند منجر به downtime طولانی، از دست رفتن داده‌های حساس مشتریان، نقض قوانین حفاظت داده، جریمه‌های سنگین و از دست رفتن اعتماد شود. حتی اگر Proxmox مستقیماً در اینترنت نباشد، زنجیره تأمین حمله (supply chain) از طریق یک VM یا کانتینر آسیب‌پذیر ممکن است رخ دهد.

آمارها نشان می‌دهد که بیش از ۷۰٪ حملات موفق به سرورها از طریق SSH ضعیف، رمزهای عبور پیش‌فرض/ضعیف، به‌روزرسانی نکردن به‌موقع یا فایروال غیرفعال اتفاق می‌افتد. Proxmox به‌صورت پیش‌فرض امن است، اما «امن به‌صورت پیش‌فرض» به معنای «غیرقابل نفوذ» نیست.

متأسفانه بسیاری از کاربران تصور می‌کنند که چون Proxmox منبع‌باز است و جامعه بزرگی دارد، خودبه‌خود امن می‌ماند. اما واقعیت این است که امنیت یک فرآیند مداوم است، نه یک تنظیم یک‌باره. بدون hardening مناسب، حتی بهترین هایپروایزر دنیا هم می‌تواند نقطه ضعف زیرساخت شما شود.

این مقاله دقیقاً برای پر کردن همین خلأ نوشته شده است. در ادامه، یک چک‌لیست عملی و گام‌به‌گام از بهترین شیوه‌های امنیتی (بر اساس توصیه‌های رسمی Proxmox، بنچمارک CIS Debian، راهنماهای جامعه مانند HomeSecExplorer و تجربیات واقعی کاربران در سال ۲۰۲۵–۲۰۲۶) ارائه می‌دهیم. از به‌روزرسانی‌های خودکار و فایروال داخلی گرفته تا غیرفعال کردن root SSH، فعال‌سازی 2FA، رمزنگاری دیسک، جداسازی شبکه با VLAN، استفاده از گواهی‌های معتبر TLS و نظارت پیشرفته، همه مواردی که تفاوت بین یک سیستم «کار می‌کند» و یک سیستم «امن و مقاوم در برابر هک» را رقم می‌زنند.

هدف ما این است که پس از خواندن این مقاله، بتوانید Proxmox VE خود را به سطحی برسانید که حتی در برابر حملات هدفمند و متوسط تا پیشرفته هم مقاومت قابل قبولی داشته باشد، چه در خانه و چه در محیط کاری. امنیت کامل وجود ندارد، اما کاهش چشمگیر سطح ریسک کاملاً ممکن است.

اگر آماده‌اید تا هایپروایزر قدرتمند خود را واقعاً ایمن کنید، با ما در اکتوبیت همراه باشید.

۱. به‌روزرسانی منظم سیستم

به‌روزرسانی منظم سیستم یکی از مهم‌ترین و پایه‌ای‌ترین اقدامات امنیتی در Proxmox VE (و هر سیستم لینوکسی دیگر) است. بسیاری از آسیب‌پذیری‌های شناخته‌شده (مانند CVEهای مربوط به کرنل، QEMU، LXC، OpenSSH یا بسته‌های Debian پایه) دقیقاً با به‌روزرسانی به‌موقع رفع می‌شوند. اگر سیستم شما به‌روز نباشد، حتی با فایروال قوی و 2FA، یک exploit عمومی می‌تواند سرور شما را به خطر بیندازد.

Proxmox VE بر پایه Debian ساخته شده و از کرنل لینوکس استفاده می‌کند. به‌روزرسانی‌ها شامل:

  • Security patches برای Debian و Proxmox
  • Bug fixes که گاهی پایداری VMها و HA را بهبود می‌دهند
  • به‌روزرسانی‌های هسته‌ای (kernel) که اغلب نیاز به reboot دارند

دو روش اصلی برای به‌روزرسانی

روش ۱: به‌روزرسانی دستی (توصیه‌شده برای محیط‌های پروداکشن)

این روش کنترل کامل به شما می‌دهد و بهترین انتخاب برای اکثر کاربران است (به‌خصوص اگر HA cluster دارید یا VMهای مهم اجرا می‌کنید).

گام‌به‌گام:

۱. ورود به shell (از طریق SSH یا کنسول وب Proxmox)

۲. به‌روزرسانی لیست بسته‌ها با apt update

۳. بررسی لیست به‌روزرسانی‌ها (اختیاری، اما مفید) با:

apt list --upgradable

۴. اعمال به‌روزرسانی‌ها (حتماً از `dist-upgrade` یا `full-upgrade` استفاده کنید، نه `upgrade` ساده!):apt dist-upgrade یا معادل جدیدتر: apt full-upgrade

هشدار مهم: در Proxmox هرگز از `apt upgrade` استفاده نکنید! این دستور ممکن است وابستگی‌ها را درست مدیریت نکند و باعث ناسازگاری بسته‌های Proxmox شود.

۵. بررسی نیاز به reboot:

needrestart

یا

cat /var/run/reboot-required

اگر فایلی وجود داشت یا needrestart سرویس/کرنل را نشان داد → reboot کنید (قبلش VMها را migrate یا shutdown کنید اگر cluster دارید).

۶. به‌روزرسانی از طریق GUI (وب اینترفیس):

– به Node → Updates بروید
– Refresh بزنید
– Upgrade را کلیک کنید (این کار دقیقاً `apt dist-upgrade` را در پس‌زمینه اجرا می‌کند)

روش ۲: به‌روزرسانی خودکار امنیتی با `unattended-upgrades` (مناسب هوم‌لب یا محیط‌های کم‌ریسک)

این ابزار فقط به‌روزرسانی‌های امنیتی را به‌صورت خودکار نصب می‌کند (نه همه بسته‌ها) و ریسک کمتری دارد.

نصب و پیکربندی گام‌به‌گام (بر اساس توصیه‌های جامعه Proxmox در ۲۰۲۵–۲۰۲۶):

۱. نصب بسته:

apt update
apt install unattended-upgrades

۲. فعال‌سازی اولیه (در طول نصب از شما می‌پرسد – بله بزنید، یا دستی):

dpkg-reconfigure unattended-upgrades

گزینه “Yes” را انتخاب کنید.

۳. ویرایش فایل اصلی پیکربندی (مهم‌ترین بخش – برای شامل کردن بسته‌های Proxmox):
فایل را باز کنید:

nano /etc/apt/apt.conf.d/50unattended-upgrades

بخش `Unattended-Upgrade::Origins-Pattern` را پیدا کنید و مطمئن شوید شامل Proxmox باشد (این خطوط را اضافه/ویرایش کنید):

Unattended-Upgrade::Origins-Pattern {
“origin=Debian,codename=${distro_codename},label=Debian-Security”;
“origin=Debian,codename=${distro_codename}-security,label=Debian-Security”;
“origin=Proxmox,label=Proxmox Debian Repository”;
};

همچنین پیشنهاد می‌شود این گزینه‌ها را اضافه/تغییر دهید (برای ایمنی بیشتر):

Unattended-Upgrade::MinimalSteps “false”;
Unattended-Upgrade::Automatic-Reboot “false”; // یا “true” اگر ریسک reboot را قبول دارید
Unattended-Upgrade::Automatic-RebootWithUsers “false”;
APT::Periodic::Unattended-Upgrade “1”;

۴. تست پیکربندی:

unattended-upgrades –dry-run –debug

این دستور شبیه‌سازی می‌کند بدون نصب واقعی.

۵. فعال بودن سرویس را چک کنید:

systemctl status unattended-upgrades.timer

نکات مهم:

– در محیط پروداکشن یا کلاستر، unattended-upgrades را فقط برای security updates فعال کنید و reboot خودکار را خاموش نگه دارید.
– اگر از no-subscription repository استفاده می‌کنید (که اکثر هوم‌لب‌ها این‌گونه‌اند)، مطمئن شوید repo درست تنظیم شده:

deb http://download.proxmox.com/debian/pve trixie pve-no-subscription

(در `/etc/apt/sources.list.d/pve-no-subscription.list` یا مشابه)

۲. فعال کردن فایروال Proxmox

برای افزایش امنیت در Proxmox VE، فعال‌سازی و پیکربندی صحیح فایروال داخلی در سه سطح Datacenter، Node (هاست) و VM/Container بسیار مهم است.

در Proxmox VE، فایروال داخلی (بر پایه iptables/nftables) به صورت سلسله‌مراتبی (hierarchical) کار می‌کند و سه سطح اصلی دارد:

  1. Datacenter (سطح دیتاسنتر/کلاستر)
  2. Node (سطح هر هاست فیزیکی)
  3. VM/CT (سطح ماشین مجازی یا کانتینر)

وقتی یک rule (قانون) می‌سازید، محل ساخت آن (Datacenter یا Node) تفاوت‌های مهمی در دامنه اعمال، اولویت (precedence) و رفتار ایجاد می‌کند. مهم‌ترین نکته این است که قوانین Datacenter و Node فقط روی ترافیک مربوط به خود هاست (Node) اعمال می‌شوند، نه روی VMها/CTها (مگر اینکه تنظیم خاصی وجود داشته باشد).

اگر در Datacenter یک قانون DROP برای یک پورت خاص بسازید، اما در Node همان پورت را ACCEPT کنید، روی آن نود خاص، آن پورت باز می‌ماند (override اتفاق می‌افتد).

برای اینکه هر قانونی کار کند، اول باید Firewall را در Datacenter → Firewall → Options فعال کنید (Enable: Yes). سپس برای هر نود می‌توانید در Node → Firewall → Options فعال/غیرفعال کنید (اگر خاموش باشد، قوانین آن نود اعمال نمی‌شود).

در ادامه مراحل عملی و اصولی را خواهیم گفت:

فعال‌سازی فایروال در سطح Datacenter

۱. وارد Web Interface شوید:

https://IP-Server:8006

۲. از منوی سمت چپ:

Datacenter → Firewall

۳. به تب Options بروید.

۴. گزینه Firewall را روی Yes قرار دهید. این مرحله فقط فایروال را در سطح کلی فعال می‌کند، اما هنوز قانونی اعمال نشده است. البته به خاطر داشته باشید قبل از فعال کردن فایروال، قسمت Input Policy را در حالت Accept بگذارید وگرنه دسترسی خودتان نیز قطع می‌شود.

فعال‌سازی فایروال در سطح Node

حالا باید قوانین مجاز (ALLOW) تعریف کنیم.  ایجاد قانون برای پورت ۸۰۰۶ (وب اینترفیس):

وارد مسیر زیر شوید:

Node → Firewall → Rules → Add

تنظیمات پیشنهادی:

* Direction: `IN`
* Action: `ACCEPT`
* Protocol: `TCP`
* Destination Port: `8006`
* Source: آی‌پی مدیریتی خودتان (مثلاً ۱۹۲.۱۶۸.۱.۰/۲۴)

توصیه امنیتی: به جای Allow برای همه (`۰.۰.۰.۰/۰`) فقط شبکه مدیریت خودتان را مجاز کنید.

فعال‌سازی فایروال در سطح VM

فعال‌سازی فایروال برای VM یا Container

مسیر:

VM → Firewall → Options

Firewall = Yes

سپس در تب Rules می‌توانید قوانین جداگانه برای همان ماشین تعریف کنید.

۳. امنیت SSH

امنیت SSH یکی از حیاتی‌ترین بخش‌های hardening در Proxmox VE است، چون SSH دروازه اصلی دسترسی به هاست است و اکثر حملات اولیه (مانند brute-force) از طریق آن انجام می‌شود. Proxmox VE بر پایه Debian است، بنابراین تنظیمات SSH همانند سیستم‌های لینوکسی استاندارد انجام می‌شود، اما با توجه به نیازهای کلاستر (مانند ارتباط بین نودها) باید با احتیاط اعمال شود.

غیرفعال کردن ورود مستقیم root

چرا مهم است؟ ورود مستقیم با root خطرناک است؛ اگر رمز عبور root ضعیف باشد یا brute-force شود، مهاجم مستقیماً کنترل کامل سیستم را می‌گیرد. بهترین شیوه: ورود root را کاملاً ممنوع کنید و از یک کاربر معمولی با sudo استفاده کنید (یا فقط کلید SSH برای root).

در کلاستر، نودها برای برخی عملیات (مثل join کردن نود جدید یا برخی syncها) از SSH root استفاده می‌کنند، اما بعد از join، عمدتاً به کلیدهای SSH وابسته می‌شوند. بنابراین می‌توانید PermitRootLogin prohibit-password یا no بگذارید، اما برای اضافه کردن نود جدید ممکن است موقتاً نیاز به رمز عبور داشته باشید.

فایل کانفیگ را ویرایش کنید:

vim /etc/ssh/sshd_config

تغییرات زیر را اعمال کنید:

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

فایل را ذخیره کرده و سرویس ssh را restart کنید.

systemctl restart ssh

تست قبل از خروج: از یک ترمینال دیگر مطمئن شوید که با کلید وارد می‌شوید!

تغییر پورت پیش‌فرض SSH از ۲۲ به پورت دیگر

بسیاری از بات‌های brute-force فقط پورت ۲۲ را اسکن می‌کنند. اما توجه: این کار حمله را متوقف نمی‌کند، فقط کاهش می‌دهد (ابزارهای مدرن همه پورت‌ها را اسکن می‌کنند).

نکته ویژه Proxmox (کلاستر): اگر کلاستر دارید، تغییر پورت ۲۲ توصیه نمی‌شود چون:

– نودها برای corosync/SSH به پورت ۲۲ نیاز دارند.
– مهاجرت VM، HA و join نود جدید ممکن است مشکل‌ساز شود.
– باید در همه نودها تغییر دهید و ~/.ssh/config کلاینت را تنظیم کنید.

فایل کانفیگ را ویرایش کنید:

vim /etc/ssh/sshd_config

تغییرات زیر را اعمال کنید:

Port 2222 # یا هر پورت بالا (بالای ۱۰۲۴)

نکته مهم: فراموش نکنید که فایروال Proxmox را بروز کنید و پورت جدید را به آن اضافه نمایید.

فایل را ذخیره کرده و سرویس ssh را restart کنید.

systemctl restart ssh

۳. فعال کردن احراز هویت دو مرحله‌ای (2FA)

فعال کردن احراز هویت دو مرحله‌ای (2FA / TFA) یکی از مؤثرترین لایه‌های امنیتی برای وب اینترفیس Proxmox VE است. این قابلیت از نوع TOTP (Time-based One-Time Password) پشتیبانی می‌کند که با اپ‌های authenticator مانند Google Authenticator کار می‌کند.

2FA فقط برای وب اینترفیس (پورت ۸۰۰۶) اعمال می‌شود، نه برای SSH (مگر اینکه دستی PAM را تنظیم کنید که پیچیده است و توصیه نمی‌شود).

فعال‌سازی realm-wide است (یعنی برای همه کاربران یک realm مثل pam یا pve اعمال می‌شود) – نمی‌توانید فقط برای یک کاربر اجباری کنید بدون تأثیر روی بقیه.

هشدار جدی: اگر 2FA را برای root@pam فعال کنید و QR کد را از دست بدهید یا اپ authenticator را حذف کنید، ممکن است lock out شوید. همیشه ابتدا برای یک کاربر تست (غیر root) تنظیم کنید یا recovery key نگه دارید.

روش گام‌به‌گام فعال‌سازی TOTP 2FA:

گام ۱: ورود به وب اینترفیس: با کاربر root@pam (یا کاربر ادمین با مجوز کامل) لاگین کنید.

گام ۲: به آدرس زیر بروید:

Datacenter → Permissions → Two-Factor → Add → TOTP

در پنجره باز شده:

– User: کاربری که می‌خواهید 2FA برایش فعال شود (مثلاً root@pam یا admin@pve)
– Description: چیزی مثل “Google Authenticator” بنویسید (اختیاری اما مفید)
– Issuer: معمولاً “Proxmox VE” باقی بگذارید

اسکن QR کد با اپ Authenticator

– اپ را روی گوشی باز کنید (Google Authenticator / 2FAS / Authy).
– گزینه Scan a QR code یا Add account را بزنید.
– QR کد را اسکن کنید.
– اپ یک ورودی جدید اضافه می‌کند (مثل “Proxmox VE – pve: root”) و هر ۳۰ ثانیه کد ۶ رقمی تولید می‌کند.

مهم: secret key متنی را جایی امن ذخیره کنید (اگر گوشی گم شد، می‌توانید دستی وارد کنید).

اگر lock out شدید (recovery):

– از طریق SSH با root لاگین کنید و فایل زیر را ویرایش کنید:

vim /etc/pve/priv/tfa.cfg

خط مربوط به کاربر (مثل root@pam) را حذف کنید.

۴. رمزنگاری دیسک‌ها

رمزنگاری دیسک‌ها (Full Disk Encryption یا Host-level Encryption) یکی از قوی‌ترین لایه‌های امنیتی برای حفاظت از داده‌های حساس در Proxmox VE است. این کار تضمین می‌کند که اگر کسی به سرور فیزیکی دسترسی پیدا کند (سرقت، توقیف، یا دسترسی غیرمجاز به دیتاسنتر)، بدون دانستن passphrase (رمز عبور) نتواند به محتوای دیسک‌ها (شامل فایل‌های VM/CT، کانفیگ‌ها، کلیدهای SSH، رمزهای عبور ذخیره‌شده در /etc/pve و غیره) دسترسی داشته باشد.

در Proxmox VE، دو رویکرد اصلی وجود دارد:

– LUKS (Linux Unified Key Setup) برای رمزنگاری بلوک‌های دیسک (مانند پارتیشن root یا LVM).
– ZFS native encryption (اگر از ZFS استفاده می‌کنید، که توصیه رسمی Proxmox است).

نکته کلیدی: نصب‌کننده رسمی Proxmox VE گزینه مستقیم LUKS برای root ندارد (برخلاف ZFS که encryption دارد). بنابراین معمولاً دو راه وجود دارد:

۱. نصب تازه: ابتدا Debian را با LUKS نصب کنید، سپس Proxmox را روی آن اضافه کنید.
2. سیستم موجود: رمزنگاری را به صورت دستی اضافه کنید (پیچیده و ریسکی – نیاز به بکاپ کامل).

نمایش بیشتر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا