SSD Nodes Learn Hosting plans →
تعلیمی Matt Connorتحریر: Matt Connor · اپ ڈیٹ شدہ 2026-08-13

Ubuntu 24.04 پر Webmin انسٹال اور محفوظ کریں

Ubuntu 24.04 پر Webmin انسٹال کریں، پھر SSH tunnel یا IP allowlist، حقیقی Let's Encrypt certificate، 2FA اور port 10000 پر Fail2ban سے محفوظ کریں۔

آپ کیا بنا رہے ہیں

Webmin ایک web control panel ہے جو پورے Linux server کے لیے browser front end فراہم کرتا ہے۔ اس میں users، packages، cron jobs، firewall، Apache، BIND، disks اور تقریباً سو دیگر modules شامل ہیں۔ یہ HTTPS کے ذریعے port 10000 پر دستیاب ہوتا ہے۔ Installation صرف تین commands پر مشتمل ہے اور تقریباً ایک منٹ لیتی ہے۔ اس guide کا زیادہ حصہ دوسرے مرحلے پر اس لیے مرکوز ہے کہ Webmin root کے طور پر login کرتا ہے اور وہ تمام کام کر سکتا ہے جو root کر سکتا ہے۔ مکمل طور پر کھلا یا غیر مصدقہ Webmin صرف "manage کرنے کا ایک risk" نہیں ہے؛ یہ login page کے پیچھے موجود پورے server کا compromise ہے۔ اس لیے اسے دس منٹ میں install کریں، پھر باقی وقت یہ یقینی بنانے میں صرف کریں کہ صرف آپ ہی اس تک رسائی حاصل کر سکیں۔

ضروریات اور ایک واضح تنبیہ

Ubuntu 24.04 پر ایک نیا KVM VPS درکار ہے، جس پر root یا sudo صارف موجود ہو۔ Webmin Perl پر مبنی اور ہلکا ہے۔ 1 GB RAM کافی ہے، اور عام idle حالت میں یہ ایک چوتھائی gigabyte سے بھی کم memory استعمال کرتا ہے۔ یہ TCP 10000 پر اپنے bundled web server (miniserv.pl) کے ذریعے listen کرتا ہے، Apache یا nginx کے ذریعے نہیں۔ اس لیے پہلے کوئی اور web server install کرنے کی ضرورت نہیں۔

شروع کرنے سے پہلے دو باتوں کا فیصلہ کریں۔ پہلی بات وہ account ہے جس سے آپ login کریں گے۔ Webmin PAM کے ذریعے Unix accounts کے خلاف authentication کرتا ہے۔ اس لیے آپ root کے طور پر یا sudo group کے کسی user کے طور پر، اسی account کے Unix password سے login کریں گے۔ Cloud images میں default user عموماً صرف key-based login کے لیے configured ہوتا ہے اور اس کا password set نہیں ہوتا۔ Webmin ایسے passwordless account سے login نہیں کر سکتا۔ پہلے sudo passwd youruser سے password set کریں، ورنہ آپ کچھ بھی type کریں، login fail ہو جائے گا۔

دوسری بات، اور یہی اہم تنبیہ ہے: port 10000 کو صرف internet کے لیے open کرکے اسے یونہی نہ چھوڑیں۔ ابھی فیصلہ کریں کہ آپ Webmin تک SSH tunnel کے ذریعے پہنچیں گے، جس کی سفارش کی جاتی ہے کیونکہ کچھ بھی externally exposed نہیں ہوگا، یا اسے صرف اپنے IP تک محدود رکھیں گے۔ یہ ایک فیصلہ نیچے کے ہر مرحلے کو متاثر کرتا ہے، اس لیے firewall میں تبدیلی کرنے سے پہلے دونوں options پڑھ لیں۔

سرکاری repository سے Webmin انسٹال کریں

Webmin ایک signed apt repository فراہم کرتا ہے۔ setup script repository اور اس کی GPG signing key شامل کرتی ہے، تاکہ بعد کے apt upgrade runs میں Webmin کسی بھی دوسرے package کی طرح حاصل ہو، اور آپ کو authenticated updates ملیں، نہ کہ ایسا downloaded .deb جو خود کبھی patch نہ ہو۔

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 repository? (y/N) پوچھتی ہے؛ y کا جواب دیں۔ عمل مکمل ہونے پر package انسٹال کریں۔ --install-recommends flag عام Perl اور SSL module dependencies حاصل کرتا ہے، اس لیے بعد میں انفرادی modules missing-library errors کی وجہ سے fail نہیں ہوتے۔

