SSD Nodes Learn Hosting plans →
الأدلة Matt Connorبقلم Matt Connor

تثبيت Webmin على Ubuntu 24.04 وتأمينه

ثبّت Webmin على Ubuntu 24.04 ثم أمّنه عبر نفق SSH أو قائمة IP، وشهادة Let's Encrypt حقيقية، والمصادقة الثنائية، وFail2ban للمنفذ 10000.

ما الذي ستبنيه

Webmin لوحة تحكم عبر الويب توفّر واجهة متصفح لخادم Linux بالكامل، بما في ذلك المستخدمون، والحزم، ومهام cron، وجدار الحماية، وApache، وBIND، والأقراص، ومئات الوحدات الأخرى. ويمكن الوصول إليها عبر HTTPS على المنفذ 10000. يتكوّن التثبيت نفسه من ثلاثة أوامر ويستغرق نحو دقيقة واحدة. والسبب في أن هذا الدليل يخصّص معظم طوله للنصف الثاني هو أن Webmin يسجّل الدخول بصفة root ويمكنه تنفيذ أي إجراء يستطيع root تنفيذه. لا يُعد Webmin المفتوح على نطاق واسع أو غير المصادق عليه «خطراً تجب إدارته»، بل يعني اختراق الخادم بالكامل مع صفحة تسجيل دخول أمامه. لذلك ثبّته خلال عشر دقائق، ثم خصّص بقية الساعة للتأكد من أنك وحدك تستطيع الوصول إليه.

المتطلبات الأساسية وتحذير صريح

تحتاج إلى KVM VPS جديد يعمل بنظام Ubuntu 24.04، مع حساب root أو مستخدم يملك صلاحيات sudo. Webmin مكتوب بلغة Perl وخفيف، وتكفيه ذاكرة RAM بسعة 1 GB، كما يستهلك عند الخمول أقل بكثير من ربع GB. يستمع إلى TCP على المنفذ 10000 عبر خادم الويب المضمّن الخاص به (miniserv.pl)، وليس عبر Apache أو nginx، لذلك لا تحتاج إلى تثبيت أي شيء آخر أولاً.

يجب اتخاذ قرارين قبل البدء. أولاً، حدّد الحساب الذي ستسجّل الدخول به. يصادق Webmin على حسابات Unix عبر PAM، لذلك تسجّل الدخول باستخدام root أو مستخدم ضمن المجموعة sudo، وباستخدام كلمة مرور Unix الخاصة بذلك الحساب. تكون صور الأنظمة السحابية عادةً مهيّأة لاستخدام المفاتيح فقط، من دون تعيين كلمة مرور للمستخدم الافتراضي، ولا يستطيع Webmin تسجيل الدخول إلى حساب بلا كلمة مرور. عيّن كلمة مرور باستخدام sudo passwd youruser أولاً، وإلا فسيفشل تسجيل الدخول مهما كتبت.

ثانياً، وهذا هو التحذير: لا تفتح المنفذ 10000 على الإنترنت وتتركه مكشوفاً. قرّر الآن ما إذا كنت ستصل إلى Webmin عبر نفق SSH، وهو الخيار الموصى به لأنه لا يعرّض أي منفذ للخارج، أو ستقيّد الوصول إليه بعنوان IP الخاص بك فقط. يؤثر هذا القرار وحده في جميع الخطوات التالية، لذلك اقرأ الخيارين قبل تعديل جدار الحماية.

ثبّت Webmin من المستودع الرسمي

ينشر Webmin مستودع apt موقّعاً. يضيف script الإعداد المستودع ومفتاح توقيع 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

يعرض script ما سيفعله ثم يطلب Setup Webmin stable repository? (y/N). أجب بـy. عند اكتماله، ثبّت الحزمة. يجلب الخيار --install-recommends تبعيات Perl وSSL الشائعة للوحدات، حتى لا تفشل الوحدات الفردية لاحقاً بسبب أخطاء المكتبات المفقودة.

