نصب و امنیت Webmin در Ubuntu 24.04
آموزش کامل نصب Webmin روی Ubuntu 24.04 و ایمنسازی پورت 10000 با استفاده از Let's Encrypt، Fail2ban و SSH tunnel برای جلوگیری از دسترسیهای غیرمجاز.
آنچه در حال ساخت آن هستید
Webmin یک پنل کنترل تحت وب است که یک رابط کاربری مرورگر را برای تمام بخشهای یک سرور Linux فراهم میکند؛ از جمله کاربران، پکیجها، cron jobs، فایروال، Apache، BIND، دیسکها و صدها ماژول دیگر که از طریق HTTPS روی پورت 10000 در دسترس هستند. فرآیند نصب تنها شامل 3 دستور است و حدود 1 دقیقه زمان میبرد. دلیل اینکه بخش دوم این راهنما طولانیتر است این است که Webmin با دسترسی root وارد میشود و میتواند تمام کارهای کاربر root را انجام دهد. یک Webmin که بدون احراز هویت یا با دسترسی باز در دسترس باشد، صرفاً "یک ریسک مدیریتی" نیست؛ بلکه به معنای تسلط کامل بر سرور است که تنها یک صفحه ورود جلوی آن قرار دارد. بنابراین، نصب آن را در 10 دقیقه انجام دهید و سپس بقیه زمان را صرف اطمینان از دسترسی انحصاری خودتان به آن کنید.
پیشنیازها و یک هشدار جدی
یک VPS تازه با سیستمعامل Ubuntu 24.04 KVM که دسترسی root یا یک کاربر sudo داشته باشد. Webmin با زبان Perl نوشته شده و سبک است؛ 1 GB RAM برای آن کافی است و در حالت Idle مصرف آن کمتر از یکچهارم یک گیگابایت است. این سرویس از طریق وبسرور داخلی خود (miniserv.pl) و نه Apache یا nginx، روی پورت TCP 10000 گوش میدهد؛ بنابراین نیازی به نصب هیچ ابزار دیگری از قبل نیست.
قبل از شروع، باید دو مورد را تعیین کنید. اول، حسابی که با آن وارد میشوید: Webmin از طریق PAM با حسابهای Unix احراز هویت میکند، بنابراین با استفاده از رمز عبور Unix آن حساب، به عنوان root یا کاربری در گروه sudo وارد میشوید. تصاویر ابری (Cloud images) معمولاً فقط از طریق کلید SSH هستند و رمز عبور برای کاربر پیشفرض تنظیم نشده است؛ Webmin نمیتواند به حسابهای بدون رمز عبور وارد شود. ابتدا با استفاده از sudo passwd youruser یک رمز عبور تنظیم کنید، در غیر این صورت ورود با وجود تایپ صحیح، با شکست مواجه خواهد شد.
دوم، و این همان هشدار است: پورت 10000 را صرفاً برای اینترنت باز نگذارید و کار را رها نکنید. همین حالا تصمیم بگیرید که آیا میخواهید از طریق یک SSH tunnel به Webmin متصل شوید (روش پیشنهادی، بدون نمایش پورت به بیرون) یا دسترسی را فقط به IP خودتان محدود کنید. این تصمیم بر تمام مراحل زیر تأثیر میگذارد، پس قبل از تغییر در فایروال، هر دو گزینه را مطالعه کنید.
Install Webmin from the official repository
Webmin یک مخزن apt دارای امضای دیجیتال منتشر میکند. اسکریپت نصب، این مخزن و کلید GPG آن را اضافه میکند تا در اجراهای بعدی apt upgrade، Webmin مانند سایر بستهها دریافت شود. با این روش، شما بهجای دانلود یک فایل .deb که قابلیت بهروزرسانی خودکار ندارد، آپدیتهای تایید شده را دریافت میکنید.
curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
sudo sh webmin-setup-repo.shاسکریپت مراحل کار را چاپ کرده و از شما Setup repository? (y/N) میپرسد — پاسخ را y وارد کنید. پس از اتمام کار، بسته را نصب کنید. پرچم --install-recommends وابستگیهای مشترک Perl و SSL را نصب میکند تا در مراحل بعد با خطای نبود کتابخانه (missing-library) مواجه نشوید.
sudo apt-get install --install-recommends webminنام این اسکریپت قبلاً تغییر کرده است — راهنماهای قدیمی به setup-repos.sh اشاره دارند — بنابراین اگر URL مستقیم با خطای 404 مواجه شد، بهجای استفاده از نام قدیمی، دستور یکخطی جدید را مستقیماً از webmin.com/download دریافت کنید. یک نصب صحیح با خطی مشابه Webmin install complete. You can now login to https://your-host:10000/ as root پایان مییابد. سرویس فعال و در حال اجرا است، فایلهای پیکربندی در /etc/webmin قرار دارند، درخواستها در /var/webmin/miniserv.log ثبت میشوند و تلاشهای ناموفق برای ورود به syslog (در Ubuntu 24.04، به journal سیستم) ارسال میشوند.
قبل از باز کردن مرورگر، از فعال بودن و در حال گوش دادن (listening) بودن سرویس مطمئن شوید:
sudo systemctl status webmin --no-pager
sudo ss -tlnp | grep 10000شما به وضعیت active (running) و خطی نیاز دارید که نشان دهد miniserv.pl به 0.0.0.0:10000 متصل شده است — پس از استفاده از تونل زیر، این آدرس به 127.0.0.1:10000 تغییر میکند. اگر ss چیزی روی پورت 10000 نشان نمیدهد، Webmin اجرا نشده است؛ قبل از ادامه کار، journalctl -u webmin -n 50 را مطالعه کنید.
اولین ورود و هشدار گواهینامه (Certificate)
مرورگر خود را به آدرس https://YOUR_SERVER_IP:10000 متصل کنید. در یک سرور تازه نصب شده، دو اتفاق رخ میدهد.
اگر ufw فعال باشد — در ایمیجهای پیشفرض Ubuntu این سرویس غیرفعال است، اما بسیاری از ارائهدهندگان آن را از قبل فعال کردهاند — صفحه اصلاً بارگذاری نمیشود؛ این مورد در بخش حالتهای خطا در ادامه توضیح داده شده است. اگر پورت باز باشد، مرورگر یک صفحه مسدود شده کامل نمایش میدهد: در Chrome با کد NET::ERR_CERT_AUTHORITY_INVALID عبارت "Your connection is not private" و در Firefox با کد SEC_ERROR_UNKNOWN_ISSUER یا عبارت "Warning: Potential Security Risk Ahead" نمایش داده میشود. این وضعیت عادی است و نشاندهنده نفوذ نیست. Webmin هنگام نصب، یک گواهینامه self-signed ایجاد کرده است (/etc/webmin/miniserv.pem) و چون هیچ مرجع صدور گواهینامهای (CA) آن را تأیید نکرده است، مرورگر به صورت خودکار از اعتماد به آن خودداری میکند. اتصال همچنان رمزنگاری شده است؛ فقط تأیید نشده است. فعلاً از مراحل عبور کنید (Advanced و سپس Proceed) — ما در ادامه این گواهینامه را به درستی جایگزین میکنیم.
با استفاده از root یا کاربر sudo و رمز عبور Unix خود وارد شوید؛ سپس به داشبورد System Information هدایت میشوید. یک اشتباه رایج در اینجا، تایپ کردن http:// به جای https:// است. سرویس miniserv در آن پورت با متن دقیق "This web server is running in SSL mode. Try the URL https://..." به پروتکل HTTP پاسخ میدهد — راه حل ساده این است که در نوار آدرس، http را به https تغییر دهید.
تصمیم امنیتی: چگونه به Webmin متصل خواهید شد؟
حالا نوبت به بخش مهم میرسد. یک پنل با دسترسی root نباید در اینترنت عمومی باز باشد و به تلاشهای ورود از سوی تمام اسکنرهای جهان پاسخ دهد. شما دو گزینه قابل دفاع دارید که به ترتیب اولویت آورده شدهاند.
تونل SSH در Option B گزینه بهتری است، زیرا هیچ چیزی را نمایش نمیدهد. استفاده از IP allowlist در Option A در صورتی که IP شما static باشد، قابل قبول است. انجام هیچکدام از این دو، دقیقاً همان اشتباهی است که این راهنما برای جلوگیری از آن نوشته شده است. اگر ترجیح میدهید به جای این دو روش، از طریق یک شبکه خصوصی به Webmin متصل شوید، سرور را پشت یک self-hosted WireGuard VPN قرار دهید و Webmin را به جای آدرس public، به آدرس tunnel bind کنید.
Option A: محدود کردن Webmin به IP شما
در پنل، وارد مسیر Webmin، سپس Webmin Configuration و سپس IP Access Control شوید. گزینه "Only allow from listed addresses" را انتخاب کنید و IP عمومی خود را وارد کنید؛ میتوانید با اجرای دستور curl ifconfig.me در لپتاپ خود، آن را پیدا کنید. تنظیمات را ذخیره کنید. Webmin این مقدار را در خط allow= در فایل /etc/webmin/miniserv.conf مینویسد و سرویس خود را مجدداً راهاندازی میکند.
نکته مهم: اگر IP خانگی شما پویا (dynamic) باشد و تغییر کند، یا در وارد کردن آدرس اشتباه تایپی داشته باشید، دسترسی خود را قطع خواهید کرد. در این حالت، مرورگر پیام "Access denied for <your IP>" را نمایش میدهد و فرم ورود ظاهر نمیشود؛ در این وضعیت هیچ راه دسترسی از طریق وب وجود ندارد. برای رفع مشکل، باید از طریق کنسول سرور با استفاده از SSH یا VNC ارائهدهنده خود اقدام کنید:
sudo nano /etc/webmin/miniserv.conf
# find the line that begins allow=
# correct your IP, or delete the whole line to allow all again
sudo systemctl restart webminحذف خط allow= دسترسی را کاملاً آزاد میکند؛ بنابراین فقط برای بازیابی دسترسی از این روش استفاده کنید و بلافاصله مقدار صحیح را تنظیم نمایید.
Option B: bind to localhost and tunnel over SSH (recommended)
به جای استفاده از allowlist، بهتر است سرویس اصلاً روی interface عمومی گوش دهد (listen). به miniserv دستور دهید که فقط روی loopback bind شود، سپس از طریق یک tunnel رمزگذاری شده SSH که قبلاً به آن اعتماد دارید، به آن متصل شوید.
فایل /etc/webmin/miniserv.conf را ویرایش کنید و یک خط را اضافه یا تغییر دهید:
bind=127.0.0.1با دستور sudo systemctl restart webmin سرویس را restart کنید. اکنون Webmin از طریق اینترنت قابل دسترسی نیست؛ اسکن پورت در پورت 10000 هیچ موردی پیدا نمیکند و بررسی ss که قبلاً انجام دادید، اکنون نشان میدهد که سرویس روی 127.0.0.1:10000 bind شده است. از لپتاپ خود، یک tunnel باز کنید:
ssh -L 10000:localhost:10000 youruser@YOUR_SERVER_IPاین session را باز نگه دارید و به https://localhost:10000 مراجعه کنید. ترافیک در داخل SSH منتقل میشود که قبلاً با کلید شما احراز هویت و رمزگذاری شده است، بنابراین میتوانید با خیال راحت گواهی self-signed را در اینجا تایید کنید؛ لایه SSH وظیفه محافظت اصلی را بر عهده دارد. با بستن session SSH، Webmin نیز از دسترس خارج میشود. نیازی به allowlist، هیچ موردی برای expose کردن، و هیچ سرویس اضافی برای hardening نیست.
اگر bind=127.0.0.1 را تنظیم کنید و tunnel را فراموش کنید، دسترسی از راه دور متوقف میشود؛ این یک ویژگی است، نه یک خطا. برای بازیابی، مانند Option A عمل کنید: از طریق console، خط bind را حذف کنید یا bind=0.0.0.0 را تنظیم کنید، سپس restart کنید. این همان روش tunnelling است که برای دسترسی به a remote development box running Claude Code in tmux استفاده میکنید؛ یک session SSH، همه چیز خصوصی، و هیچ سرویس اضافی که روی interface عمومی گوش دهد.
جایگزینی گواهی self-signed با یک گواهی واقعی
اگر طبق Option A، Webmin را روی یک hostname نمایش میدهید، با استفاده از یک گواهی واقعی Let's Encrypt، هشدار مرورگر را برطرف کنید. شما به یک DNS name نیاز دارید — مثلاً panel.example.com — که دارای یک A record باشد که به سرور اشاره میکند، و سیستمی که در طول فرآیند اعتبارسنجی، به چالش HTTP در پورت 80 پاسخ دهد.
Webmin این قابلیت را به صورت داخلی دارد: Webmin، سپس Webmin Configuration، سپس SSL Encryption، و در نهایت تب Let's Encrypt. نام میزبان (hostname) را وارد کنید، "website root directory" را به مسیری که در پورت 80 برای آن دامنه سرویسدهی میشود، اختصاص دهید و درخواست دهید. Webmin گواهی را دریافت میکند، خطوط certfile= و keyfile= را در فایل miniserv.conf برای شما بهروزرسانی میکند، و قبل از انقضا، آن را بهطور خودکار تمدید میکند. صفحه را بازنشانی کنید تا آیکون قفل نمایش داده شود.
تنها مشکل اصلی: سرور خودِ Webmin روی پورت 10000 اجرا میشود، نه 80؛ بنابراین چالش http-01 به یک وبسرور واقعی — مانند Apache یا nginx — نیاز دارد که برای panel.example.com روی پورت 80 پاسخگو باشد، یا اینکه از اعتبارسنجی مبتنی بر DNS استفاده شود. در یک سرور که فقط Webmin روی آن نصب شده و هیچ سرویسی روی پورت 80 ندارد، درخواست با خطای اعتبارسنجی (validation error) مواجه میشود، مگر اینکه راهی برای دسترسی Let's Encrypt به فایل چالش فراهم کنید. مکانیزمها — یعنی رکوردهای DNS، چالش پورت 80 و تمدید — دقیقاً مشابه صدور گواهی برای هر وبسایت دیگری است. اگر نیاز به اطلاعات بیشتر دارید، راهنمای Let's Encrypt TLS certificates with Certbot and nginx فرآیند اعتبارسنجی و تنظیمات DNS را با جزئیات توضیح میدهد. اگر از روش SSH-tunnel استفاده کردهاید، میتوانید کاملاً از این بخش صرفنظر کنید: استفاده از گواهی self-signed در پشت SSH مشکلی ندارد و یک گواهی واقعی صادر شده برای panel.example.com، در صورت مراجعه به https://localhost:10000، فقط باعث ایجاد هشدار عدم تطابق نام (name-mismatch) میشود.
فعالسازی احراز هویت دو مرحلهای
رمز عبور به تنهایی برای پنل root محافظت ضعیفی محسوب میشود، بنابراین یک فاکتور دوم اضافه کنید. وارد Webmin، سپس Webmin Configuration و سپس Two-Factor Authentication شوید. ارائهدهنده Google Authenticator را انتخاب کنید — این حالت استاندارد TOTP است، بنابراین با Authy، 1Password یا هر اپلیکیشن authenticator دیگری سازگار است — و تنظیمات را ذخیره کنید. Webmin ماژول کوچک Perl مورد نیاز (Authen::OATH به همراه یک QR generator) را نصب و این قابلیت را فعال میکند؛ این مرحله به تنهایی هنوز از هیچ حسابی محافظت نمیکند.
سپس هر حساب کاربری باید دستگاه خود را ثبت (enrol) کند. با فعال بودن 2FA، وارد Webmin، سپس Webmin Users شوید، حساب مورد نظر را انتخاب کنید، گزینه Enable Two-Factor For User را برگزینید و Webmin یک QR code نمایش میدهد؛ آن را با اپلیکیشن اسکن کنید و یک کد تولید شده را برای تایید وارد کنید. از آن پس، هنگام ورود، پس از رمز عبور، سیستم از شما توکن 6 رقمی میخواهد. قبل از Log out کردن، مراحل ثبت را انجام دهید — اگر 2FA فعال باشد اما حساب شما هرگز کدی را اسکن نکرده باشد، همچنان میتوانید این الزام را از طریق کنسول لغو کنید، اما انجام مراحل ثبت در ابتدا بسیار راحتتر است.
افزودن Fail2ban برای مسدود کردن حملات brute-force
حتی یک نقطه اتصال (endpoint) محدود برای ورود، باید تلاشهای ناموفق مکرر را جریمه کند. Webmin گزارش ورودهای ناموفق را در syslog با فرمت webmin[12345]: Invalid login as root from 10.0.0.9، یا Non-existent login as ... برای نام کاربری که حتی یک حساب Unix نیست، ثبت میکند. در Ubuntu 24.04، این خطوط در systemd journal قرار میگیرند، زیرا یک نسخه پیشفرض فاقد /var/log/auth.log است. Fail2ban یک فیلتر پیشفرض webmin-auth دارد که دقیقاً با این دو خط مطابقت دارد؛ همچنین jail زیر backend = systemd را خودش تنظیم میکند، بنابراین نیازی به regex یا مسیر log سفارشی ندارد.
ایجاد /etc/fail2ban/jail.d/webmin.local:
[webmin-auth]
enabled = true
port = 10000
filter = webmin-auth
backend = systemd
maxretry = 4
bantime = 1hبا استفاده از sudo systemctl restart fail2ban بازنشانی کنید، سپس فعال بودن jail را تایید کنید:
sudo fail2ban-client status webmin-authباید لیست jail را با شمارنده ban برابر با 0 در ابتدا مشاهده کنید (در backend مربوط به journal، خط File list: وجود ندارد). برای تست کامل عملکرد، از یک شبکه دیگر چند بار تلاش ناموفق برای ورود انجام دهید، سپس دستور status را مجدداً اجرا کنید و افزایش Currently banned را مشاهده کنید. اگر شمارنده تغییر نکرد، مطمئن شوید که از آدرسی در لیست ignoreip مربوط به Fail2ban تست نمیکنید، و دستور journalctl SYSLOG_IDENTIFIER=webmin را روی سرور اجرا کنید تا مطمئن شوید خطوط Invalid login واقعاً نوشته میشوند. اگر Fail2ban هنوز روی این سیستم نصب نشده است، راهنمای Fail2ban on Ubuntu 24.04 for SSH guide شامل مراحل نصب و jail مربوط به SSH است که باید همزمان با این مورد اجرا شود.
محدود کردن دسترسیهای هر کاربر Webmin
همه کسانی که به پنل نیاز دارند، لزوماً به سطح دسترسی root برای همه موارد نیاز ندارند. در مسیر Webmin, then Webmin Users، حسابهای کاربری جدیدی ایجاد کنید و به هر کاربر فقط ماژولهای مورد نیاز را اختصاص دهید؛ برای مثال، یک اپراتور پشتیبان که فقط به ماژولهای cron و filesystem دسترسی دارد. با ویرایش یک کاربر، فهرستی از تمام ماژولها نمایش داده میشود؛ با غیرفعال کردن یک ماژول، آن مورد از منوی کاربر حذف شده و دسترسی به URLهای مربوط به آن مسدود میشود. این یک روش دفاع لایهای است: حتی اگر یک نشست (session) با سطح دسترسی پایین سرقت شود، در صورتی که ماژول Users در لیست آن نباشد، نمیتواند /etc/shadow را بازنویسی کند.
بهروزرسانی Webmin
از آنجایی که شما از مخزن apt استفاده کردهاید، sudo apt update && sudo apt upgrade نسخههای جدید Webmin را همراه با سایر بخشهای سیستم دریافت میکند. وصلهها را بلافاصله نصب کنید؛ پنلهای مدیریتی هدف اصلی حملات هستند. Webmin میتواند از طریق مسیر Webmin، سپس Webmin Configuration، و سپس Upgrade Webmin نیز بهروزرسانی شود، اما در Ubuntu استفاده از apt تمیزتر است؛ زیرا نسخهها را با سایر مدیریت بستههای سیستم هماهنگ نگه میدارد. این کار را اختیاری ندانید: چندین CVE گذشته در Webmin مربوط به باگهای اجرای کد از راه دور (remote-code-execution) بودند و تنها تفاوت بین حالت «وصله شده» و «هک شده»، سرعت اجرای بهروزرسانی توسط مدیر سیستم بود.
حالتهای خطا و پیامهایی که مشاهده خواهید کرد
"Your connection is not private" / NET::ERR_CERT_AUTHORITY_INVALID. این پیام در اولین بار لود شدن نمایش داده میشود. علت: گواهی self-signed که Webmin هنگام نصب ساخته است، فاقد issuer معتبر است. این یک حمله نیست؛ کانال رمزنگاری شده است، اما تایید نشده است. راه حل: فعلاً از هشدار عبور کنید، سپس یک گواهی واقعی Let's Encrypt صادر کنید، یا اگر از طریق SSH tunnel به Webmin متصل میشوید، آن را برای همیشه قبول کنید.
"This web server is running in SSL mode. Try the URL https://..." شما http://server:10000 را تایپ کردهاید. سرویس miniserv در آن پورت فقط از پروتکل TLS پشتیبانی میکند و این موضوع را به صورت متن ساده به شما اطلاع میدهد. راه حل: در نوار آدرس، http را به https تغییر دهید.
Page times out — ERR_CONNECTION_TIMED_OUT / "This site can't be reached". درخواست هرگز به Webmin نمیرسد. در Ubuntu این مشکل تقریباً همیشه به دلیل مسدود شدن پورت 10000 توسط ufw است. با دستور sudo ufw status وضعیت را بررسی کنید؛ اگر پورت 10000 در لیست نیست، یا آن را با sudo ufw allow 10000/tcp باز کنید و یا بهتر است آن را بسته نگه دارید و از SSH tunnel در Option B استفاده کنید. به این تفاوت دقت کنید: timeout به این معناست که یک فایروال بستهها را بدون اطلاع حذف میکند، در حالی که ERR_CONNECTION_REFUSED به این معناست که پورت در دسترس است اما Webmin اجرا نشده است — وضعیت sudo systemctl status webmin را بررسی کنید.
"Access denied for <your IP>." شما در بخش IP Access Control تحت Option A تنظیماتی اعمال کردهاید و آدرس فعلی شما در لیست مجاز نیست؛ مثلاً یک IP پویا که تغییر کرده یا یک غلط تایپی. هیچ راهی برای بازگشت از طریق مرورگر وجود ندارد. راه حل از طریق کنسول: خط allow= را در فایل /etc/webmin/miniserv.conf ویرایش کنید، آن را اصلاح یا حذف کنید و دستور sudo systemctl restart webmin را اجرا کنید.
"Login failed. Please try again." با اطلاعات ورودی که میدانید درست هستند. حساب کاربری فاقد رمز عبور Unix است، که در ایمیجهای ابری (cloud images) که فقط از کلید استفاده میکنند، استاندارد است. Webmin از طریق PAM و با استفاده از رمز عبور Unix احراز هویت میکند، اما آن رمز عبور برای کاربر وجود ندارد. راه حل: دستور sudo passwd youruser را در سرور اجرا کنید، سپس وارد شوید. اگر /var/webmin/miniserv.log مقدار Non-existent login as ... را نشان داد، یعنی نام کاربری که تایپ میکنید اصلاً یک حساب کاربری Unix نیست.
برای مدیریت بیش از چند سرور، اتوماسیون نسبت به استفاده از کنترل پنل روی هر دستگاه، مقیاسپذیری بهتری دارد: اولین Ansible playbook شما نقطه شروع این کار است.
FAQ
آیا قرار دادن Webmin در معرض اینترنت عمومی ایمن است؟
با یک Webmin در معرض اینترنت مانند یک root shell که صفحه ورود دارد برخورد کنید، زیرا دقیقاً همینگونه است. امنیت آن تنها در صورت استفاده از لایههای حفاظتی فراهم میشود: یک certificate واقعی، احراز هویت دو مرحلهای (2FA)، Fail2ban، و یا یک IP allowlist محدود یا بهتر از آن، عدم قرارگیری در معرض اینترنت عمومی. کمخطرترین تنظیمات، متصل کردن Webmin به 127.0.0.1 و دسترسی به آن از طریق یک SSH tunnel است؛ در این حالت پورت 10000 در اینترنت عمومی به هیچکس پاسخ نمیدهد.
چگونه هشدار certificate در Webmin را برطرف کنم؟
هشدار (NET::ERR_CERT_AUTHORITY_INVALID) به این دلیل ظاهر میشود که Webmin با یک self-signed certificate عرضه میشود. یک certificate واقعی از مسیر Webmin، Webmin Configuration، SSL Encryption، Let's Encrypt دریافت کنید؛ در این حالت باید از یک DNS name استفاده کنید که به سرور اشاره دارد و بتواند چالش port-80 را برای اعتبارسنجی پاسخ دهد. اگر همیشه از طریق یک SSH tunnel به localhost به Webmin متصل میشوید، این هشدار بیخطر است — زیرا SSH قبلاً اتصال را رمزنگاری و احراز هویت کرده است — و میتوانید با خیال راحت self-signed certificate را تایید کنید.
چگونه دسترسی به Webmin را فقط به IP خود محدود کنم؟
به مسیر Webmin، Webmin Configuration، IP Access Control بروید، گزینه "Only allow from listed addresses" را انتخاب کنید و IP عمومی خود را از curl ifconfig.me وارد کنید. Webmin این مورد را در خط allow= از /etc/webmin/miniserv.conf ذخیره میکند. مراقب IPهای خانگی پویا (dynamic) باشید: اگر IP شما تغییر کند، دسترسی شما قطع میشود و باید خط allow= را از طریق کنسول سرور اصلاح کنید؛ بنابراین در عمل، استفاده از یک آدرس استاتیک یا روش SSH-tunnel قابل اعتمادتر است.
چرا با وجود رمز عبور صحیح، ورود من با خطا مواجه میشود؟
Webmin از طریق PAM و در برابر رمز عبور Unix شما احراز هویت میکند. در تصاویر ابری (cloud images)، معمولاً فقط از کلید استفاده میشود و رمز عبور برای حساب کاربری پیشفرض تنظیم نشده است؛ بنابراین چیزی برای تطبیق توسط PAM وجود ندارد و ورود رد میشود. دستور sudo passwd youruser را در سرور اجرا کنید تا رمز عبور تنظیم شود، سپس وارد شوید. وجود یک خط Non-existent login as ... در /var/webmin/miniserv.log به این معناست که نام کاربری خودش یک حساب کاربری واقعی Unix نیست.
Webmin در مقایسه با SSH معمولی چه مزایایی دارد؟
Webmin یک لایه برای تسهیل کار و مشاهده قابلیتها است. این ابزار برای مرور فایلهای log، مدیریت کاربران و cron، ویرایش قوانین firewall، و مشاهده وضعیت دیسک و سرویسها بدون نیاز به حفظ کردن تمام دستورات، بسیار کاربردی است؛ این ویژگی برای مدیران موردی یا تیمهایی با مهارتهای متفاوت مفید است. SSH معمولی سریعتر است، قابلیت اسکریپتنویسی دارد و برای کارهای روزمره سطح حمله بسیار کمتری دارد. بسیاری از مدیران از هر دو استفاده میکنند: SSH برای کارهای روزانه، و Webmin متصل به localhost در پشت یک tunnel برای کارهای موردی با استفاده از رابط گرافیکی.