sudo apt-get install --install-recommends webmin

Webmin اس script کا نام پہلے بھی تبدیل کر چکا ہے۔ پرانی guides میں setup-repos.sh کا حوالہ ملتا ہے۔ اگر raw URL 404 واپس کرے تو کسی نام کو مستقل طور پر استعمال کرنے کے بجائے موجودہ one-liner براہ راست webmin.com/download سے حاصل کریں۔ درست installation کا اختتام Webmin install complete. You can now login to https://your-host:10000/ as root جیسی line پر ہوتا ہے۔ service enabled اور running ہوتی ہے، configuration /etc/webmin کے تحت موجود ہوتی ہے، requests /var/webmin/miniserv.log میں log ہوتی ہیں، اور failed logins syslog میں، جبکہ Ubuntu 24.04 پر systemd journal میں، درج ہوتے ہیں۔

Browser کھولنے سے پہلے تصدیق کریں کہ یہ واقعی up ہے اور listening کر رہی ہے:

sudo systemctl status webmin --no-pager
sudo ss -tlnp | grep 10000

آپ کو active (running) status اور ایک ایسی line درکار ہے جس میں miniserv.pl کو 0.0.0.0:10000 سے bound دکھایا گیا ہو۔ نیچے tunnel route اختیار کرنے کے بعد یہ address 127.0.0.1:10000 میں تبدیل ہو جاتا ہے۔ اگر ss میں 10000 پر کچھ بھی ظاہر نہ ہو تو Webmin start نہیں ہوا؛ مزید آگے بڑھنے سے پہلے journalctl -u webmin -n 50 پڑھیں۔

پہلا login اور certificate warning

اپنا browser https://YOUR_SERVER_IP:10000 پر کھولیں۔ نئی install کی گئی مشین پر دو چیزیں ہوتی ہیں۔

اگر ufw active ہے تو صفحہ بالکل load نہیں ہوگا۔ Ubuntu کی اپنی server image میں یہ inactive ہوتا ہے، لیکن بہت سے providers اسے پہلے سے enable کرتے ہیں۔ اس صورتِ حال کی وضاحت ذیل میں failure modes میں کی گئی ہے۔ اگر port open ہو تو browser پورے صفحے پر یہ block دکھاتا ہے: "Your connection is not private"، اور Chrome میں code NET::ERR_CERT_AUTHORITY_INVALID دکھائی دیتا ہے۔ Firefox میں SEC_ERROR_UNKNOWN_ISSUER یا "Warning: Potential Security Risk Ahead" دکھائی دیتا ہے۔ یہ متوقع رویہ ہے اور اس کا مطلب server breach نہیں ہے۔ install کے وقت Webmin نے self-signed certificate بنایا تھا (/etc/webmin/miniserv.pem)۔ چونکہ کوئی certificate authority اس certificate کی توثیق نہیں کرتی، اس لیے browser اسے خاموشی سے trusted نہیں مانتا۔ connection اب بھی encrypted ہے؛ صرف اس کی کسی trusted authority سے توثیق نہیں ہوئی۔ فی الحال warning کو bypass کریں (Advanced، پھر Proceed)۔ ہم آگے چل کر اس certificate کو درست طریقے سے replace کریں گے۔

root یا اپنے sudo user اور اس کے Unix password سے login کریں۔ اس کے بعد System Information dashboard کھل جائے گا۔ یہاں ایک عام غلطی https:// کے بجائے http:// درج کرنا ہے۔ miniserv اس port پر plain HTTP کا جواب عین اس متن کے ساتھ دیتا ہے: "This web server is running in SSL mode. Try the URL https://..."۔ اسے درست کرنے کے لیے address bar میں http کو https سے بدل دیں۔

سیکیورٹی کا فیصلہ: آپ Webmin تک کیسے پہنچیں گے؟