sudo apt-get install --install-recommends webmin

سبق أن أعاد Webmin تسمية هذا script. تشير الأدلة الأقدم إلى setup-repos.sh. لذلك، إذا أعاد الرابط المباشر الخطأ 404، فاحصل على one-liner الحالي مباشرةً من webmin.com/download بدلاً من تثبيت اسم محدد. ينتهي التثبيت الصحيح بسطر مثل Webmin install complete. You can now login to https://your-host:10000/ as root. تكون الخدمة مفعّلة وقيد التشغيل، ويقع الإعداد ضمن /etc/webmin، وتُسجَّل الطلبات في /var/webmin/miniserv.log، بينما تُرسل محاولات تسجيل الدخول الفاشلة إلى syslog، أو إلى systemd journal في Ubuntu 24.04.

تأكد من أن الخدمة تعمل فعلاً وتستمع قبل أن تفتح المتصفح:

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 قبل المتابعة.

تسجيل الدخول الأول وتحذير الشهادة

وجّه متصفحك إلى https://YOUR_SERVER_IP:10000. تحدث مشكلتان على الخادم الجديد.

إذا كان ufw مفعّلاً، فلن تُحمّل الصفحة إطلاقاً. تكون صورة خادم Ubuntu غير مفعّلة له افتراضياً، لكن العديد من مزوّدي الخدمة يفعّلونه مسبقاً. يوضَّح هذا الأمر ضمن أوضاع الفشل أدناه. إذا كان المنفذ مفتوحاً، يعرض متصفحك صفحة حظر كاملة: "اتصالك ليس خاصاً" مع الرمز NET::ERR_CERT_AUTHORITY_INVALID في Chrome، أو SEC_ERROR_UNKNOWN_ISSUER / "تحذير: خطر أمني محتمل" في Firefox. هذا متوقع ولا يعني حدوث اختراق. أنشأ Webmin شهادة موقّعة ذاتياً وقت التثبيت (/etc/webmin/miniserv.pem). وبما أنّ سلطة شهادات لا تصادق عليها، يرفض المتصفح الوثوق بها تلقائياً. يظل الاتصال مشفّراً، لكنه غير موثَّق من سلطة شهادات. تجاوز التحذير مؤقتاً (Advanced، ثم Proceed)، وسنستبدل هذه الشهادة بالطريقة الصحيحة لاحقاً.

سجّل الدخول باستخدام root أو باستخدام مستخدم sudo وكلمة مرور Unix الخاصة به، وستصل إلى لوحة معلومات النظام. من الأخطاء الشائعة هنا كتابة http:// بدلاً من https://. يجيب miniserv عبر HTTP غير المشفّر على ذلك المنفذ بالنص الحرفي "يعمل خادم الويب هذا في وضع SSL. جرّب عنوان URL https://...". والإصلاح هو تغيير http إلى https حرفياً في شريط العناوين.

قرار الأمان: كيف ستصل إلى Webmin؟

هذا هو الجزء المهم. يجب ألا تكون لوحة ذات صلاحيات مكافئة لـroot متاحةً على الإنترنت العام وتستجيب لمحاولات تسجيل الدخول من كل أدوات الفحص في العالم. لديك خياران يمكن تبريرهما، بالترتيب المفضّل. تواجه كل واجهة إدارة مستضافة ذاتياً السؤال نفسه، ولذلك تعتمد سلامة Vaultwarden على نقطة الإدارة وملف النسخ الاحتياطي، لا على التشفير.

يُعد نفق SSH في الخيار B أفضل، لأنه لا يعرّض أي شيء على الإطلاق. وتُعد قائمة السماح بعناوين IP في الخيار A مقبولة إذا كان عنوانك ثابتاً. أما عدم استخدام أيٍّ منهما فهو الخطأ الذي أُعدّ هذا الدليل بالكامل لمنعه. إذا كنت تفضّل الوصول إلى Webmin عبر شبكة خاصة بدلاً من الخيارين، فضع الخادم خلف شبكة WireGuard VPN مستضافة ذاتياً، واربط Webmin بعنوان النفق بدلاً من العنوان العام.

