správa přes web - Webmin


Jiří Čadek, jiri.cadek@student.upce.cz

Obsah:


1 O Webminu obecně

Webmin je aplikace vytvořená v jazyce Perl, která poskytuje webové rozhraní sloužící ke zjednodušení a vizualizaci správy operačního systému především Unixového typu a serverových aplikací. Zakládajícím vývojářem je Jamie Cameron, který v současnosti pracuje ve společnosti Google Inc. v USA. První verze, Webmin 0.1 byla uveřejněna 3. Října 1997.[2]

Správa Linuxového či Unixového systému není triviální záležitostí a vyžaduje znalosti a zkušenosti. Ačkoliv je práce s příkazovou řádkou účinná a rychlá, z počátku se může jevit složitě z důvodu nedostatku vizuálních pomůcek. Tento problém se snaží Webmin překlenout nabídnutím vizuálního rozhraní pro správu jednotlivých služeb a serverů. Správce operačního systému tedy nemusí znát žádné linuxové příkazy. Poskytnuté rozhraní je přístupné přes HTTP protokol, je tedy dostupné téměř kdekoliv a jediným softwarem, který vyžaduje k zobrazení rozhraní je moderní webový prohlížeč. Webmin je tvořen webovým serverema oddělitelnými moduly, které mají za úkol vykonávat jednu konkrétní činnost. Jeho primárním úkolem je usnadňovat správu jednoho serveru. Vývojáři Webminu navíc vyvíjejí i verzi pro obyčejné uživatele, kteří nemájí zájem o spravování operačního systému, nese název Usermin a mezi hlavní funkce patří přístup do e-mailové schánky, změnu hesel nebo například stahování souborů z poskytnuté URL.[3]

Pro správu velkého množství virtuálních serverů vývojáři Webminu poskytují modul Virtualmin, který umožňuje spravovat všechny zvolené virtuální servery přes jednotné rozhraní a vytvořit pro každý server samostatné rozhraní Webmin.[4] Dalším rozhraním pro správu virtuálních serveru je Cloudmin, které umožňuje správu instancí virtuálních systémů založených na technologiích XEN, KVM a OpenVZ. Cloudmin je určen zejména hostingovým společnostem, které pronajímají virtuální servery.[5] Všechna zmíněná rozhraní jsou dostupná zdarma pod licencí GNU GPL. Virtualmin a Cloudmin jsou navíc dostupné v komerční verzi, která obsahuje funkce nezahrnuté ve verzi poskytované zdarma.

2 Instalace Webminu

2.1 Podporované OS

Webové rozhraní Webmin je dostupné pro široké spektrum OS systému, nejen Linuxového/Unixového typu. Je možné jej v omezené míře využít například i ke správě operačního systému Microsoft Windows. Na oficiálních stránkách jsou k dispozici podrobné popisy instalace Webminu na OS podporující balíčkovací systém RPM (např. RedHat) a APT (např. Debian). Dále jsou zde též obsaženy návody pro instalaci na Solaris a Windows. V případě kompilace ze zdrojového kódu je možno nainstalovat Webmin na libovolný z 94 podporovaných operačních systémů, jejichž seznam je též k nahlédnutí na oficiální stránkách programu.[10]

2.2 Instalace na Debian a Ubuntu