اب اہم حصے پر آتے ہیں۔ root کے مساوی اختیارات رکھنے والے panel کو public internet پر نہیں ہونا چاہیے، جہاں دنیا بھر کے scanners کی login کوششوں کے جواب دینے پڑیں۔ آپ کے پاس ترجیح کی ترتیب سے دو قابلِ دفاع options ہیں۔ ہر self-hosted admin surface کے لیے یہی بنیادی سوال ہوتا ہے۔ اسی لیے Vaultwarden محفوظ ہے یا نہیں کا انحصار اس کے admin endpoint اور backup file پر ہوتا ہے، نہ کہ اس کی encryption پر۔

Option B میں SSH tunnel بہتر ہے، کیونکہ یہ کسی چیز کو بھی public طور پر expose نہیں کرتا۔ Option A میں IP allowlist قابلِ قبول ہے، بشرطیکہ آپ کا address static ہو۔ دونوں میں سے کوئی بھی طریقہ اختیار نہ کرنا عین وہی غلطی ہے جس سے یہ پوری guide بچانے کے لیے لکھی گئی ہے۔ اگر آپ Webmin تک دونوں options کے بجائے private network کے ذریعے پہنچنا چاہتے ہیں تو box کو self-hosted WireGuard VPN کے پیچھے رکھیں، اور Webmin کو public address کے بجائے tunnel address پر bind کریں۔

آپشن A: Webmin کو اپنے IP تک محدود کریں

پینل میں Webmin، پھر Webmin Configuration، پھر IP Access Control کھولیں۔ "Only allow from listed addresses" منتخب کریں اور اپنا public IP درج کریں۔ یہ IP آپ اپنے laptop پر curl ifconfig.me چلا کر معلوم کر سکتے ہیں۔ Save کریں۔ Webmin یہ ترتیب /etc/webmin/miniserv.conf میں allow= لائن پر لکھ کر خود restart ہو جاتا ہے۔

مسئلہ یہ ہے کہ اگر آپ کا home IP dynamic ہو کر بدل جائے، یا آپ address غلط درج کر دیں، تو آپ خود کو Webmin سے باہر کر دیتے ہیں۔ اس کے بعد browser "Access denied for <your IP>" دکھاتا ہے، login form بھی نہیں دکھاتا، اور web کے ذریعے واپس داخل ہونے کا کوئی راستہ نہیں رہتا۔ اسے server console، SSH یا اپنے provider کے 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= لائن حذف کرنے سے مکمل طور پر کھلی access بحال ہو جاتی ہے۔ اسے صرف بحالی کے لیے حذف کریں، پھر فوراً درست value مقرر کریں۔

Option B: localhost پر bind کریں اور SSH کے ذریعے tunnel بنائیں (تجویز کردہ)

کسی بھی allowlist سے بہتر یہ ہے کہ سروس public interface پر بالکل listen نہ کرے۔ miniserv کو صرف loopback پر bind کرنے کے لیے configure کریں، پھر اسے پہلے سے قابلِ اعتماد encrypted SSH tunnel کے ذریعے access کریں۔

/etc/webmin/miniserv.conf میں ترمیم کریں اور ایک line شامل کریں یا موجودہ line تبدیل کریں:

bind=127.0.0.1

sudo systemctl restart webmin کے ذریعے restart کریں۔ اب Webmin internet سے unreachable ہے، port 10000 کا scan کرنے پر کچھ نہیں ملے گا، اور پہلے استعمال کیا گیا ss check اب دکھائے گا کہ یہ 127.0.0.1:10000 پر bound ہے۔ اپنے laptop سے tunnel بنائیں:

ssh -L 10000:localhost:10000 youruser@YOUR_SERVER_IP

اس session کو کھلا رہنے دیں اور https://localhost:10000 پر browse کریں۔ Traffic SSH کے اندر منتقل ہوتا ہے۔ SSH پہلے ہی آپ کی key سے authenticated اور encrypted ہے، اس لیے یہاں self-signed certificate قبول کیا جا سکتا ہے؛ اصل protection SSH layer فراہم کر رہی ہے۔ SSH session بند کرتے ہی Webmin غائب ہو جائے گا۔ کسی allowlist کی ضرورت نہیں، کچھ exposed نہیں ہے، اور کسی اضافی service کو harden نہیں کرنا پڑتا۔