الخيار 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 المنزلي قد يكون ديناميكياً ويتغير، أو قد تُدخل العنوان خطأً. عندها تُمنع من الوصول. يعرض المتصفح "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= إلى استعادة الوصول المفتوح بالكامل. لذلك احذفه للاسترداد فقط، ثم عيّن قيمة صحيحة فوراً.

الخيار B: الربط بواجهة localhost وإنشاء نفق عبر SSH (موصى به)

أفضل من أي قائمة سماح ألّا تستمع الخدمة إلى الواجهة العامة إطلاقاً. اضبط miniserv ليستمع إلى loopback فقط، ثم صِل إليه عبر نفق SSH مشفّر تثق به مسبقاً.

حرّر /etc/webmin/miniserv.conf وأضف سطراً واحداً أو غيّر سطراً موجوداً:

bind=127.0.0.1

أعد التشغيل باستخدام sudo systemctl restart webmin. لن يعود Webmin قابلاً للوصول من الإنترنت، ولن يعثر فحص المنافذ على المنفذ 10000، كما سيُظهر فحص ss السابق الآن أنّه مربوط بـ127.0.0.1:10000. من حاسوبك المحمول، افتح نفقاً:

ssh -L 10000:localhost:10000 youruser@YOUR_SERVER_IP

اترك جلسة SSH مفتوحة وتصفّح إلى https://localhost:10000. تمر حركة الشبكة داخل SSH، وقد صادقت عليها مسبقاً باستخدام مفتاحك وهي مشفّرة. لذلك يمكنك قبول الشهادة الموقّعة ذاتياً هنا بأمان، لأن طبقة SSH توفّر الحماية الفعلية. عند إغلاق جلسة SSH، يختفي Webmin. لا توجد حاجة إلى قائمة سماح، ولا شيء مكشوف، ولا خدمة إضافية لتأمينها.

إذا ضبطت bind=127.0.0.1 ونسيت النفق، فسيتوقف الوصول عن بُعد ببساطة. هذا يعني أن الميزة تعمل، وليس أنّ هناك عطلاً. استعد الوصول بالطريقة نفسها المتّبعة في الخيار A: من وحدة التحكم، أزل سطر bind أو اضبط bind=0.0.0.0، ثم أعد التشغيل. هذه هي عادة إنشاء الأنفاق نفسها التي تستخدمها للوصول إلى صندوق تطوير بعيد يشغّل Claude Code داخل tmux: جلسة SSH واحدة، وكل شيء خاص، ولا شيء إضافي يستمع إلى الواجهة العامة.

استبدال الشهادة الموقعة ذاتياً بشهادة حقيقية

إذا عرّضت Webmin للإنترنت وفق الخيار A، فتخلّص من تحذير المتصفح باستخدام شهادة حقيقية من Let's Encrypt. تحتاج إلى اسم للشهادة وطريقة تتيح لـLet's Encrypt الوصول إلى المنفذ 80 أثناء التحقق. يكون الاسم عادةً اسماً في DNS، مثل panel.example.com، مع سجل A يشير إلى الخادم. منذ Webmin 2.650، الذي صدر في June 25, 2026، يمكن أن يكون الاسم أيضاً عنوان IP العام للخادم، بشرط تثبيت Certbot 5.3 أو إصدار أحدث. تصدر Let's Encrypt شهادات IP باستخدام ملفها التعريفي قصير الأجل فقط. وتظل هذه الشهادات صالحة لنحو ستة أيام. لذلك اضبط فترة التجديد التلقائي في Webmin بالأيام. لن يقبل Webmin فترة أطول لشهادة IP.