Jednou z cest instalace webového rozhraní Webmin na Debian doporučovanou na domovských stránkách Webminu je instalace pomocí DEB balíčku.
Balíček nejprve stáhneme z oficiální webové stránky, ke stažení můžeme využít například nástroj wget.
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.580_all.deb
Následně využijeme aplikace dpkg s přepínačem –i k instalaci staženého balíčku.
dpkg --install webmin_1.580_all.deb
Pokud používáme čerstvou instalaci Debianu, nejspíše nemáme nainstalovány balíčky, které Webmin ke svému chodu vyžaduje. Předchozí příkaz nás o této skutečnosti informuje hlášením o nesplněných závislostech.[7]
dpkg: dependency problems prevent configuration of webmin:
webmin depends on libnet-ssleay-perl; however:
Package libnet-ssleay-perl is not installed.
webmin depends on libauthen-pam-perl; however:
Package libauthen-pam-perl is not installed.
webmin depends on libio-pty-perl; however:
Package libio-pty-perl is not installed.
webmin depends on apt-show-versions; however:
Package apt-show-versions is not installed.
dpkg: error processing webmin (--install):
dependency problems - leaving unconfigured
Potřebné balíčky doinstalujeme příkazem:
apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
Následně by již aplikace dpkg měla být schopna webmin bez problému nainstalovat, úspěch je nám oznámen následujícím hlášením:
Webmin install complete. You can now login to https://domena:10000/
Nyní se již můžeme přihlásit do webového rozhraní Webmin na adrese, která nám byla v konzoli oznámena. K přihlášení lze využít účet správce operačního systému (root).

Instalace na Ubuntu je velmi podobná. Na rozdíl od instalace na Debian nás však může očekávat chybové hlášení o nenalezených balících po pokusu o jejich instalaci. Před spuštěním instalace balíčků je nutno v Ubuntu povolit repozitáře Universe odkomentováním řádků končících tímto slovem v souboru zdrojů:

/etc/apt/sources.list
Ubuntu standardně nevyužívá účty typu „root“, pro přihlášení do Webminu je možno použít libovolný účet, který je oprávněn k vykonávání úloh správce systému za použití příkazu sudo.[7]

Webmin je též možno instalovat přímo z repozitářů. Do souboru sources.list přidáme následující repozitáře:

deb http://download.webmin.com/download/repository sarge contrib deb
http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
K ověření repozitářů je potřeba přidat GPG klíč, jeho přidání zajistíme příkazy:[7]
cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
Pokud přeskočíme tento krok, budeme při každé instalaci balíčků z tohoto repozitáře upozornění, že repozitář není ověřený, instalaci můžeme vykonat potvrzením přečtení tohoto upozornění. Aktualizujeme databázi balíčků
apt-get update
A na konec nainstalujeme Webmin z přidaných repozitářů
apt-get install webmin

2.3 Konfigurace

Hlavní konfigurační soubor miniserv.conf je možno nalézt standardně na adrese:
/etc/webmin/miniserv.conf
V tomto konfiguračním souboru je možno nastavit například port na kterém je Webmin provozován, zda má Webmin využívat SSL a cesty ke skriptům a modulům na serveru. Pro opětovné načtení konfiguračního souboru je nutno Webmin restartovat příkazem:
/etc/init.d/webmin restart

3 Moduly a jejich přidávání

Moduly jsou oddělené prvky webového rozhraní Webmin. Každý modul zastává konkrétní funkci pro kterou je určen. Je možno moduly dle potřeb odebírat i přidávat. Webmin standardně po instalaci obsahuje 113 základních modulů rozdělených do 8 kategorií: [11]

Kategorie lze přidávat a přejmenovávat v modulu „Konfigurace Webminu“ a jeho funkce „Editovat kategorie“.

Kromě 113 zmíněných modulů je možno využít moduly tvořené komunitou. Moduly je možno přidávat zkopírováním jejich zdrojového kódu do příslušných adresářů Webminu (viz kapitola vývoj vlastního modulu), nebo jejich instalací přímo z rozhraní Webmin pomocí modulu „Konfigurace Webminu“ a jeho funkce „Moduly Webminu“. Instalace modulů
Funkce umožňuje instalaci nových modulů z lokálního souboru (souboru uloženého na serveru), ze staženého souboru, který je uložen na pevném disku počítače uživatele Webminu, stáhnutím ze zadaného URL pomocí FTP nebo HTTP, z balíčku poskytovaného přímo od vývojářů Webminu a instalaci modulů třetích stran z předpřipraveného repozitáře.
Modul nám navíc umožňuje zvolit ignorování závislostí instalovaných modulů a automatické přidělení práv uživatelům a skupinám.