اگر آپ bind=127.0.0.1 set کر کے tunnel بھول جائیں تو remote access رک جائے گا۔ یہ feature کے درست کام کرنے کی علامت ہے، fault نہیں۔ Option A کی طرح console سے recover کریں: bind line حذف کریں یا bind=0.0.0.0 set کریں، پھر restart کریں۔ یہی tunnelling طریقہ آپ tmux میں Claude Code چلانے والے remote development box تک رسائی کے لیے بھی استعمال کر سکتے ہیں: ایک SSH session، سب کچھ private، اور public interface پر کوئی اضافی service listen نہیں کر رہی۔

خود دستخط شدہ certificate کو حقیقی certificate سے تبدیل کریں

اگر آپ Option A کے تحت Webmin کو کسی hostname پر public کرتے ہیں تو حقیقی Let's Encrypt certificate کے ذریعے browser warning ختم کریں۔ آپ کو ایک DNS name درکار ہے، مثلاً panel.example.com، جس کا A record سرور کی طرف اشارہ کرتا ہو، اور validation کے دوران port 80 پر HTTP challenge کا جواب دینے والی کوئی سروس موجود ہو۔

Webmin میں یہ سہولت پہلے سے شامل ہے: Webmin، پھر Webmin Configuration، پھر SSL Encryption، پھر Let's Encrypt tab۔ hostname درج کریں، "website root directory" کو اس path پر مقرر کریں جو اس domain کے لیے port 80 پر serve ہوتا ہو، اور certificate کی درخواست کریں۔ Webmin certificate حاصل کرتا ہے، miniserv.conf میں certfile= اور keyfile= lines کو خود update کرتا ہے، اور certificate کی میعاد ختم ہونے سے پہلے اسے خودکار طور پر renew کرتا ہے۔ صفحہ reload کریں؛ اب padlock کے ساتھ warning نہیں ہوگی۔

ایک اہم رکاوٹ یہ ہے کہ Webmin کا اپنا server port 10000 پر چلتا ہے، port 80 پر نہیں۔ اس لیے http-01 challenge کے لیے port 80 پر panel.example.com کا جواب دینے والا حقیقی web server، جیسے Apache یا nginx، درکار ہے، یا پھر DNS-based validation استعمال کریں۔ ایسے Webmin-only server پر جہاں port 80 پر کچھ نہیں چل رہا، request validation error کے ساتھ ناکام ہو جاتی ہے، جب تک آپ Let's Encrypt کو challenge file تک پہنچنے کا راستہ فراہم نہ کریں۔ طریقۂ کار، DNS records، port-80 challenge اور renewal وہی ہیں جو کسی بھی website کے لیے certificate جاری کرتے وقت استعمال ہوتے ہیں۔ اگر آپ کو اس کا پس منظر درکار ہو تو Certbot اور nginx کے ساتھ Let's Encrypt TLS certificates کی guide validation flow اور DNS setup کو تفصیل سے بیان کرتی ہے۔ اگر آپ نے SSH-tunnel والا طریقہ اختیار کیا ہے تو اس section کو مکمل طور پر چھوڑ سکتے ہیں: SSH کے پیچھے self-signed certificate کافی ہے، اور panel.example.com کے لیے جاری کیا گیا حقیقی certificate بھی https://localhost:10000 پر جاتے وقت name-mismatch warning دکھائے گا۔

دو مرحلہ جاتی تصدیق فعال کریں

root panel کے لیے صرف password ناکافی تحفظ فراہم کرتا ہے، اس لیے دوسرا factor شامل کریں۔ Webmin، پھر Webmin Configuration، پھر Two-Factor Authentication کھولیں۔ Google Authenticator provider منتخب کریں۔ یہ standard TOTP ہے، اس لیے Authy، 1Password یا کسی بھی authenticator app کے ساتھ کام کرتا ہے، پھر محفوظ کریں۔ Webmin مطلوبہ مختصر Perl module (Authen::OATH اور QR generator) install کرکے feature فعال کر دیتا ہے؛ صرف اس مرحلے سے ابھی کوئی account محفوظ نہیں ہوتا۔

اس کے بعد ہر account اپنے device کو الگ enrol کرتا ہے۔ 2FA فعال ہونے کے بعد Webmin، پھر Webmin Users کھولیں، account منتخب کریں، Enable Two-Factor For User منتخب کریں، اور Webmin ایک QR code دکھائے گا؛ اسے app سے scan کریں اور تصدیق کے لیے ایک generated code درج کریں۔ اس کے بعد login کے وقت password کے بعد چھ ہندسوں والا token بھی مانگا جائے گا۔ logout کرنے سے پہلے enrolment مکمل کریں۔ اگر 2FA درکار ہو لیکن آپ کے account نے کبھی code scan نہ کیا ہو تو آپ console سے یہ requirement صاف کر سکتے ہیں، لیکن پہلے enrol کرنا کہیں کم مشکل ہے۔