تتضمن Webmin هذه الوظيفة: Webmin، ثم Webmin Configuration، ثم SSL Encryption، ثم علامة التبويب Let's Encrypt. أدخل اسم المضيف أو عنوان IP، واختر طريقة التحقق، ثم اطلب الشهادة. تحصل Webmin على الشهادة، وتحدّث السطرين certfile= وkeyfile= في miniserv.conf نيابةً عنك، وتجددها تلقائياً قبل انتهاء صلاحيتها. أعد تحميل الصفحة، وسيظهر القفل دون تحذير.

المشكلة الفعلية الوحيدة هي أن خادم Webmin نفسه يعمل على المنفذ 10000، وليس 80. لذلك يجب أن تستجيب خدمة ما لتحدي http-01 على المنفذ 80. لديك ثلاث طرق لتنفيذ ذلك. إذا كان Apache أو nginx يخدم الاسم مسبقاً على المنفذ 80، فوجه التحقق إلى مجلد مستندات ذلك الموقع. بالنسبة إلى عنوان IP، تحتاج هذه الطريقة إلى Certbot 5.4 أو إصدار أحدث. إذا لم تكن هناك خدمة على المنفذ 80، فاختر خادم الويب المدمج في Certbot، أي وضع standalone الذي أضافته Webmin في الإصدار 2.110. يشغّل Certbot خادم ويب خاصاً به مؤقتاً على المنفذ 80. لذلك يجب تثبيت Certbot، ويجب أن يكون المنفذ 80 متاحاً ومفتوحاً في الجدار الناري. أو استخدم التحقق عبر DNS، وهو يعمل مع أسماء المضيفين، وليس مع عناوين IP. حزمة certbot الخاصة بـUbuntu 24.04 هي في الإصدار 2.9، وهذا يكفي للتحقق المستقل من اسم مضيف، لكنه قديم جداً لشهادات IP. لهذه الشهادات، ثبّت إصداراً حديثاً من Certbot، مثل إصدار snap الذي كان في الإصدار 5.8 في October 2026. من دون إحدى هذه الطرق، يفشل الطلب بسبب خطأ في التحقق. آلية الإصدار وسجلات DNS وتحدي المنفذ 80 والتجديد هي نفسها عند إصدار شهادة لأي موقع ويب. إذا أردت معرفة التفاصيل، يشرح دليل شهادات TLS من Let's Encrypt باستخدام Certbot وnginx مسار التحقق وإعداد DNS بالتفصيل. إذا اخترت مسار نفق SSH، يمكنك تخطي هذا القسم بالكامل. فالشهادة الموقعة ذاتياً مناسبة خلف SSH، كما أن إصدار شهادة حقيقية لـpanel.example.com سيؤدي على أي حال إلى تحذير عدم تطابق الاسم عند زيارة https://localhost:10000.

تفعيل المصادقة الثنائية

كلمة المرور وحدها حماية ضعيفة للوحة root، لذا أضف عاملاً ثانياً. افتح Webmin، ثم Webmin Configuration، ثم Two-Factor Authentication. حدّد موفّر Google Authenticator، فهو يستخدم TOTP القياسي، ولذلك يعمل مع Authy و1Password وأي تطبيق مصادقة، ثم احفظ الإعداد. يثبّت Webmin وحدة Perl الصغيرة التي يحتاج إليها (Authen::OATH بالإضافة إلى مولّد QR) ويفعّل الميزة. لا تحمي هذه الخطوة أي حساب بعد.

يسجّل كل حساب جهازه الخاص بعد ذلك. بعد تفعيل 2FA، افتح Webmin، ثم Webmin Users، واختر الحساب، ثم حدّد Enable Two-Factor For User. يعرض Webmin رمز QR؛ امسحه باستخدام التطبيق وأدخل رمزاً واحداً تم إنشاؤه للتأكيد. بعد ذلك، يطلب تسجيل الدخول الرمز المكوّن من ستة أرقام بعد كلمة المرور. أكمِل التسجيل قبل تسجيل الخروج. إذا كانت 2FA مطلوبة، لكن حسابك لم يمسح أي رمز، فلا يزال بإمكانك إلغاء المتطلب من وحدة التحكم، لكن التسجيل أولاً أقل إزعاجاً بكثير.

