Ubuntu 24.04 پر Webmin کیسے انسٹال کریں
Ubuntu 24.04 پر Webmin انسٹال کریں اور port 10000 کو SSH tunnel، Let's Encrypt اور Fail2ban کے ذریعے محفوظ بنائیں۔ مکمل سیکیورٹی گائیڈ یہاں ہے۔
آپ کیا بنا رہے ہیں
Webmin ایک ویب کنٹرول پینل ہے جو پورے Linux سرور کے لیے براؤزر فرنٹ اینڈ فراہم کرتا ہے۔ اس کے ذریعے صارفین (users)، پیکجز (packages)، cron jobs، فائر وال (firewall)، Apache، BIND، ڈسک (disks) اور سینکڑوں دیگر ماڈیولز کو کنٹرول کیا جا سکتا ہے۔ یہ HTTPS کے ذریعے port 10000 پر دستیاب ہوتا ہے۔ اس کی انسٹالیشن صرف 3 کمانڈز پر مشتمل ہے اور اس میں تقریباً 1 منٹ لگتا ہے۔ اس گائیڈ کا زیادہ حصہ دوسرے حصے پر اس لیے مرکوز ہے کیونکہ Webmin root کے طور پر لاگ ان ہوتا ہے اور وہ تمام کام کر سکتا ہے جو root کر سکتا ہے۔ اگر Webmin غیر محفوظ یا بغیر تصدیق (unauthenticated) کے کھلا چھوڑ دیا جائے تو یہ صرف "انتظامی خطرہ" نہیں ہے، بلکہ یہ مکمل سرور ہیک ہونے کے برابر ہے جس کے سامنے صرف ایک لاگ ان پیج ہوگا۔ اس لیے اسے 10 منٹ میں انسٹال کریں، اور پھر باقی وقت یہ یقینی بنانے میں لگائیں کہ اسے صرف آپ ہی استعمال کر سکیں۔
Prerequisites اور ایک اہم انتباہ
ایک نیا Ubuntu 24.04 KVM VPS جس میں root یا sudo صارف موجود ہو۔ Webmin Perl پر مبنی اور ہلکا ہے — 1 GB RAM کافی ہے اور یہ 0.25 GB سے بھی کم پر idle رہتا ہے۔ یہ اپنے خود کے bundled web server (miniserv.pl) کے ذریعے TCP 10000 پر listen کرتا ہے، Apache یا nginx کے ذریعے نہیں، اس لیے پہلے سے کچھ اور انسٹال کرنے کی ضرورت نہیں ہے۔
شروع کرنے سے پہلے دو چیزوں کا فیصلہ کرنا ضروری ہے۔ پہلا، وہ اکاؤنٹ جس سے آپ لاگ ان کریں گے: Webmin PAM کے ذریعے Unix اکاؤنٹس کے ساتھ authenticate کرتا ہے، اس لیے آپ root یا sudo گروپ کے کسی صارف کے طور پر اس اکاؤنٹ کے Unix password کے ذریعے لاگ ان کریں گے۔ Cloud images میں عام طور پر صرف key ہوتی ہے اور default user پر کوئی password سیٹ نہیں ہوتا، اور Webmin بغیر password والے اکاؤنٹ سے لاگ ان نہیں کر سکتا۔ پہلے sudo passwd youruser کے ذریعے password سیٹ کریں، ورنہ آپ جو بھی ٹائپ کریں گے لاگ ان فیل ہو جائے گا۔
دوسرا، اور یہ انتباہ ہے: پورٹ 10000 کو صرف انٹرنیٹ کے لیے کھول کر چھوڑ نہ دیں۔ ابھی فیصلہ کریں کہ کیا آپ SSH tunnel کے ذریعے Webmin تک رسائی حاصل کریں گے (مستحسن، کچھ بھی expose نہیں ہوگا) یا اسے صرف اپنے IP تک محدود رکھیں گے۔ یہ ایک فیصلہ نیچے کے تمام مراحل کا تعین کرے گا، اس لیے firewall کو چھونے سے پہلے دونوں آپشنز کو پڑھ لیں۔
Official repository سے Webmin install کریں
Webmin ایک signed apt repository فراہم کرتا ہے۔ setup script اس repo اور اس کی GPG signing key کو شامل کر دیتی ہے۔ اس کا فائدہ یہ ہے کہ مستقبل میں ہونے والے apt upgrade runs میں Webmin بھی دیگر packages کی طرح ڈاؤن لوڈ ہوگا، اور آپ کو authenticated updates ملیں گی بجائے اس .deb کے جو خود کو patch نہیں کر سکتا۔
curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
sudo sh webmin-setup-repo.shScript بتائے گی کہ وہ کیا کرنے والا ہے اور Setup repository? (y/N) پوچھے گا — آپ y کا جواب دیں۔ جب عمل مکمل ہو جائے تو package install کریں۔ --install-recommends flag عام Perl اور SSL module dependencies کو ڈاؤن لوڈ کرتا ہے تاکہ بعد میں individual modules میں missing-library کے errors نہ آئیں۔
sudo apt-get install --install-recommends webminWebmin نے پہلے اس script کا نام تبدیل کیا ہے — پرانی guides میں setup-repos.sh کا ذکر ہے — اس لیے اگر URL 404 error دے تو نام پر انحصار کرنے کے بجائے webmin.com/download سے تازہ ترین one-liner حاصل کریں۔ درست installation کا اختتام Webmin install complete. You can now login to https://your-host:10000/ as root جیسی line پر ہوتا ہے۔ Service enable اور running ہوتی ہے، configuration /etc/webmin میں ہوتی ہے، requests /var/webmin/miniserv.log میں log ہوتی ہیں، اور failed logins syslog میں جاتے ہیں — Ubuntu 24.04 پر یہ systemd journal میں جاتے ہیں۔
Browser کھولنے سے پہلے اس بات کی تصدیق کریں کہ service چل رہی ہے اور 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 port پر کچھ بھی نہ دکھائے تو اس کا مطلب ہے کہ Webmin start نہیں ہوا؛ مزید آگے بڑھنے سے پہلے journalctl -u webmin -n 50 پڑھ لیں۔
پہلا لاگ ان، اور سرٹیفکیٹ وارننگ
اپنے براؤزر میں https://YOUR_SERVER_IP:10000 ٹائپ کریں۔ نئے سسٹم پر دو چیزیں ہوتی ہیں۔
اگر ufw فعال ہے — Ubuntu کا اپنا سرور امیج اسے غیر فعال رکھتا ہے، لیکن بہت سے فراہم کرنے والے اسے پہلے سے فعال رکھتے ہیں — تو پیج لوڈ نہیں ہوگا، جس کا ذکر نیچے failure modes میں کیا گیا ہے۔ اگر پورٹ کھلا ہے، تو آپ کا براؤزر مکمل بلاک دکھائے گا: 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) تیار کیا ہوتا ہے، اور چونکہ کوئی certificate authority اس کی تصدیق نہیں کرتی، اس لیے براؤزر خاموشی سے اس پر بھروسہ کرنے سے انکار کر دیتا ہے۔ کنکشن اب بھی encrypted ہے؛ بس اس کی تصدیق نہیں کی گئی۔ فی الحال (Advanced، پھر Proceed) پر کلک کریں — ہم آگے چل کر اس سرٹیفکیٹ کو صحیح طریقے سے تبدیل کریں گے۔
root یا اپنے sudo صارف اور اس کے Unix پاس ورڈ کے ساتھ لاگ ان کریں، اور آپ System Information ڈیش بورڈ پر پہنچ جائیں گے۔ یہاں ایک عام غلطی https:// کے بجائے http:// ٹائپ کرنا ہے۔ miniserv اس پورٹ پر سادہ HTTP کے ساتھ یہ پیغام دیتا ہے: "This web server is running in SSL mode. Try the URL https://..." — اس کا حل ایڈریس بار میں http کو https میں تبدیل کرنا ہے۔
سیکورٹی کا فیصلہ: آپ Webmin تک کیسے پہنچیں گے؟
اب اہم حصہ۔ ایک root-equivalent پینل کو انٹرنیٹ پر کھلا نہیں ہونا چاہیے جہاں دنیا بھر کے اسکینرز لاگ ان کرنے کی کوشش کر سکیں۔ آپ کے پاس ترجیحی ترتیب کے لحاظ سے دو قابل دفاع اختیارات ہیں۔
Option B میں SSH tunnel بہتر ہے، کیونکہ یہ کچھ بھی ظاہر نہیں کرتا۔ اگر آپ کا IP ایڈریس static ہے تو Option A میں IP allowlist قابل قبول ہے۔ ان دونوں میں سے کسی پر عمل نہ کرنا وہ غلطی ہے جس سے بچنے کے لیے یہ گائیڈ بنائی گئی ہے۔ اگر آپ اوپر دیے گئے طریقوں کے بجائے پرائیویٹ نیٹ ورک کے ذریعے Webmin تک پہنچنا چاہتے ہیں، تو سرور کو self-hosted WireGuard VPN کے پیچھے رکھیں اور Webmin کو پبلک ایڈریس کے بجائے tunnel ایڈریس پر bind کریں۔
Option A: Webmin کو اپنے IP تک محدود کریں
پینل میں، Webmin کھولیں، پھر Webmin Configuration، اور اس کے بعد IP Access Control پر جائیں۔ "Only allow from listed addresses" کا انتخاب کریں اور اپنا public IP درج کریں، جو آپ اپنے لیپ ٹاپ پر curl ifconfig.me چلا کر حاصل کر سکتے ہیں۔ اسے Save کریں۔ Webmin اس معلومات کو /etc/webmin/miniserv.conf میں allow= لائن پر لکھتا ہے اور خود کو ری اسٹارٹ کرتا ہے۔
خطرہ: اگر آپ کا home IP dynamic ہے اور بدل جاتا ہے، یا آپ ایڈریس ٹائپ کرتے وقت غلطی کر دیتے ہیں، تو آپ خود کو سسٹم سے باہر (lock out) کر لیں گے۔ براؤزر پھر "Access denied for <your IP>" دکھائے گا اور کوئی login form ظاہر نہیں ہوگا، اور واپس داخل ہونے کا کوئی ویب راستہ نہیں ہوگا۔ آپ اسے 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 webminallow= لائن کو ڈیلیٹ کرنے سے مکمل اوپن ایکسیس بحال ہو جائے گا، اس لیے اسے صرف ریکور کرنے کے لیے استعمال کریں، اور اس کے فوراً بعد درست ویلیو سیٹ کر دیں۔
Option B: localhost پر bind کریں اور SSH کے ذریعے tunnel استعمال کریں (تجویز کردہ)
کسی بھی allowlist سے بہتر یہ ہے کہ public interface پر بالکل بھی listen نہ کیا جائے۔ miniserv کو صرف loopback پر bind کرنے کا حکم دیں، پھر اسے ایک encrypted SSH tunnel کے ذریعے استعمال کریں جس پر آپ پہلے سے بھروسہ کرتے ہیں۔
/etc/webmin/miniserv.conf کو edit کریں اور یہ لائن شامل کریں یا تبدیل کریں:
bind=127.0.0.1sudo systemctl restart webmin کے ساتھ restart کریں۔ اب Webmin انٹرنیٹ سے 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 کے اندر سے گزرتا ہے، جو آپ کی key کے ذریعے پہلے سے authenticated اور encrypted ہے، اس لیے آپ یہاں self-signed certificate کو بلا خوف قبول کر سکتے ہیں — اصل protection SSH layer فراہم کر رہی ہے۔ SSH session بند کرنے پر Webmin دستیاب نہیں ہوگا۔ نہ کوئی allowlist کی ضرورت ہے، نہ کچھ expose ہو رہا ہے، اور نہ ہی کسی اضافی service کو harden کرنے کی ضرورت ہے۔
اگر آپ bind=127.0.0.1 سیٹ کر دیں اور tunnel کھولنا بھول جائیں، تو remote access خود بخود رک جائے گا — یہ فیچر کا حصہ ہے، کوئی خرابی نہیں۔ اسے Option A کی طرح ہی ریکور کریں: console سے bind لائن کو ہٹا دیں یا bind=0.0.0.0 سیٹ کریں، پھر restart کریں۔ یہ وہی tunnelling طریقہ ہے جو آپ tmux میں Claude Code چلا رہے ایک remote development box تک پہنچنے کے لیے استعمال کریں گے — ایک SSH session، سب کچھ private، اور public interface پر کوئی اضافی service listen نہیں کر رہی ہوگی۔
Replace the self-signed certificate with a real one
اگر آپ Option A کے تحت کسی hostname پر Webmin استعمال کر رہے ہیں، تو Let's Encrypt کے اصلی سرٹیفکیٹ کے ذریعے براؤزر وارننگ کو ختم کریں۔ آپ کو ایک DNS name کی ضرورت ہے — مثال کے طور پر panel.example.com — جس کا A record سرور کی طرف اشارہ کرتا ہو، اور ویلیڈیشن کے دوران port-80 HTTP challenge کا جواب دینے والا کوئی سسٹم موجود ہو۔
Webmin میں یہ فیچر پہلے سے موجود ہے: Webmin، پھر Webmin Configuration، پھر SSL Encryption، اور پھر Let's Encrypt tab۔ Hostname درج کریں، "website root directory" کو اس path پر سیٹ کریں جو اس domain کے لیے port 80 پر دستیاب ہو، اور request بھیجیں۔ Webmin سرٹیفکیٹ حاصل کر لے گا، miniserv.conf میں certfile= اور keyfile= لائنز کو آپ کے لیے اپ ڈیٹ کر دے گا، اور میعاد ختم ہونے سے پہلے اسے خودکار طور پر رینیو کر دے گا۔ پیج کو ری لوڈ کریں، اب تالا (padlock) درست نظر آئے گا۔
ایک اہم رکاوٹ: Webmin کا اپنا سرور port 10000 پر چلتا ہے، port 80 پر نہیں۔ اس لیے http-01 challenge کے لیے ایک اصلی ویب سرور — جیسے Apache یا nginx — درکار ہے جو port 80 پر panel.example.com کے لیے جواب دے سکے، ورنہ DNS-based validation استعمال کریں۔ اگر آپ کے پاس صرف Webmin والا باکس ہے اور port 80 پر کچھ بھی نہیں چل رہا، تو request ویلیڈیشن error کے ساتھ فیل ہو جائے گی، جب تک کہ آپ Let's Encrypt کو challenge file تک پہنچنے کا راستہ فراہم نہ کر دیں۔ یہ طریقہ کار — DNS records، port-80 challenge، اور renewal — کسی بھی ویب سائٹ کے لیے سرٹیفکیٹ جاری کرنے کے برابر ہے۔ اگر آپ اس کی تفصیل جاننا چاہتے ہیں، تو Let's Encrypt TLS certificates with Certbot and nginx guide میں ویلیڈیشن فلو اور DNS سیٹ اپ کی مکمل معلومات موجود ہیں۔ اگر آپ نے SSH-tunnel والا طریقہ استعمال کیا ہے، تو آپ اس سیکشن کو چھوڑ سکتے ہیں: SSH کے پیچھے self-signed certificate بالکل ٹھیک کام کرتا ہے، اور panel.example.com کے لیے جاری کردہ اصلی سرٹیفکیٹ بھی https://localhost:10000 پر جاتے وقت صرف name-mismatch وارننگ ہی دے گا۔
Two-factor authentication آن کریں
Root panel کے لیے صرف پاس ورڈ کافی نہیں ہے، اس لیے دوسرا فیکٹر شامل کریں۔ Webmin کھولیں، پھر Webmin Configuration، اور پھر Two-Factor Authentication پر جائیں۔ Google Authenticator فراہم کنندہ (provider) کا انتخاب کریں — یہ standard TOTP ہے، اس لیے یہ Authy، 1Password، یا کسی بھی authenticator app کے ساتھ کام کرتا ہے — اور اسے save کریں۔ Webmin ضروری Perl module (Authen::OATH اور QR generator) انسٹال کرے گا اور اس فیچر کو فعال (enable) کر دے گا؛ اس مرحلے سے ابھی کوئی اکاؤنٹ محفوظ نہیں ہوگا۔
اس کے بعد ہر اکاؤنٹ اپنے علیحدہ ڈیوائس کو رجسٹر کرے گا۔ 2FA فعال کرنے کے بعد، Webmin کھولیں، پھر Webmin Users پر جائیں، اکاؤنٹ کا انتخاب کریں، Enable Two-Factor For User منتخب کریں، اور Webmin ایک QR code دکھائے گا؛ اسے ایپ کے ذریعے اسکین کریں اور تصدیق کے لیے ایک generated code درج کریں۔ اس کے بعد، لاگ ان کے دوران پاس ورڈ کے بعد six-digit token مانگا جائے گا۔ لاگ آؤٹ کرنے سے پہلے رجسٹریشن مکمل کر لیں — اگر 2FA درکار ہو لیکن آپ کے اکاؤنٹ نے کبھی کوڈ اسکین نہ کیا ہو، تو آپ کنسول سے اس شرط کو ختم کر سکتے ہیں، لیکن پہلے رجسٹریشن کرنا زیادہ آسان ہے۔
Brute-force logins کو ban کرنے کے لیے Fail2ban شامل کریں
محدود login endpoint کو بھی بار بار ہونے والی ناکامیوں پر کارروائی کرنی چاہیے۔ Webmin، failed logins کو syslog میں webmin[12345]: Invalid login as root from 10.0.0.9 کی صورت میں رپورٹ کرتا ہے، یا اگر username Unix account نہیں ہے تو Non-existent login as ... کے طور پر۔ Ubuntu 24.04 پر یہ lines systemd journal میں جاتی ہیں، کیونکہ stock image میں /var/log/auth.log موجود نہیں ہوتا۔ Fail2ban کے ساتھ ایک stock webmin-auth filter آتا ہے جو ان دونوں lines سے میچ کرتا ہے۔ نیچے دیا گیا 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 = 1hsudo systemctl restart fail2ban کے ساتھ reload کریں، پھر تصدیق کریں کہ jail فعال ہے:
sudo fail2ban-client status webmin-authآپ کو jail فہرست میں نظر آئے گا جس میں شروع میں ban counter 0 ہوگا (journal backend پر File list: line موجود نہیں ہوتی)۔ مکمل کنکشن کو آزمانے کے لیے، کسی دوسرے network سے جان بوجھ کر چند بار login fail کریں، پھر status command دوبارہ چلائیں اور Currently banned کو بڑھتے ہوئے دیکھیں۔ اگر یہ نہ بڑھے، تو یقینی بنائیں کہ آپ Fail2ban کے ignoreip میں موجود address سے test نہیں کر رہے، اور server پر journalctl SYSLOG_IDENTIFIER=webmin چلا کر تصدیق کریں کہ Invalid login lines واقعی لکھی جا رہی ہیں۔ اگر اس machine پر Fail2ban ابھی install نہیں ہے، تو Fail2ban on Ubuntu 24.04 for SSH guide میں installation اور وہ SSH jail موجود ہے جسے آپ کو اس کے ساتھ ہی چلانا چاہیے۔
Webmin کے ہر صارف کے اختیارات کو محدود کریں
ہر صارف کو مکمل root رسائی کی ضرورت نہیں ہوتی۔ Webmin، پھر Webmin Users میں جائیں، نئے لاگ ان بنائیں اور ہر صارف کو صرف ضروری modules تک رسائی دیں۔ مثال کے طور پر، ایک backups operator کو صرف cron اور filesystem modules تک محدود رکھا جا سکتا ہے۔ کسی صارف کو edit کرنے پر تمام modules کی فہرست نظر آئے گی؛ کسی module کو uncheck کرنے سے وہ اس صارف کے مینو سے ہٹ جائے گا اور اس سے متعلقہ URLs بلاک ہو جائیں گے۔ یہ defence in depth کی ایک شکل ہے: اگر کسی کم سطح کے (low-privilege) Webmin session کا ڈیٹا چوری ہو جائے، تب بھی وہ /etc/shadow کو تبدیل نہیں کر سکے گا اگر Users module اس کی فہرست میں شامل نہیں ہے۔
Webmin کو اپ ڈیٹ رکھنا
چونکہ آپ نے اسے apt repository سے انسٹال کیا ہے، اس لیے sudo apt update && sudo apt upgrade سسٹم کے باقی حصوں کے ساتھ Webmin کے نئے ورژن بھی ڈاؤن لوڈ کر لیتا ہے۔ پیچ (patch) فوری طور پر لگائیں — کنٹرول پینل ہیکرز کا پسندیدہ ہدف ہوتے ہیں۔ Webmin خود سے بھی اپ ڈیٹ ہو سکتا ہے، جس کے لیے Webmin، پھر Webmin Configuration، اور پھر Upgrade Webmin پر جائیں، لیکن Ubuntu پر apt کا طریقہ زیادہ بہتر ہے کیونکہ یہ آپ کے دیگر پیکج مینجمنٹ کے ساتھ ورژن کو ہم آہنگ رکھتا ہے۔ اسے اختیاری نہ سمجھیں: ماضی میں Webmin کے کئی CVEs ریموٹ کوڈ ایگزیکیوشن (remote-code-execution) بگ تھے، اور "پیچ شدہ" اور "کمپرومائزڈ" ہونے کے درمیان صرف ایڈمن کی اپ گریڈ کرنے کی رفتار کا فرق تھا۔
Failure modes, with the strings you will see
"Your connection is not private" / NET::ERR_CERT_AUTHORITY_INVALID. یہ پیغام پہلی بار لوڈنگ کے دوران نظر آتا ہے۔ وجہ: انسٹالیشن کے وقت Webmin نے جو self-signed certificate بنایا ہے، اس کا کوئی trusted issuer نہیں ہے۔ یہ کوئی حملہ نہیں ہے؛ چینل encrypted ہے، بس اس کی تصدیق نہیں کی گئی ہے۔ حل: فی الحال وارننگ کو نظر انداز کر کے آگے بڑھیں، پھر ایک اصل 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 استعمال کرتا ہے اور وہ آپ کو سادہ متن میں یہ بتا رہا ہے۔ حل: ایڈریس بار میں http کو https سے تبدیل کریں۔
Page times out — 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 سیٹ کیا ہے اور آپ کا موجودہ ایڈریس allow list میں شامل نہیں ہے — یہ کوئی تبدیل شدہ dynamic IP یا ٹائپنگ کی غلطی ہو سکتی ہے۔ براؤزر کے ذریعے واپس آنے کا کوئی راستہ نہیں ہے۔ کنسول سے حل: /etc/webmin/miniserv.conf میں allow= لائن کو ایڈٹ کریں، اسے درست کریں یا ڈیلیٹ کریں، اور sudo systemctl restart webmin چلائیں۔
"Login failed. Please try again." with credentials you know are correct. اس اکاؤنٹ کا کوئی Unix password نہیں ہے، جو کہ key-only cloud images کے لیے عام ہے۔ Webmin Unix password کے ذریعے PAM کے ذریعے authentication کرتا ہے، اور اس صارف کے لیے وہ پاس ورڈ موجود نہیں ہے۔ حل: سرور پر sudo passwd youruser چلائیں، پھر لاگ ان کریں۔ اگر /var/webmin/miniserv.log میں Non-existent login as ... نظر آئے، تو اس کا مطلب ہے کہ آپ ایسا username ٹائپ کر رہے ہیں جو Unix account ہی نہیں ہے۔
دو سے زیادہ سرورز کے لیے، ہر مشین پر کنٹرول پینل کے بجائے automation زیادہ بہتر کام کرتا ہے: your first Ansible playbook سے اس کا آغاز ہوتا ہے۔
FAQ
کیا Webmin کو عوامی انٹرنیٹ پر ایکسپوز کرنا محفوظ ہے؟
انٹرنیٹ پر موجود Webmin کو لاگ ان پیج کے ساتھ ایک root shell کے طور پر سمجھیں، کیونکہ حقیقت میں یہ وہی ہے۔ یہ صرف تب ہی کافی حد تک محفوظ ہے جب آپ کئی حفاظتی تہیں استعمال کریں: ایک اصل سرٹیفکیٹ، two-factor authentication، Fail2ban، اور یا تو ایک سخت IP allowlist یا بہتر یہ کہ اسے عوامی طور پر ایکسپوز نہ کریں۔ سب سے کم خطرے والا سیٹ اپ Webmin کو 127.0.0.1 سے باندھ دیتا ہے اور اسے SSH tunnel کے ذریعے ایکسیس کرتا ہے، اس طرح port 10000 کھلے انٹرنیٹ پر کسی کو جواب نہیں دیتا۔
میں Webmin سرٹیفکیٹ وارننگ کو کیسے ختم کر سکتا ہوں؟
وارننگ (NET::ERR_CERT_AUTHORITY_INVALID) اس لیے ظاہر ہوتی ہے کیونکہ Webmin کے ساتھ self-signed سرٹیفکیٹ آتا ہے۔ Webmin کے اندر سے ایک اصل سرٹیفکیٹ جاری کریں: Webmin Configuration، SSL Encryption، Let's Encrypt، اور ایک ایسا DNS name استعمال کریں جو سرور کی طرف اشارہ کرتا ہو اور validation کے لیے port-80 challenge کو پورا کرتا ہو۔ اگر آپ Webmin کو صرف localhost کے ذریعے SSH tunnel پر ایکسیس کرتے ہیں، تو یہ وارننگ نقصان دہ نہیں ہے — کیونکہ SSH پہلے ہی کنکشن کو encrypt اور authenticate کر دیتا ہے — اور آپ بلا خوف self-signed سرٹیفکیٹ قبول کر سکتے ہیں۔
میں Webmin کو صرف اپنے IP ایڈریس تک کیسے محدود کر سکتا ہوں؟
Webmin، Webmin Configuration، IP Access Control پر جائیں، "Only allow from listed addresses" منتخب کریں، اور curl ifconfig.me سے اپنا public IP درج کریں۔ Webmin اسے /etc/webmin/miniserv.conf کی allow= لائن میں اسٹور کرتا ہے۔ ڈائنامک ہوم IP کا خیال رکھیں: اگر یہ تبدیل ہو گیا تو آپ لاگ ان نہیں کر پائیں گے اور آپ کو سرور کنسول سے allow= لائن کو درست کرنا ہوگا، اس لیے عملی طور پر static ایڈریس یا SSH-tunnel کا طریقہ زیادہ قابل اعتماد ہے۔
درست پاس ورڈ کے باوجود میرا لاگ ان کیوں فیل ہو جاتا ہے؟
Webmin آپ کے Unix پاس ورڈ کے خلاف PAM کے ذریعے authentication کرتا ہے، اور کلاؤڈ امیجز میں عام طور پر ڈیفالٹ اکاؤنٹ پر کوئی پاس ورڈ سیٹ نہیں ہوتا — اس لیے PAM کے پاس میچ کرنے کے لیے کچھ نہیں ہوتا اور لاگ ان مسترد ہو جاتا ہے۔ پاس ورڈ سیٹ کرنے کے لیے سرور پر sudo passwd youruser چلائیں، پھر لاگ ان کریں۔ اس کے برعکس، /var/webmin/miniserv.log میں Non-existent login as ... لائن کا مطلب ہے کہ یوزر نیم خود ایک حقیقی Unix اکاؤنٹ نہیں ہے۔
سادہ SSH کے مقابلے میں Webmin کس کام آتا ہے؟
Webmin ایک سہولت فراہم کرنے والا لیئر ہے۔ یہ لاگ فائلز کو براؤز کرنے، صارفین اور cron کو مینیج کرنے، firewall rules کو ایڈٹ کرنے، اور ہر کمانڈ کو یاد رکھے بغیر ڈسک اور سروس کی حالت دیکھنے کے لیے مفید ہے۔ سادہ SSH زیادہ تیز ہے، اسکرپٹ کے ذریعے چلایا جا سکتا ہے، اور روزمرہ کے کاموں کے لیے بہت کم attack surface فراہم کرتا ہے۔ بہت سے ایڈمنز دونوں استعمال کرتے ہیں: روزانہ کے کاموں کے لیے SSH، اور کبھی کبھار پوائنٹ-اینڈ-کلک کاموں کے لیے tunnel کے پیچھے localhost سے منسلک Webmin۔