بار بار ہونے والی brute-force لاگ ان کوششوں کو روکنے کے لیے Fail2ban شامل کریں

محدود login endpoint کو بھی بار بار ہونے والی ناکام کوششوں پر کارروائی کرنی چاہیے۔ Webmin ناکام logins کو syslog میں webmin[12345]: Invalid login as root from 10.0.0.9 کی صورت میں رپورٹ کرتا ہے، جبکہ ایسے username کے لیے جو Unix account بھی نہ ہو، Non-existent login as ... رپورٹ ہوتا ہے۔ Ubuntu 24.04 میں یہ سطریں systemd journal میں محفوظ ہوتی ہیں، کیونکہ stock image میں /var/log/auth.log موجود نہیں ہوتا۔ Fail2ban میں stock webmin-auth filter شامل ہے، جو عین انہی دو سطروں کو match کرتا ہے۔ ذیل کا jail خود backend = systemd مقرر کرتا ہے، اس لیے custom regex یا log path کی ضرورت نہیں۔

/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 کے ذریعے reload کریں، پھر تصدیق کریں کہ jail فعال ہے:

sudo fail2ban-client status webmin-auth

شروع میں jail کی فہرست میں ban counter صفر نظر آنا چاہیے۔ journal backend میں File list: سطر موجود نہیں ہوتی۔ مکمل wiring کی تصدیق کے لیے کسی دوسرے network سے جان بوجھ کر چند بار login ناکام کریں، پھر status command دوبارہ چلائیں اور Currently banned کو بڑھتے ہوئے دیکھیں۔ اگر counter نہ بڑھے تو یقینی بنائیں کہ آپ Fail2ban کے ignoreip میں شامل کسی address سے test نہیں کر رہے۔ سرور پر journalctl SYSLOG_IDENTIFIER=webmin چلائیں تاکہ تصدیق ہو سکے کہ Invalid login سطریں واقعی لکھی جا رہی ہیں۔ اگر اس server پر Fail2ban ابھی installed نہیں ہے تو Ubuntu 24.04 پر SSH کے لیے Fail2ban guide installation اور اس SSH jail کی وضاحت کرتی ہے، جسے اسی jail کے ساتھ چلانا چاہیے۔

ہر Webmin صارف کی رسائی محدود کریں

ہر ایسے صارف کو ہر چیز پر root رسائی درکار نہیں ہوتی جسے panel استعمال کرنا ہو۔ Webmin، پھر Webmin Users میں اضافی Webmin logins بنائیں اور ہر صارف کو صرف مطلوبہ modules دیں۔ مثال کے طور پر، backups operator کو صرف cron اور filesystem modules دکھائیں۔ کسی صارف میں ترمیم کرنے پر ہر module کی checklist دکھائی دیتی ہے۔ کسی module کا نشان ہٹانے سے وہ صارف کے menu سے غائب ہو جاتا ہے اور متعلقہ URLs تک رسائی بھی مسدود ہو جاتی ہے۔ یہ دفاع کی ایک اضافی تہہ ہے۔ اگر کم مراعات والا Webmin session چوری بھی ہو جائے تو Users module اس کی فہرست میں شامل نہ ہونے کی صورت میں وہ /etc/shadow کو دوبارہ نہیں لکھ سکتا۔

Webmin کو تازہ رکھنا

چونکہ آپ نے Webmin کو apt repository سے انسٹال کیا ہے، اس لیے sudo apt update && sudo apt upgrade اسے سسٹم کے باقی حصوں کے ساتھ نئی Webmin releases سمیت اپ ڈیٹ کرتا ہے۔ فوراً patch لگائیں، کیونکہ control panel حملہ آوروں کا عام ہدف ہوتا ہے۔ Webmin خود بھی Webmin، پھر Webmin Configuration، پھر Upgrade Webmin کے ذریعے اپ ڈیٹ ہو سکتا ہے، لیکن Ubuntu پر apt کا طریقہ زیادہ صاف ہے کیونکہ اس سے versions آپ کے باقی package management کے ساتھ یکساں رہتے ہیں۔ اسے اختیاری نہ سمجھیں: ماضی میں Webmin کی کئی CVEs remote-code-execution bugs سے متعلق تھیں، اور "patched" اور "breached" کے درمیان واحد فرق یہ تھا کہ administrator نے upgrade کتنی تیزی سے چلایا۔