إضافة Fail2ban لحظر محاولات تسجيل الدخول بالقوة الغاشمة

حتى نقطة تسجيل الدخول المقيّدة يجب أن تعاقب حالات الفشل المتكررة. يسجّل Webmin حالات تسجيل الدخول الفاشلة في syslog بالصيغة webmin[12345]: Invalid login as root from 10.0.0.9، أو بالصيغة Non-existent login as ... عندما يكون اسم المستخدم ليس حساب Unix حتى، وفي Ubuntu 24.04 تصل هذه الأسطر إلى سجل systemd، لأن الصورة القياسية لا تحتوي على /var/log/auth.log. يأتي Fail2ban مع مرشح قياسي webmin-auth يطابق هذين السطرين بالضبط، كما يحدد jail أدناه backend = systemd بنفسه، لذلك لا يحتاج إلى regex مخصص أو مسار سجل.

أنشئ /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 في القائمة، مع بدء عداد الحظر بالقيمة صفر (في الواجهة الخلفية لسجل journal لا يوجد سطر File list:). لاختبار الإعداد بالكامل، أجرِ محاولات تسجيل دخول فاشلة عمداً عدة مرات من شبكة أخرى، ثم شغّل أمر الحالة مجدداً وراقب ارتفاع Currently banned. إذا لم يرتفع، فتأكد من أنك لا تختبر من عنوان موجود في ignoreip الخاص بـFail2ban، وشغّل journalctl SYSLOG_IDENTIFIER=webmin على الخادم للتأكد من كتابة أسطر Invalid login فعلياً. إذا لم يكن Fail2ban مثبتاً على هذا الخادم بعد، يشرح دليل Fail2ban على Ubuntu 24.04 لـSSH خطوات التثبيت وSSH jail الذي ينبغي تشغيله بالتوازي مع هذا jail.

تقييد ما يمكن لكل مستخدم في Webmin الوصول إليه

لا يحتاج كل من يستخدم اللوحة إلى صلاحيات root على كل شيء. انتقل إلى Webmin، ثم Webmin Users، وأنشئ حسابات Webmin إضافية، وامنح كل حساب الوحدات التي يحتاج إليها فقط. على سبيل المثال، يمكن لمشغّل النسخ الاحتياطية الوصول إلى وحدتي cron ونظام الملفات فقط. عند تحرير مستخدم، تظهر قائمة اختيار تتضمن جميع الوحدات. يؤدي إلغاء تحديد وحدة إلى إزالتها من قائمة ذلك المستخدم وحظر عناوين URL الأساسية المرتبطة بها. هذا إجراء دفاعي متعدد الطبقات: حتى جلسة Webmin منخفضة الصلاحيات مسروقة لا يمكنها إعادة كتابة /etc/shadow عندما لا تكون وحدة Users مدرجة في قائمة ذلك المستخدم.

الحفاظ على تحديث Webmin

لأنك ثبّتَّ Webmin من مستودع apt، فإن sudo apt update && sudo apt upgrade يجلب إصدارات Webmin الجديدة مع بقية النظام. ثبّت التصحيحات فوراً، لأن لوحة التحكم هدف شائع للهجمات. يمكن لـWebmin أيضاً تحديث نفسه من Webmin، ثم Webmin Configuration، ثم Upgrade Webmin، لكن استخدام apt أنسب على Ubuntu لأنه يحافظ على اتساق الإصدارات مع بقية حزم النظام. لا تتعامل مع هذا كخيار اختياري: كانت عدة ثغرات CVE سابقة في Webmin تتيح تنفيذ التعليمات البرمجية عن بُعد، وكان الفارق الوحيد بين نظام «مصحَّح» وخادم «مخترَق» هو سرعة تشغيل المسؤول لعملية الترقية.

أنماط الفشل، مع النصوص التي ستظهر لك