4 Vývoj vlastního modulu

Vlastní modul je možno vyvíjet v libovolném jazyce, avšak aby modul mohl bezproblémově přistupovat k webmin API, je vhodné využít jazyka Perl verze 5.8 a vyšší.
Každý modul je uložen ve svém vlastním podadresáři k hlavnímu adresáři Webminu. Adresu hlavního adresáře Webminu je možno pod Debianem zjistit z konfiguračního souboru miniserv.conf a položky root. (viz kapitola Instalace Webminu)

root=/usr/share/webmin
Každý modul pro Webmin musí obsahovat minimálně 3 soubory: [1]

module.info - Meta-informace o modulu a OS na kterém je provozován. Soubor obsahuje informace o OS na kterém je modul použitelný, kategorii v které je modul zařazen a verzi modulu.

desc=Vlastní modul
category=system
version=1.0

lang/en – Textové informace používané modulem v příslušném jazyce, pro jazyk Český použijeme pojmenování souboru „cz“.
Informace jsou v souboru strukturovány následujícím způsobem:

index_domain=Doména stránky
index_directory=Umístění stránek
index_none=Žádný záznam ještě nebyl vytvořen
index_add=Přidat nový záznam
index_return=výpis stránek
Ve skriptech jsou soubory následně zpřístupňovány zápisem:
$text{'index_domain'}
Výběr jazykové mutace se řídí globálním nastavením rozhraní Webmin.

index.cgi – Úvodní stránka modulu, obsahuje již samotný zdrojový kód modulu napsaný v jazyce Perl.
Doporučuje se používat i obrázkový soubor: images/icon.gif – Ikona, která se bude zobrazovat v hlavním menu. Její rozměry by měli být 48x48 pixelů. Zobrazuje se pouze v některých šablonách vzhledu Webminu.

Veškeré funkce, které CGI program volá by měli být umístěny v souboru, jenž ponese stejný název jako modul, navíc však přidáme postfix –lib[1] [9] , například vlastnimodul-lib.pl. Před použitím nově vytvořeného modulu, je nutno smazat soubor module.infos.cache, který se nachází na adrese:

/etc/webmin/module.infos.cache
Jeho smazáním vyprázdníme cache paměť obsahující seznam známých modulů.
Následně, aby byl modul pro konkrétního uživatele viditelný, je nutno editovat soubor webmin.acl, který se nachází ve stejném adresáři a přidat uživateli pravomoce používat tento modul nebo využít modul „Uživatelé a skupiny“ k přidělení práv použití modulu pro příslušného uživatele. (viz kapitola správa uživatelů Webminu).
V případě, že chceme uživatelům dovolit editovat některý, z námi zvolených souborů, musíme cestu k tomuto souboru uložit do souboru config, který umístíme do adresáře obsahujícího konfigurační nastavení Webminu do podadresáře s názvem našeho modulu, pod Debianem například:
/etc/webmin/vlastnimodul
Veškeré CGI programy jsou spouštěny s privilegii správce OS. Mají tedy možnost editovat libovolný soubor.[9]
Z výsledných zdrojových kódů je možno vytvořit instalační balíček pro Webmin. Instalační balíček je TAR archivem. Vytvoříme jej zadáním příkazů:
tar cvzf /tmp/vlastnimodul.wbm.gz vlastnimodul
Pro moduly vytvořené kompresí se využívá přípony .wbm.gz, pro moduly vytvořené bez použití komprese pouze .wbm.

5 Správa uživatelů Webminu