خرابی کی صورتیں اور ظاہر ہونے والے پیغامات

"Your connection is not private" / NET::ERR_CERT_AUTHORITY_INVALID۔ یہ پہلی بار صفحہ کھولنے پر ظاہر ہوتا ہے۔ وجہ یہ ہے کہ انسٹالیشن کے دوران Webmin کے بنائے ہوئے self-signed certificate کا کوئی trusted issuer نہیں ہوتا۔ یہ حملہ نہیں ہے؛ network channel encrypted ہے، لیکن اس کی تصدیق کسی trusted issuer نے نہیں کی۔ فی الحال warning کو bypass کریں، پھر حقیقی Let's Encrypt certificate جاری کریں۔ اگر آپ SSH tunnel کے ذریعے Webmin تک پہنچتے ہیں تو اسے مستقل طور پر قبول بھی کر سکتے ہیں۔

"This web server is running in SSL mode. Try the URL https://..."۔ آپ نے http://server:10000 لکھا ہے۔ miniserv اس port پر صرف TLS استعمال کرتا ہے اور plain text میں یہی بتا رہا ہے۔ حل کے لیے address bar میں http کو https سے بدلیں۔

صفحہ timeout ہو جاتا ہے، ERR_CONNECTION_TIMED_OUT / "This site can't be reached"۔ درخواست Webmin تک پہنچ ہی نہیں رہی۔ Ubuntu پر اس کی تقریباً ہمیشہ وجہ ufw کا port 10000 کو drop کرنا ہوتی ہے۔ sudo ufw status سے تصدیق کریں؛ اگر 10000 فہرست میں موجود نہ ہو تو اسے sudo ufw allow 10000/tcp سے کھولیں، یا بہتر یہ ہے کہ اسے بند رہنے دیں اور Option B کا SSH tunnel استعمال کریں۔ فرق سمجھیں: timeout کا مطلب ہے کہ firewall packets کو خاموشی سے drop کر رہا ہے، جبکہ ERR_CONNECTION_REFUSED کا مطلب ہے کہ port تک رسائی ممکن ہے لیکن Webmin چل نہیں رہا۔ sudo systemctl status webmin چیک کریں۔

"Access denied for <your IP>." آپ نے Option A کے تحت IP Access Control set کیا ہے اور آپ کا موجودہ address allow list میں شامل نہیں ہے، یا یہ dynamic IP ہے جو تبدیل ہو چکا ہے، یا اس میں typo ہے۔ browser کے ذریعے واپس آنے کا کوئی راستہ نہیں ہے۔ console سے حل کریں: /etc/webmin/miniserv.conf میں allow= line کو edit کریں، اسے درست یا حذف کریں، اور sudo systemctl restart webmin چلائیں۔

"Login failed. Please try again." جبکہ آپ کو credentials درست معلوم ہوں۔ اس account کے پاس Unix password نہیں ہے، جو key-only cloud images میں معمول کی بات ہے۔ Webmin Unix password کے خلاف PAM کے ذریعے authentication کرتا ہے، لیکن اس user کے لیے ایسا password موجود نہیں ہے۔ حل کے لیے server پر sudo passwd youruser چلائیں، پھر login کریں۔ اگر /var/webmin/miniserv.log میں Non-existent login as ... ظاہر ہو تو آپ ایسا username لکھ رہے ہیں جو Unix account ہی نہیں ہے۔

دو سے زیادہ servers کے لیے ہر box پر control panel رکھنے کے مقابلے میں automation زیادہ آسانی سے scale ہوتی ہے: آپ کی پہلی Ansible playbook سے یہی عمل شروع ہوتا ہے۔

FAQ

کیا Webmin کو public internet پر ظاہر کرنا محفوظ ہے؟

