Cockpit vs Webmin: எது சிறந்தது? முழுமையான ஒப்பீடு
Ubuntu VPS நிர்வாகத்திற்கு Cockpit மற்றும் Webmin ஆகியவற்றில் எது சிறந்தது என்பதை அறியுங்கள். இவற்றின் பாதுகாப்பு சிக்கல்கள், கட்டமைப்பு வசதிகள் மற்றும் SSH பயன்பாட்டை ஒப்பிடுகிறோம்.
Cockpit மற்றும் Webmin: சுருக்கமான பதில்
Cockpit மற்றும் Webmin ஆகிய இரண்டுமே browser மூலம் Linux server-ஐ நிர்வகிப்பதற்கான web panels ஆகும். இவை வெவ்வேறு தேவைகளைப் பூர்த்தி செய்கின்றன. Cockpit உங்கள் distribution-ன் repository-லேயே கிடைக்கிறது; இது systemd, journald, polkit மற்றும் udisks மூலம் தகவல்களைப் பெறுவதால், நீங்கள் SSH வழியாக நிர்வகிக்கும் server-ன் நிலையை இது அப்படியே காட்டுகிறது. Webmin பழமையானது மற்றும் அதிக வசதிகளைக் கொண்டது: இது Apache, BIND, Postfix, MariaDB மற்றும் Cockpit தொடாத பல சேவைகளின் configuration files-ஐ நேரடியாக மாற்றியமைக்கும் திறன் கொண்டது. இதைச் செய்ய, இது root பயனர் உரிமையுடன் தனது சொந்த web server-ஐ இயக்குகிறது.
ஒரு server-ன் தற்போதைய நிலை, logs மற்றும் அவசரக்கால terminal தேவைப்படும்போது Cockpit-ஐ நிறுவவும். ஒரு சேவையை நீங்களே manual-ஆக configure செய்ய விரும்பாதபோது, form-based editor தேவைப்பட்டால் Webmin-ஐ நிறுவவும். இவை இரண்டையுமே password login-உடன் public port-ல் வைக்க வேண்டாம். நீங்கள் ஏற்கனவே இரண்டு அல்லது மூன்றுக்கும் மேற்பட்ட server-களை நிர்வகிப்பவர் என்றால், உண்மையான பதில் இவை இரண்டுமே தேவையில்லை என்பதுதான். எந்தவொரு panel-ஐ விடவும் SSH மற்றும் Ansible வழிமுறை அதிக scalability-ஐ வழங்கும்.
ஒவ்வொரு பேனலும் உண்மையில் எதை மாற்ற முடியும்
Cockpit-ன் அடிப்படை நிறுவல் சிறியது, பெரும்பாலான பகுதிகள் தனித்தனி தொகுப்புகளாக இருப்பதால் அவற்றை நீங்கள் தவிர்க்கலாம்:
- systemd services மற்றும் timers: unit file-ஐத் தொடங்குதல், நிறுத்துதல், செயல்படுத்துதல் மற்றும் வாசித்தல்
- journal: unit மற்றும் முன்னுரிமை அடிப்படையில் வடிகட்டப்பட்டது, இது
journalctlமற்றும் தேதித் தேர்வியைக் (date picker) கொண்டுள்ளது - உள்ளூர் கணக்குகள், குழு உறுப்பினர் தகுதிகள் மற்றும் அங்கீகரிக்கப்பட்ட SSH keys
cockpit-storagedஉடன் சேமிப்பகம்: partitions, LVM volume groups, filesystems மற்றும் mount pointscockpit-podmanஉடன் containers: இது Podman-ஐ மட்டுமே நிர்வகிக்கும்cockpit-packagekitஉடன் தொகுப்பு மேம்படுத்தல்கள் (package updates)- CPU, memory, disk மற்றும் network வரைபடங்கள் (graphs)
cockpit-pcpஉடன் - உலாவியில் (browser tab) ஒரு root terminal
Ubuntu VPS-ல் இரண்டு பகுதிகள் பழுதடைந்தது போலத் தோன்றும், ஆனால் அவை பழுதடையவில்லை. Cockpit-ன் Networking பக்கம் NetworkManager-க்கான ஒரு முன்பக்கமாகும் (front end). Ubuntu server படங்கள் systemd-networkd உடன் netplan-ஐப் பயன்படுத்துகின்றன, எனவே அந்தப் பக்கம் விடுபட்டிருக்கும் அல்லது காலியாக இருக்கும். அதை மீண்டும் பெற ஒரு remote box-ல் NetworkManager-ஐ நிறுவ வேண்டாம்; ஏனெனில் அது interface-ஐக் கைப்பற்றிவிடும், அங்கே ஒரு தவறு நடந்தால் உங்கள் SSH session-ஐயும் இழக்க நேரிடும். Cockpit-ன் firewall கட்டுப்பாடுகள் firewalld-க்கான முன்பக்கமாகும், ஆனால் Ubuntu ufw-ஐப் பயன்படுத்துகிறது, எனவே உங்களுக்கு firewall கட்டுப்பாடுகள் எதுவும் கிடைக்காது. நீங்கள் terminal-ல் sudo ufw status-ஐத் தொடர்ந்து இயக்க வேண்டும்.
Webmin பல சேவைகளுக்கான தொகுதிகளைக் (modules) கொண்டிருப்பதால், இது அதிகப்படியான செயல்பாடுகளை உள்ளடக்கியது:
- Apache, nginx, BIND, Postfix, Dovecot, MariaDB, PostgreSQL மற்றும் Samba ஆகியவற்றின் உள்ளமைவுகளைப் படிவங்கள் (forms) மூலம் செய்தல்
- பயனர்கள், குழுக்கள் மற்றும் disk quotas
- cron jobs மற்றும் system clock
- தொகுப்பு மேம்படுத்தல்கள், மற்றும் கோப்புகளைப் பதிவேற்ற/பதிவிறக்கம் செய்ய ஒரு file manager
- firewall முன்பக்கங்கள், இதில் iptables மற்றும் firewalld ஆகியவற்றுக்கானவை அடங்கும்
- உள்ளமைவு கோப்பு காப்புப்பிரதிகள் (backups), மற்றும் ஒரு மாற்றத்தை பிற Webmin server-களுக்கு அனுப்பும் cluster தொகுதிகள்
Webmin /etc-ன் கீழ் உள்ள உண்மையான கோப்புகளைத் திருத்துகிறது. படிவங்களுக்குப் பின்னால் மறைக்கப்பட்ட database எதுவும் இல்லை, எனவே /etc version control-ல் இருந்தால், ஒரு படிவத்தைச் சேமித்த பிறகு sudo git -C /etc diff அந்தத் தொகுதி சரியாக என்ன எழுதியது என்பதைக் காட்டும். எந்தவொரு Webmin பக்கமும் உண்மையில் என்ன செய்கிறது என்பதை அறிய இதுவே வேகமான வழியாகும். Webmin நிறுவல் மற்றும் முதல் உள்நுழைவு வழிகாட்டி தொகுதி மரத்தை (module tree) விரிவாக விளக்குகிறது. Virtualmin மற்றும் Usermin ஆகியவை ஒரே engine-ல் கட்டமைக்கப்பட்ட தனித்தனி தயாரிப்புகள்; இவை shared hosting மற்றும் இறுதிப் பயனர்களுக்காக உருவாக்கப்பட்டவை, மேலும் இவை இங்கே கூறப்பட்ட அனைத்து பாதுகாப்பு அபாயங்களையும் கொண்டிருக்கின்றன.
ஒவ்வொன்றும் எவ்வாறு அங்கீகரிக்கப்படுகிறது
Cockpit-க்கு எனத் தனி பயனர் தரவுத்தளம் இல்லை. அதன் உள்நுழைவுப் பக்கம் /etc/pam.d/cockpit-ல் உள்ள PAM (pluggable authentication modules) stack-ஐ இயக்குகிறது, எனவே உங்கள் Unix கணக்குகளே அங்கு பயன்படுத்தப்படுகின்றன, மேலும் உங்கள் Unix கடவுச்சொற்களே அங்கேயும் செல்லுபடியாகும். /etc/cockpit/disallowed-users-ல் root பயனர் பட்டியலிடப்பட்டுள்ளதால், முன்னிருப்பாக root உள்நுழைவு மறுக்கப்படுகிறது. சலுகை பெற்ற செயல்பாடுகள் polkit வழியாகச் செல்கின்றன, மேலும் ஏதேனும் மாற்றங்களைச் செய்வதற்கு முன்பு இடைமுகம் மீண்டும் உங்கள் கடவுச்சொல்லைக் கேட்கும்; இதனால்தான் நீங்கள் உயர்மட்ட அனுமதியைப் (escalate) பெறும் வரை பக்கத்தின் தலைப்பு "Limited access" என்று காட்டுகிறது.
பாதுகாப்பு பலப்படுத்தப்பட்ட (hardened) கணினிகளில் இந்த வடிவமைப்பால் ஒரு சிக்கல் ஏற்படலாம். நீங்கள் கடவுச்சொல் அங்கீகாரம் முடக்கப்பட்ட key-only SSH உள்நுழைவு முறையைப் பின்பற்றியிருந்தால், அந்த கணக்கிற்குப் பயன்படுத்தக்கூடிய கடவுச்சொல் எதுவும் இருக்காது. எனவே, ssh தொடர்ந்து வேலை செய்தாலும், Cockpit உள்நுழைவு நிராகரிக்கப்படும். இதை server-ல் சரிபார்க்கவும்:
sudo passwd -S deploydeploy L என்று தொடங்கும் வெளியீடு, கடவுச்சொல் பூட்டப்பட்டுள்ளது என்பதைக் குறிக்கிறது. எனவே PAM-ஆல் எதையும் ஏற்க முடியாது, நீங்கள் உள்ளிட்ட எந்த கடவுச்சொல்லும் வேலை செய்யாது. P என்பது பயன்படுத்தக்கூடிய கடவுச்சொல் அமைக்கப்பட்டுள்ளது என்பதைக் குறிக்கிறது. Cockpit-ன் சொந்த உள்நுழைவுப் பக்கம் SSH keys-ஐ ஏற்காது. நீங்கள் உள்நுழைந்த கணினியிலிருந்து மற்றொரு host-க்கு Cockpit இணைப்பை ஏற்படுத்தும்போது மட்டுமே keys பயன்படுத்தப்படுகின்றன.
Webmin தனது சொந்த பயனர்களை /etc/webmin/miniserv.users-ல் வைத்திருக்கிறது, இது /etc/passwd-லிருந்து தனிப்பட்டது. இருப்பினும், Unix கணக்குகளைக் கொண்டு அங்கீகரிக்கும்படியும் அதை அமைக்கலாம். Webmin-ல் அனைத்து தொகுதிகளும் (modules) வழங்கப்பட்ட ஒரு பயனர், அந்த கணினியின் root பயனராகக் கருதப்படுவார்; அவர்களின் login shell என்னவாக இருந்தாலும் இது பொருந்தும். Webmin தனது சொந்த TOTP (time-based one-time password) ஆதரவையும், தொடர்ச்சியான தோல்வியுற்ற உள்நுழைவுகளுக்குப் பிறகு host-களைத் தடுக்கும் வசதியையும் கொண்டுள்ளது; இவை இரண்டும் Webmin Configuration-க்குள் செயல்படுத்தப்படுகின்றன. PAM-ல் கூடுதல் வசதிகளைச் சேர்த்தால் மட்டுமே (உதாரணமாக libpam-google-authenticator மூலம்) Cockpit-க்கு இரண்டாவது காரணி (second factor) அங்கீகாரம் கிடைக்கும்.
ஒவ்வொன்றும் எவ்வாறு புதுப்பிக்கப்படுகின்றன
Cockpit உங்கள் distribution-ஆல் தொகுக்கப்பட்டுள்ளது. Ubuntu 24.04-ல் இது archive-லிருந்து வருகிறது, மேலும் புதிய build-க்கு upstream project backports pocket-ஐப் பயன்படுத்த பரிந்துரைக்கிறது:
. /etc/os-release
sudo apt update
sudo apt install -t ${VERSION_CODENAME}-backports cockpit
sudo systemctl status cockpit.socket
apt policy cockpitapt policy நீங்கள் நிறுவிய version மற்றும் அது வந்த repository-ஐக் காட்டும். Backports-ல் புதிய build இல்லை என்றால், apt பழைய archive version-க்குத் திரும்பிவிடும், இது ஏற்றுக்கொள்ளத்தக்கது. cockpit.socket என்பது active (listening) என்று இருக்க வேண்டும். பாதுகாப்புத் திருத்தங்கள் (Security fixes) உங்கள் kernel-க்குச் செய்யப்படும் அதே unattended-upgrades மூலமாகவே வந்து சேரும், இது நீங்கள் ஏற்கனவே நம்பும் ஒரு publisher-ஆல் வழங்கப்படுகிறது.
Webmin, Ubuntu-வின் archive-ல் இல்லை. அதிகாரப்பூர்வ நிறுவல் முறை, Webmin-ன் சொந்த repository மற்றும் signing key-ஐ முதலில் சேர்க்கிறது:
curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
sudo sh webmin-setup-repo.sh
sudo apt-get install webmin --install-recommendsஅந்த script-ஐ இயக்கும் முன் அதைப் படித்துப் பார்க்கவும், ஏனெனில் அது root பயனர் உரிமையுடன் இயங்குகிறது. அதன் பிறகு, server-ல் நீங்கள் இயக்கும் ஒவ்வொரு apt upgrade-ம் Webmin-ன் repository-லிருந்தும் தரவுகளைப் பெறும். இதன் மூலம், உங்கள் server-ல் root-level நம்பிக்கை கொண்ட இரண்டாவது publisher-ஐ நீங்கள் சேர்த்துள்ளீர்கள். இதுவே Webmin-ன் உண்மையான விலை, இதற்கு ஒரு தெளிவான உதாரணம் தேவை: CVE-2019-15107 என்பது பல 1.9x தொகுப்புகளில் இருந்த ஒரு backdoor ஆகும். இது அங்கீகாரம் இல்லாத command execution-ஐ அனுமதித்தது. அந்த project-ன் build host பாதிக்கப்பட்டதால் இது பயனர்களுக்குச் சென்றடைந்தது, அதன் source repository-ஆல் அல்ல. Distribution packaging இதை முற்றிலும் தடுக்காது. ஆனால், நீங்கள் நீங்களே பராமரிக்க வேண்டிய அவசியமில்லாத ஒரு கூடுதல் build மற்றும் review நிலையை இது சேர்க்கிறது.
ஏன் இவை இரண்டையும் பொதுவான port-ல் வைக்கக்கூடாது
Cockpit TCP 9090-லும், Webmin TCP 10000-லும் இயங்குகின்றன. இவை இரண்டும் self-signed certificate மூலம் TLS (transport layer security) பயன்படுத்துவதால், முதலில் browser எச்சரிக்கை ஒன்றைக் காட்டும். Self-signed certificate-ஐ உருவாக்குதல் மற்றும் நம்புதல் என்ற பகுதி, அந்த எச்சரிக்கை எதைக் குறிக்கிறது, எதைக் குறிக்கவில்லை என்பதை விளக்குகிறது. இந்த இரண்டு ports-ம் தொடர்ந்து ஸ்கேன் செய்யப்படுகின்றன. மேலும், இவை இரண்டுமே root access-ஐ வழங்குவதால், கடவுச்சொல் ஊகிக்கப்பட்டாலோ அல்லது மீண்டும் பயன்படுத்தப்பட்டாலோ, server முழுமையாக breached ஆகிவிடும்.
இந்த panel-களை localhost-ல் bind செய்து, SSH tunnel வழியாக அணுகுவதே பாதுகாப்பான முறையாகும். Cockpit-க்கு, socket unit-ஐ override செய்யவும்:
sudo systemctl edit cockpit.socket[Socket]
ListenStream=
ListenStream=127.0.0.1:9090வெற்று ListenStream= வரியை தனியாகச் சேர்ப்பது அவசியம். systemd, list settings-உடன் புதியவற்றைச் சேர்க்கும்; எனவே, அந்த வரி இல்லையென்றால், பழைய 0.0.0.0:9090 அப்படியே இருக்கும், புதிய முகவரியும் சேர்ந்துவிடும். இதனால் உங்கள் panel தொடர்ந்து பொதுவில் இருக்கும். Override-ஐச் செயல்படுத்தி, எவை listen செய்கின்றன என்று பார்க்கவும்:
sudo systemctl daemon-reload
sudo systemctl restart cockpit.socket
sudo ss -lntp | grep 9090வெளியீடு 127.0.0.1:9090 என்று காட்ட வேண்டும். *:9090 அல்லது 0.0.0.0:9090 என்று இருந்தால், override சரியாகச் செயல்படவில்லை என்று பொருள். இப்போது உங்கள் கணினியிலிருந்து tunnel-ஐத் திறந்து, https://localhost:9090 முகவரிக்குச் செல்லவும்:
ssh -N -L 9090:127.0.0.1:9090 deploy@203.0.113.10Local port-ம் remote port-ம் சமமாக இருக்க வேண்டும். Cockpit, browser-ன் Origin header-ஐ அது இயங்கும் முகவரியுடன் ஒப்பிடும். எனவே, local port 9999-லிருந்து tunnel செய்தால், login பக்கம் வரும், ஆனால் login செய்யும்போது தோல்வியடையும். journalctl -u cockpit நிராகரிக்கப்பட்ட origin-ஐப் பதிவு செய்யும். உங்களுக்கு வேறு local port தேவைப்பட்டால், அதை /etc/cockpit/cockpit.conf-ல் குறிப்பிடவும்:
[WebService]
Origins = https://localhost:9999 https://127.0.0.1:9999இதைச் செயல்படுத்த sudo systemctl restart cockpit.socket மூலம் restart செய்யவும். Webmin-க்கு, இதற்கான அமைப்பு /etc/webmin/miniserv.conf-ல் உள்ளது:
bind=127.0.0.1sudo systemctl restart webmin
sudo ss -lntp | grep 10000
ssh -N -L 10000:127.0.0.1:10000 deploy@203.0.113.10Webmin, form posts-ல் Referer header-ஐச் சரிபார்க்கும். வேறொரு host-லிருந்து வரும் கோரிக்கைகளை அது நிராகரிக்கும்; இதுவே reverse proxy-ஐ அமைக்கும்போது முதல் முயற்சியில் தோல்வியடையக் காரணமாகிறது. அதே கோப்பில் உள்ள referers= வரியில் proxy-ன் hostname-ஐ அனுமதிக்க வேண்டும், webprefix= வரியில் Webmin ஒரு குறிப்பிட்ட path-ல் இயங்குகிறது என்பதைத் தெரிவிக்க வேண்டும்.
Authenticated reverse proxy மற்றொரு வழி: முன்னால் nginx-ஐ வைத்து, Authentik single sign-on layer மூலம் login செய்வதாகும். இது வேலை செய்யும், ஆனால் இது இரண்டாவது சிறந்த வழி மட்டுமே. Panel இன்னும் root-ஆகவே இயங்குகிறது, மேலும் நீங்கள் ஒரு front door-க்கு பதிலாக இரண்டைப் பராமரிக்க வேண்டியிருக்கும். Tunnel முறை, இணையத்தில் எந்தவொரு listening service-ஐயும் திறக்காது, மேலும் நீங்கள் ஏற்கனவே பாதுகாத்து வைத்திருக்கும் SSH key-யையே மீண்டும் பயன்படுத்திக்கொள்ளலாம்.
ஏற்கனவே production சேவைகளை இயக்கும் ஒரு server-ல் எந்த panel-ஐத் தேர்வு செய்வது?
Cockpit-ஐத் தேர்வு செய்யவும். மற்றவர்கள் அந்த machine-ஐச் சார்ந்திருக்கும்போது இது இரண்டு காரணங்களுக்காக முக்கியமானது. இது socket activated முறையில் இயங்குகிறது; எனவே, ஒரு session திறந்திருக்கும்போது மட்டுமே cockpit-ws இயங்கும். எந்தவொரு நிரந்தரமான root daemon-ம் port-ல் காத்திருக்காது. மேலும், இது எதையும் தன் கட்டுப்பாட்டில் வைத்திருக்காது: இந்த package-ஐ நீக்கினாலும், அனைத்து சேவைகளும் முன்பிருந்தது போலவே தொடர்ந்து இயங்கும். ஏனெனில், Cockpit தனக்கென எந்த configuration-ஐயும் சேமித்து வைப்பதில்லை. Webmin-ன் miniserv.pl, எவரும் login செய்திருந்தாலும் இல்லாவிட்டாலும் தொடர்ந்து இயங்கிக்கொண்டே இருக்கும். systemctl status webmin கட்டளையைப் பயன்படுத்தி, இயங்கும் process எவ்வளவு memory-ஐப் பயன்படுத்துகிறது என்பதைச் சரிபார்த்து அதன் செலவை அறிந்துகொள்ளலாம்.
உங்களுக்கு Webmin-ன் DNS அல்லது mail modules தேவைப்பட்டால், அவற்றுக்கெனத் தனி server-ஐ ஒதுக்குங்கள். 127.0.0.1-ல் பிணைக்கப்பட்ட (bound), ஒரு குறிப்பிட்ட பணியைச் செய்யும் Webmin server ஒரு கட்டுப்படுத்தப்பட்ட அபாயமாகும். வாடிக்கையாளர்கள் பயன்படுத்தும் application-டன் Webmin-ஐப் பகிர்ந்துகொள்வது பாதுகாப்பானது அல்ல. எந்தவொரு panel-ஐ நிறுவுவதற்கு முன்பும் அடிப்படைப் பணிகளைச் செய்து முடிக்கவும்: புதிய VPS-ல் முதல் பத்து நிமிடங்கள் என்ற கட்டுரை, non-root user மற்றும் firewall அமைப்புகளைப் பற்றி விளக்குகிறது; இவை இரண்டு panel-களும் ஏற்கனவே இருக்கும் என்று எதிர்பார்க்கும் அடிப்படை அமைப்புகளாகும்.
பதில் பொருந்தாதபோது
ஒரு panel என்பது server-க்கு ஒன்று என்ற அடிப்படையில் கைமுறையாகச் செய்யப்படுவது; இதில் என்ன மாற்றம் செய்யப்பட்டது அல்லது ஏன் செய்யப்பட்டது என்பதற்கான எந்தப் பதிவும் இருக்காது. ஒரு server-க்கு இது சரிதான். ஐந்து server-கள் இருக்கும்போது நீங்கள் ஒரே வேலையைத் திரும்பத் திரும்பச் செய்கிறீர்கள்; இருபது server-கள் இருக்கும்போது எந்த server-ல் மாற்றம் விடுபட்டது என்று ஊகித்துக் கொண்டிருக்க வேண்டியிருக்கும். Cockpit மூலம் SSH வழியாக ஒரே session-ல் பிற host-களைச் சேர்க்க முடியும், ஆனால் சமீபத்திய பதிப்புகளில் இது இயல்பாகவே முடக்கப்பட்டுள்ளது, மேலும் இதற்கு AllowMultiHost=yes-ஐ /etc/cockpit/cockpit.conf-ல் அமைக்க வேண்டும். அப்படியிருந்தாலும், நீங்கள் ஒரே மாற்றத்தை ஐந்து முறை கிளிக் செய்ய வேண்டியிருக்கும்.
இதற்கு மாற்றாக, உங்கள் configuration-ஐ git repository-ல் வைத்துக்கொண்டு plain SSH-ஐப் பயன்படுத்தலாம். ஒரே இடத்திலிருந்து பல Linux server-களை நிர்வகித்தல் அந்த அமைப்பின் வடிவத்தை விளக்குகிறது, மேலும் முதல் Ansible playbook ஒரே கோப்பிலிருந்து அனைத்து host-களுக்கும் firewall விதியைச் செயல்படுத்துகிறது; இதை நீங்கள் diff மூலம் சரிபார்க்கலாம். Container பணிகளும் இதே முறையில்தான் செயல்படுகின்றன: Docker Compose அடிப்படைகள் வழிகாட்டி-ல் உள்ளபடி, git-ல் உள்ள ஒரு கோப்பிலிருந்து SSH வழியாக docker compose up -d-ஐ இயக்குவது, எந்தவொரு panel-லும் கிளிக் செய்வதை விடச் சிறந்தது. மேலும், Cockpit எப்போதுமே Docker-ஐ நிர்வகிப்பதில்லை.
Metrics வரைபடத்தைப் பார்ப்பது அல்லது நாற்பது unit-களில் எது தோல்வியடைந்தது என்பதைக் கண்டறிவது போன்ற, terminal-க்குக் கடினமான பணிகளுக்கு மட்டும் panel-ஐப் பயன்படுத்தவும். நீங்கள் இரண்டு முறைக்கு மேல் செய்யப்போகும் எந்தவொரு செயலுக்கும் code-ஐப் பயன்படுத்தவும்.
தோல்வி முறைகள் மற்றும் நீங்கள் காணும் சரங்கள் (strings)
SSH ஏற்கும் கடவுச்சொல்லை Cockpit நிராகரிக்கிறது. அந்த கணக்கு key-only முறையில் உள்ளது. sudo passwd -S alice இரண்டாவது புலத்தில் L என்று அச்சிடுகிறது, எனவே PAM சரிபார்க்க கடவுச்சொல் எதுவும் இல்லை. sudo passwd alice மூலம் கடவுச்சொல்லை அமைக்கவும், அல்லது அந்த கணக்கை SSH-க்கு மட்டும் வைத்துக்கொண்டு, மற்றொரு பயனராக Cockpit-ல் நுழையவும்.
சரியான கடவுச்சொல்லைக் கொடுத்தாலும் Cockpit root கணக்கை அனுமதிக்கவில்லை. /etc/cockpit/disallowed-users-ல் root என்று பட்டியலிடப்பட்டுள்ளது. sudo உரிமைகள் கொண்ட சாதாரண பயனராக நுழையவும். இதுவே சரியான வழியாகும், ஏனெனில் எந்த மனிதர் உரிமைகளை உயர்த்தினார் என்பதை polkit பதிவு செய்யும்.
Cockpit-ல் Networking அல்லது Firewall பக்கம் தெரியவில்லை. அந்த பக்கங்களுக்கு NetworkManager மற்றும் firewalld தேவை. Ubuntu VPS-ல் systemd-networkd மற்றும் ufw உடன் netplan இயங்குகிறது, எனவே அந்த பக்கங்கள் தோன்றாது. இதில் எந்த பிழையும் இல்லை, SSH வழியாக ufw-ஐ தொடர்ந்து பயன்படுத்துவதே இதற்கான தீர்வாகும்.
Tunnel வழியாக Cockpit login பக்கம் ஏற்றப்படுகிறது, ஆனால் login தோல்வியடைகிறது. உங்கள் local port மற்றும் remote port மாறுபடுவதால், Origin சரிபார்ப்பு தோல்வியடைகிறது மற்றும் journalctl -u cockpit அதை காட்டுகிறது. போர்ட்களை (ports) சரியாக அமைக்கவும், அல்லது /etc/cockpit/cockpit.conf-ல் Origins-ஐ அமைக்கவும்.
Proxy-க்கு பின்னால் Webmin-ஐ வைத்த பிறகு அதன் படிவங்கள் (forms) செயல்படவில்லை. Referer சரிபார்ப்பு அவற்றை நிராகரிக்கிறது. /etc/webmin/miniserv.conf-ல் உள்ள referers=-ல் proxy hostname-ஐ சேர்க்கவும், மேலும் ஒரு path-ன் கீழ் பேனல் இயங்கும்போது webprefix=-ஐ அமைக்கவும்.
ஒரு பேனல் வெளிப்படையாக (exposed) உள்ளதா என்று உங்களுக்குத் தெரியவில்லை. sudo ss -lntp | grep -E '9090|10000' சர்வரிலிருந்தே அதற்குப் பதிலளிக்கும், மேலும் ஒவ்வொரு login முயற்சியையும் Webmin /var/webmin/miniserv.log-ல் எழுதும். அது எவ்வாறு இயங்குகிறது என்பதில் மாற்றம் செய்த பிறகு, அந்த கோப்பை ஒருமுறை வாசிப்பது நல்லது.
FAQ
ஒரு தனி Ubuntu VPS-க்கு Cockpit சிறந்ததா அல்லது Webmin சிறந்ததா?
பெரும்பாலான பயனர்களுக்கு Cockpit-ஐ பரிந்துரைக்கிறோம். இது Ubuntu-வின் சொந்த repository-லிருந்து கிடைப்பதாலும், கணினியின் பிற மென்பொருட்களுடன் இணைந்து புதுப்பிக்கப்படுவதாலும், browser session திறந்திருக்கும்போது மட்டுமே இயங்குவதாலும் இது பாதுகாப்பானது. Cockpit கையாளாத BIND அல்லது Postfix போன்ற சேவைகளை form-based முறையில் நிர்வகிக்க வேண்டியிருந்தால் மட்டும் Webmin-ஐத் தேர்ந்தெடுக்கவும். ஆனால், Webmin-ன் web server எப்போதும் root உரிமையுடன் இயங்கும் என்பதையும், அதன் அப்டேட்கள் Webmin-ன் சொந்த repository-லிருந்து வரும் என்பதையும் கவனத்தில் கொள்ளவும்.
ஒரே server-ல் Cockpit மற்றும் Webmin இரண்டையும் இயக்க முடியுமா?
ஆம், இயக்கலாம். இவை முறையே 9090 மற்றும் 10000 ஆகிய வெவ்வேறு ports-ஐப் பயன்படுத்துவதால் அவற்றுக்கிடையே மோதல் ஏற்படாது; ஏனெனில் இவை இரண்டையும் கணினியின் மீது முழு உரிமை கொண்ட மென்பொருட்களாக இல்லாமல், கணினியை நிர்வகிக்கும் கருவிகளாகவே செயல்படுகின்றன. இருப்பினும், இது ஒரு சிறந்த நடைமுறை அல்ல. ஒவ்வொரு panel-ம் root உரிமையைப் பெறக்கூடிய தனித்தனி login-களைக் கொண்டிருப்பதால், சில கிளிக்குகளைச் சேமிப்பதற்காக உங்கள் server-ன் பாதுகாப்பு அபாயத்தை இருமடங்காக்குகிறீர்கள். இரண்டையும் நிறுவினால், இரண்டையும் 127.0.0.1-ல் bind செய்து, SSH tunnel வழியாக அணுகவும்.
9090 அல்லது 10000 port-களை இணையத்திற்குத் திறந்து வைப்பது பாதுகாப்பானதா?
password login-ஐப் பயன்படுத்தினால் பாதுகாப்பானது அல்ல. இரண்டு panel-களும் root உரிமையை வழங்கக்கூடியவை, மேலும் port-களைத் திறந்த சில மணிநேரங்களிலேயே வழக்கமான ஸ்கேனிங் மூலம் இவை கண்டறியப்படும். panel-ஐ 127.0.0.1-ல் bind செய்து, பின் ssh -N -L 9090:127.0.0.1:9090 user@host-ஐ இயக்கி, https://localhost:9090-க்குச் செல்லவும். sudo ss -lntp | grep 9090 மூலம் உறுதிப்படுத்தவும்; இது 0.0.0.0:9090-க்கு பதிலாக 127.0.0.1:9090-ஐக் காட்ட வேண்டும். அங்கீகரிக்கப்பட்ட (authenticated) reverse proxy-ஐப் பயன்படுத்துவது ஒரு ஏற்றுக்கொள்ளத்தக்க இரண்டாவது வழிமுறை.
SSH key மூலம் login செய்ய முடிந்தாலும், Cockpit login ஏன் தோல்வியடைகிறது?
Cockpit, Unix password-ஐப் பயன்படுத்தி PAM வழியாகவே அங்கீகாரம் செய்கிறது; அதன் login பக்கம் SSH key-களை ஏற்றுக்கொள்வதில்லை. பாதுகாப்பை உறுதிப்படுத்தப்பட்ட (hardened) server-களில், கணக்கிற்குப் பயன்படுத்தக்கூடிய password இருக்காது. sudo passwd -S youruser-ஐ இயக்கவும்: இரண்டாவது களத்தில் L இருந்தால், password பூட்டப்பட்டுள்ளது என்று பொருள். இதனால் PAM-ஆல் எதையும் ஏற்றுக்கொள்ள முடியாது, ஒவ்வொரு முயற்சியும் நிராகரிக்கப்படும். sudo passwd youruser மூலம் password-ஐ அமைக்கவும் அல்லது panel-க்கு வேறு ஒரு கணக்கைப் பயன்படுத்தவும்.
Cockpit மூலம் Docker containers-ஐ நிர்வகிக்க முடியுமா?
முடியாது. Cockpit-ன் container பக்கம் cockpit-podman-லிருந்து வருகிறது, இது Podman-ஐ மட்டுமே நிர்வகிக்கும். பழைய Docker module பல ஆண்டுகளுக்கு முன்பே நீக்கப்பட்டுவிட்டது, அது மீண்டும் வராது. உங்கள் சேவைகள் Docker-ல் இயங்கினால், அவற்றை SSH வழியாக version control-ல் உள்ள compose file மூலம் நிர்வகிக்கவும். கணினியின் journal மற்றும் disks போன்ற பிற பகுதிகளை நிர்வகிக்க Cockpit-ஐப் பயன்படுத்தவும்.