Pro přihlášení do Webminu se využívají účty, které mohou být volitelně shodné s účty pro přihlášení do operačního systému. Modul pro správu uživatelů a skupin Webminu je standardně umístěn v kategorii „Webmin“, je pojmenován „Uživatelé Webminu“.
Modul uživatelé Webminu
Ve vrchní tabulce jsou zobrazeni Webmin uživatelé, nového uživatele můžeme přidat ručně, pomocí funkce „Vytvořit nového uživatele“, nebo převodem uživatele operačního systému na uživatele Webminu pomocí funkce „Převést Unix uživatele na Webmin uživatele“. Modul umožňuje i funkci automatické synchronizace UNIX uživatelů s uživateli Webminu. Ukládat uživatelské účty do databází typu MySQL, a PostgreSQL nebo pomocí protokolu LDAP (Lightweight Directory Access Protocol, položky jsou ukládány ve formě záznamů s atributy do stromové struktury). Nastavit omezení pro tvorbu hesel a zobrazit relace aktuálně přihlášených uživatelů. Na systému Solaris umožňuj využít systém RBAC (role-based access control), který je založen na přidělování oprávnění v závislosti na rolích.
Abychom si usnadnili tvorbu uživatelů ručním způsobem, můžeme si vytvořit skupinu, která bude pokrývat společné nastavení vybraných uživatelů. Skupina nám umožňuje nastavit možnost použití konkrétních modulů pro uživatele ve skupině. Zároveň je možno skupině přidělit skupinu nadřízenou, z které vytvářená skupina převezme nastavení. Převzaté nastavení je možno doplnit.

Ruční přidávání Webmin uživatelů je rozděleno do 5 kroků:

Z důvodu rozsáhlosti těchto kroků jsou rozebrány pouze možnosti, jejichž princip není patrný z názvu.

V prvním kroku nastavíme zákaldní uživatelské údaje, jméno uživatele, skupinu, do které jej chceme zařadit, heslo pod kterým se bude přihlašovat a jeho skutečné jméno. Heslo je možno nastavit tak, aby se pokaždé převzalo z přihlašovacího účtu do operačního systému. (Pouze v případě, že uživatel v OS již má účet).[6] (viz kapitola autentifikace)

Sprava uživatelů Webminu, krok 1.

V druhém kroku je podstatná volba nastavení jméno SSL certifikátu, který má být využit k přihlašování uživatele.

Sprava uživatelů Webminu, krok 2.

Krok třetí „Volba zabezpečení a dalších omezení“ slouží k omezení doby, kdy je uživateli umožněno se do Webminu přihlásit. V předposledním kroku je možno vybrat moduly, k jejichž využívání bude uživatel oprávněn. Moduly, které zůstanou nevybrány uživatel neuvidí.[12]

V poslední části nastavíme uživateli viditelné adresáře v souborovém manažeru Webminu, zda mají být viditelné soubory s tečkou, které jsou v Linuxu standardně neviditelné (např. .htaccess), zda se mají soubory vypisovat pod účtem, přes který získává informace Webmin nebo přes jiný Linuxový účet. Poslední volbou, jejíž princip nemusí být z názvu zřejmý je „ Lze akceptovat RPC volání“. RPC (Remote procedure call) klient může přistoupit přes Webmin k vzdálenému počítači, vždy jsou mu však přidělena všechna práva, je tedy vhodné tuto volbu povolit pouze uživatelům s všemi právy v místním systému.[12]

6 Správa uživatelů operačního systému

Pro správu uživatelů a skupin operačního systému má Webmin vyhrazen modul „Uživatelé a skupiny“ z kategorie „Systém“.
Hlavní stránka modulu obsahuje dvě záložky, první pro správu uživatelů a druhou pro správu skupin. Na úvodní stránce modulu jsou vypsáni uživatelé OS.

Pomocí funkce „Vytvořit nového uživatele“ vyvoláme formulář s položkami rozdělenými do 4 částí.

V první části vyplníme základní detaily o uživateli, jeho přihlašovací údaje a využívaný Shell. Druhý krok obsahuje volby trvanlivost hesla a vyžadování jeho změny

V následujícím kroku je možno nastavit uživateli primární a sekundární skupinu.
Sprava uživatelů linuxu, krok 3.
Primární skupina bude vlastnit soubory a procesy vytvořené tímto uživatelem. Uživatel bude mít práva pro přístup k souborům, která jsou přidělena této skupině.
Sekundární skupina pouze určuje přístupová práva k souborům. Soubory vytvořené uživatelem, který má nastavenou některou ze sekundárních skupin této skupině patřit nebudou.