internet-facing Webmin کو login page کے ساتھ root shell سمجھیں، کیونکہ حقیقتاً یہ اسی نوعیت کا access ہے۔ یہ صرف متعدد حفاظتی layers کے ساتھ کافی حد تک محفوظ ہوتا ہے: حقیقی certificate، two-factor authentication، Fail2ban، اور سخت IP allowlist؛ یا اس سے بہتر یہ ہے کہ اسے public internet پر بالکل ظاہر نہ کیا جائے۔ کم خطرے والی configuration میں Webmin کو 127.0.0.1 پر bind کیا جاتا ہے اور SSH tunnel کے ذریعے access کیا جاتا ہے، اس لیے port 10000 پر open internet سے کوئی درخواست نہیں پہنچتی۔

Webmin کے certificate warning کو کیسے ختم کروں؟

یہ warning (NET::ERR_CERT_AUTHORITY_INVALID) اس لیے ظاہر ہوتی ہے کہ Webmin self-signed certificate کے ساتھ release ہوتا ہے۔ Webmin، Webmin Configuration، SSL Encryption، Let's Encrypt سے حقیقی certificate جاری کریں۔ اس کے لیے ایسا DNS name استعمال کریں جو server کی طرف point کرتا ہو اور validation کے لیے port-80 challenge فراہم کرنے والی کوئی سروس موجود ہو۔ اگر آپ Webmin تک ہمیشہ localhost کے SSH tunnel کے ذریعے پہنچتے ہیں تو یہ warning بے ضرر ہے۔ SSH پہلے ہی connection کو encrypt اور authenticate کرتا ہے، اس لیے آپ self-signed certificate کو محفوظ طریقے سے accept کر سکتے ہیں۔

Webmin کو صرف اپنے IP address تک کیسے محدود کروں؟

Webmin، Webmin Configuration، IP Access Control پر جائیں، "Only allow from listed addresses" منتخب کریں، اور curl ifconfig.me سے اپنا public IP درج کریں۔ Webmin اسے /etc/webmin/miniserv.conf کی allow= line میں محفوظ کرتا ہے۔ dynamic home IP سے محتاط رہیں: اگر یہ تبدیل ہو جائے تو آپ access سے محروم ہو جائیں گے اور server console سے allow= line درست کرنا پڑے گی۔ اس لیے عملی طور پر static address یا SSH-tunnel method زیادہ قابل اعتماد ہے۔

درست password کے باوجود login کیوں fail ہوتا ہے؟

Webmin آپ کے Unix password کے خلاف PAM کے ذریعے authentication کرتا ہے۔ cloud images میں default account عموماً key-only ہوتا ہے اور اس پر password set نہیں ہوتا، اس لیے PAM کے پاس match کرنے کے لیے کچھ نہیں ہوتا اور login reject ہو جاتا ہے۔ server پر sudo passwd youruser چلائیں تاکہ password set ہو جائے، پھر login کریں۔ اس کے بجائے /var/webmin/miniserv.log میں Non-existent login as ... line کا مطلب ہے کہ username خود کوئی حقیقی Unix account نہیں ہے۔

plain SSH کے مقابلے میں Webmin کس کام کے لیے مفید ہے؟

Webmin معلومات تک رسائی اور سہولت فراہم کرنے والی layer ہے۔ یہ log files browse کرنے، users اور cron manage کرنے، firewall rules edit کرنے، اور ہر command یاد رکھے بغیر disk اور service state دیکھنے کے لیے واقعی مفید ہے۔ یہ occasional admins یا مختلف مہارت رکھنے والی teams کے لیے خاص طور پر کارآمد ہے۔ معمول کے کاموں کے لیے plain SSH زیادہ تیز ہے، scripts کے ساتھ استعمال کیا جا سکتا ہے، اور attack surface بھی بہت کم ظاہر کرتا ہے۔ بہت سے admins دونوں استعمال کرتے ہیں: روزمرہ کام کے لیے SSH، اور کبھی کبھار point-and-click کام کے لیے localhost پر bound Webmin جس تک tunnel کے ذریعے رسائی ہو۔ اگر آپ کا اصل سوال panel بمقابلہ shell نہیں بلکہ ایک panel کا دوسرے panel سے موازنہ ہے تو پہلے Cockpit اور Webmin کا موازنہ دیکھنا مفید ہوگا، کیونکہ دونوں اس بات میں مختلف ہیں کہ ہر ایک system میں کتنی تبدیلی کر سکتا ہے اور user کی authentication کس طرح کرتا ہے۔