"Your connection is not private" / NET::ERR_CERT_AUTHORITY_INVALID. تظهر هذه الرسالة عند أول تحميل. السبب هو أن الشهادة الموقعة ذاتياً التي أنشأها Webmin عند التثبيت لا تملك جهة إصدار موثوقة. هذا ليس هجوماً؛ فالقناة مشفّرة، لكن لا توجد جهة موثوقة تصادق عليها. الحل هو متابعة التحذير مؤقتاً، ثم إصدار شهادة Let's Encrypt حقيقية، أو قبول الشهادة دائماً إذا كنت تصل إلى Webmin عبر نفق SSH.

"This web server is running in SSL mode. Try the URL https://..." لقد كتبت http://server:10000. لا يتحدث miniserv عبر TLS إلا على ذلك المنفذ، ولذلك يعرض لك هذه الرسالة بنص واضح. الحل هو تغيير http إلى https في شريط العنوان.

تنتهي مهلة تحميل الصفحة، ERR_CONNECTION_TIMED_OUT / "This site can't be reached". لا يصل الطلب إلى Webmin. في Ubuntu، يكون السبب غالباً إسقاط ufw للمنفذ 10000، لكن تحقّق قبل افتراض ذلك. شغّل sudo ufw status. إذا أظهر Status: inactive، فهذا يعني أن ufw لا يحظر أي شيء، إذ يأتي Ubuntu وufw معطلاً، كما أن إضافة قاعدة سماح لا تفعّله. عندئذٍ ابحث في نقطة أبعد من الخادم، مثل جدار ناري في لوحة تحكم موفّر الخدمة. إذا أظهر Status: active، فشغّل sudo ufw status verbose لعرض السياسة الافتراضية للاتصالات الواردة وأي قواعد أوسع نطاقاً. إذا كانت الاتصالات الواردة مرفوضة ولم يكن المنفذ 10000 مدرجاً، فإما أن تفتحه باستخدام sudo ufw allow 10000/tcp، أو، وهذا أفضل، تتركه مغلقاً وتستخدم نفق SSH من الخيار B. انتبه إلى الفرق: تعني مهلة الانتظار أن جداراً نارياً يسقط الحزم بصمت، بينما تعني ERR_CONNECTION_REFUSED أن المنفذ يمكن الوصول إليه، لكن Webmin لا يعمل. تحقّق من ذلك باستخدام sudo systemctl status webmin.

"Access denied for <your IP>." لقد ضبطت IP Access Control ضمن الخيار A، لكن عنوانك الحالي غير موجود في قائمة السماح، أو أن عنوان IP ديناميكي وتغيّر، أو أن هناك خطأً مطبعياً. لا توجد طريقة للعودة عبر المتصفح. أصلح ذلك من وحدة التحكم: حرّر السطر allow= في /etc/webmin/miniserv.conf، وصحّحه أو احذفه، ثم شغّل sudo systemctl restart webmin.

"Login failed. Please try again." مع بيانات اعتماد تعرف أنها صحيحة. لا يملك الحساب كلمة مرور Unix، وهذا أمر معتاد في صور cloud التي تستخدم المفاتيح فقط. يصادق Webmin على المستخدم عبر PAM باستخدام كلمة مرور Unix، لكن كلمة المرور هذه غير موجودة للمستخدم. الحل هو تشغيل sudo passwd youruser على الخادم، ثم تسجيل الدخول. إذا أظهر /var/webmin/miniserv.log القيمة Non-existent login as ...، فأنت تكتب اسم مستخدم ليس حساب Unix أصلاً.

عند إدارة أكثر من خادمين، تتوسع الأتمتة بصورة أفضل من تثبيت لوحة تحكم على كل خادم: تبدأ العملية من أول Ansible playbook لك.

FAQ

هل من الآمن إتاحة Webmin على الإنترنت العام؟