V posledním kroku uživateli nastavíme, zda se má domácí (/home/uživatel) adresář přesunout či přejmenovat při úpravách uživatele. Poslední část zajišťuje synchronizaci účtů a modulů.

Po přepnutí na záložku skupin se zobrazí výpis uživatelských skupin operačního systému.
Funkce „Vytvořit novou skupinu“ zobrazí formulář rozdělený do dvou kroků.
Sprava uživatelských skupin v linuxu.
V prvním kroku vyplníme detaily o skupině, její jméno, ID, heslo a přiřadíme skupině její členy. V druhém kroku je pouze výběr, zda se májí změny ve skupině synchronizovat s ostatními moduly. Tato volba umožňuje například synchronizaci Linuxového listu uživatel s listem uživatelů Samby.

7 Autentifikace

K ověření identity využívá Webmin následujících způsobů:

Pro nastavení procesu ověření identity uživatele je Webmin vybaven modulem „Autentikace“. Modul obsahuje poměrné velké množství konfiguračních možností, zaměříme se tedy pouze na podstatné.
První volbou, kterou nám tento modul umožňuje je nastavit hlídání časové prodlevy u hesla. Zapnutá časová prodleva znemožní útočníkům zkoušet uhodnout heslo slovníkovou nebo jinou metodou založenou na opakování přihlašovacích pokusů. Útočníkovi je přihlašování zablokováno po překročení nastaveného počtu chybných pokusů o přihlášení v určené době.

Pokud je vybrána volba „Sledovat blokované hosty, chyby při přihlášení a autentifikaci na syslog“ dochází k odeslání informací o chybných přihlašovacích pokusech do systémových záznamů (logů).
Volba „autentifikace relací“ stanovuje, zda má Webmin uživatele vyzvat k zadání přihlašovacích údajů vlastním dialogem a výsledek přihlášení uložit do cookies nebo zda se má uživatel přihlásit standardní HTTP autentifikací.

Autentifikace relací HTTP Autentifikace
Zdroj: vlastní

Další důležitou položkou nastavení je „Použít PAM pro UNIX autentifikace, je-li to možné“. Pokud má Webmin uživatel nastavenou autentifikaci přihlašovacími údaji do UNIXu (viz kapitola správa uživatelů webminu), může být jeho přihlašovací jméno vyčteno ze souboru /etc/passwd a heslo z /etc/shadow nebo za využití PAM autentifikace. Povolením této volby se starost o autentifikaci přenáší na systém modulů pojmenovaný PAM, který skrze poskytované API umožňuje využít autentifikaci do Webminu UNIXovým účtem. Variantu přihlašování s využitím PAM (Pluggable Authentication Modules) však musí podporovat OS na kterém je Webmin provozován a musí v něm být nainstalované příslušné knihovny (libpalm), většina moderních distribucí však má podporu PAM již předinstalovánu. [8]

Autentifikace přihlášení do Webminu - PAM.

Webmin navíc poskytuje i autentifikaci stylu SQUID, kde autentifikaci provádí externí program. Do vstupního pole vyplníme cestu k programu včetně použitých parametrů. Program musí pracovat na principu SQUID externího autentifikátoru.[8]

8 Závěr

Webmin je kvalitní aplikací pro správu operačního systému Unixového typu a serverových aplikací bez znalostí příkazů. Je vhodný zejména jako pomůcka pro začínající správce, ačkoliv obsahuje volby pro nastavení většiny potřebných služeb, je práci s ním pomalejší než práce přes příkazovou řádku.
Oproti ostatním obdobným systémům poskytovaným zdarma má výhodu v početné uživatelské komunitě a velkého množství rozšíření ve formě modulů, jejichž tvorba nní složitá. Uživatel si tedy bez větších problémů může vytvořit modul pro konfiguraci požadované služby sám.

8 Zdroje