تعامل مع Webmin المكشوف للإنترنت كأنه جلسة root مع صفحة تسجيل دخول، فهذا هو واقع الأمر. يكون آمناً بدرجة كافية فقط عند استخدام عدة طبقات: شهادة حقيقية، ومصادقة ثنائية، وFail2ban، وقائمة سماح صارمة لعناوين IP، أو الأفضل من ذلك عدم إتاحته للعامة إطلاقاً. يربط الإعداد الأقل خطراً Webmin بالعنوان 127.0.0.1، ثم تصل إليه عبر نفق SSH، وبذلك لا يستجيب المنفذ 10000 لأي جهة على الإنترنت المفتوح.

كيف أزيل تحذير شهادة Webmin؟

يظهر التحذير (NET::ERR_CERT_AUTHORITY_INVALID) لأن Webmin يأتي بشهادة موقّعة ذاتياً. أصدر شهادة حقيقية من Webmin، Webmin Configuration، SSL Encryption، Let's Encrypt. استخدم اسم DNS يشير إلى الخادم، أو عنوان IP العام للخادم إذا كان Certbot 5.3 أو إصداراً أحدث مثبتاً. يجب أن يكون المنفذ 80 قابلاً للوصول من أجل التحقق، وأن يستجيب له إما خادم ويب موجود أو خادم Certbot المستقل. إذا كنت تصل إلى Webmin دائماً عبر نفق SSH إلى localhost، فالتحذير غير ضار؛ إذ إن SSH يشفّر الاتصال ويصادق عليه، ويمكنك قبول الشهادة الموقّعة ذاتياً بأمان.

كيف أقصر Webmin على عنوان IP الخاص بي فقط؟

انتقل إلى Webmin، Webmin Configuration، IP Access Control، واختر "Only allow from listed addresses"، ثم أدخل عنوان IP العام من curl ifconfig.me. يخزّن Webmin ذلك في السطر allow= من /etc/webmin/miniserv.conf. انتبه إلى عنوان IP المنزلي الديناميكي: إذا تغيّر، فستُمنع من الدخول، وسيتعين عليك إصلاح السطر allow= من وحدة تحكم الخادم. لذلك يكون العنوان الثابت أو أسلوب نفق SSH أكثر موثوقية عملياً.

لماذا يفشل تسجيل الدخول رغم استخدام كلمة المرور الصحيحة؟

يصادق Webmin عبر PAM باستخدام كلمة مرور Unix، بينما تكون صور الأنظمة السحابية عادةً مضبوطة لاستخدام المفاتيح فقط، ولا تكون للحساب الافتراضي كلمة مرور معيّنة. لذلك لا يجد PAM قيمة يطابقها، ويُرفض تسجيل الدخول. شغّل sudo passwd youruser على الخادم لتعيين كلمة مرور، ثم سجّل الدخول. أما وجود سطر Non-existent login as ... في /var/webmin/miniserv.log فيعني أن اسم المستخدم نفسه ليس حساب Unix حقيقياً.

ما فائدة Webmin مقارنةً باستخدام SSH مباشرةً؟

Webmin طبقة لتسهيل اكتشاف وظائف النظام واستخدامها. وهو مفيد فعلاً لتصفح ملفات السجل، وإدارة المستخدمين وcron، وتعديل قواعد الجدار الناري، وعرض حالة الأقراص والخدمات دون حفظ كل أمر، لا سيما للمسؤولين الذين يستخدمونه أحياناً أو للفرق متفاوتة الخبرة. أما SSH المباشر فهو أسرع وقابل للبرمجة النصية، ويعرّض سطح هجوم أقل بكثير في الأعمال المعتادة. يستخدم كثير من المسؤولين كليهما: SSH للعمل اليومي، وWebmin مربوطاً بالواجهة المحلية خلف نفق للمهام العرضية التي تعتمد على النقر. إذا كان سؤالك الفعلي هو اختيار لوحة الإدارة، لا المقارنة بين اللوحة وواجهة shell، فمن المفيد أولاً تقييم Cockpit مقارنةً بـ Webmin، لأن المنتجين يختلفان في مقدار ما يمكن لكل منهما تغييره فعلياً في النظام، وفي طريقة مصادقة كل منهما عليك.