LXC-Container für Schulserver – 03 – Webmin einrichten

Unser altes Server-Equipment erhält moderne Systemcontainer der leicht­ge­wichtigen und flexiblen Ubuntulösung LXD. Achtung Werbesprech: »Bare-metal performance for guests, Easy sharing of hardware resources, Easy monitoring of guest processes, Rapid provisioning, instant guest boot, Snap­­shots, Extensible storage and networking«. Stimmt bis jetzt alles. Nun zur tatsächlichen Nutzung von Containern, einer wurde in dieser Serie schon eingerichtet.

Containerbesuch

Auf dem Hostsystem zeigt sich der Zustand:
lxc list
+------+---------+------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+------+------+------------+-----------+
| c1 | RUNNING | 10.10.10.100 (eth0) | | PERSISTENT | 0 |
+------+---------+------+------+------------+-----------+

Für einen ersten Snapshot Container stoppen:
lxc stop c1
lxc list
+------+---------+------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+------+------+------------+-----------+
| c1 | STOPPED | | | PERSISTENT | 0 |
+------+---------+------+------+------------+-----------+

Dann einen Snapshot erzeugen:
sudo lxc snapshot x1 ubuntu-snap-01
bigboss@vmhost02:~$ lxc list
+------+---------+------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+------+------+------------+-----------+
| c1 | STOPPED | | | PERSISTENT | 1 |
+------+---------+------+------+------------+-----------+

Container starten:
lxc start c1
lxc list
+------+---------+------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+------+------+------------+-----------+
| c1 | RUNNING | 10.10.10.100 (eth0) | | PERSISTENT | 1 |
+------+---------+------+------+------------+-----------+

Dann in den Probecontainer »einloggen« in eine Rootshell mittels:
lxc exec c1 bash
Ein Update kann nicht schaden und bringt den Container auf Stand. Nun folgt die

Installation von Webmin

Hier geschieht wie jegliches anderes dieser LXD-Serie auf eigene Gefahr. Webmin stand wg. Sicher­heits­lücken u.a. in der Kritik. Ich installiere es auf Probeserver in Probe­um­gebung, um Erfah­run­gen mit SAMBA-Verwaltung zu sammeln.
sh -c 'echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list'
Wer diese Antwort erhält, hat ein kleineres Problem:
unable to resolve host c1
…was gelöst werden kann mit entsprechenden Eintrag des Hostnamens:
nano /etc/hosts
127.0.0.1 localhost c1
127.0.1.1 c1

Nun weiter:
sh -c 'echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list'
wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
OK
apt update
apt install webmin
The following additional packages will be installed:
apt-show-versions libapt-pkg-perl libauthen-pam-perl libio-pty-perl libnet-ssleay-perl libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal
Suggested packages:
python-doc python-tk python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
apt-show-versions libapt-pkg-perl libauthen-pam-perl libio-pty-perl libnet-ssleay-perl libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal webmin
0 upgraded, 13 newly installed, 0 to remove and 5 not upgraded.
Need to get 19.7 MB of archives.
.
After this operation, 192 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Damit wird Webmin in aktueller Fassung (wichtiger Hinweis: unbedingt auf Version 1.881 updaten, wegen nerviger Bugs!) installiert. Ein letzter Hinweis an den User:
Setting up webmin (1.880) ...
Webmin install complete. You can now login to https://c1:10000/
as root with your root password
, or as any user who can use sudo
to run commands as root.

Webmin starten

Will man Webmin erreichen, dann gibt man im Netzwerk obige Addresse an. Da wahr­schein­lich der Container »c1« bei Dir noch nicht im DNS eingetragen ist, nimm prak­ti­scher­weise folgende URL: https://IP-des-Containers:10000/
Da Webmin sich selbst eigensigniertes Zertifikat ausgestellt hat, wird der Webbrowser misstrauisch und verweigert das Öffnen Error - Access Denied for 192.168.xxx.xxx, was man per händische Legitimation des Zertifikats ausräumt.

Rootaccount für Webmin bauen

Nun kann man sich mit dem Rootaccount des Containers in Webmin einloggen. Vorab, es wird scheitern, denn die LXD-Container hat per default keinen eingerichtet! Deshalb folgendes nachholen:
adduser containerchef
Adding user `containerchef' ...
Adding new group `containerchef' (1001) ...
Adding new user `containerchef' (1001) with group `containerchefs' ...
Creating home directory `/home/containerchef' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for containerchef
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
# user containerchef zum root machen
usermod -aG sudo containerchef


Sicherheitshinweise

  • der Webmin-Rootuser sollte nicht derselbe werden wie der des Containerhosts bzw. man kann gleich nach dem ersten Einloggen in Webmin Änderungen vornehmen. Vorsicht! Da Webmin sehr viele Funktionen hat, könnte ein böswilliger Benutzer bei einem Zugriff die Sicherheit des gesamten Systems gefährden. Im Allgemeinen wird deshalb von der Verwendung derartiger Schnittstellen bei wichtigen Systemen mit starken Sicherheitsauflagen (Firewall, sensible Server usw.) abgeraten.
  • Spätestens jetzt, besser vorher sollte der Port 10000 (später 20000 für Usermin usw.) von der Firewall gesperrt sein, damit niemand Zugriff auf Webmin erhält.
  • Webmin muss immer aktuell gehalten werden, wie jede Software auf einem Server. Updates lassen sich übrigens automatisiert (tolles Feature von Webmin) einstellen.

Nun kann man Webmin restarten /etc/init.d/webmin restart, vielleicht auch den Container sudo lxc restart x1. Dann zu einem Webbrowser wechseln und mit https://IP-des-Containers:10000/ für Webmin einloggen.

Hurra, es klappt!

One more thing

Wer sich fragt, ob vielleicht mal die MAC seines Containers verschwindet, kann sich beruhigen. Jeder Container behält seine MAC-Addresse wie sie zum ersten Launch erzeugt wurde. Den Wert erhält man:
lxc config show c1
# präziser
lxc config get c1 volatile.NIC_NAME.hwaddr

Wenn eine MAC-Addresse gesetzt werden soll, dann geht auch:
lxc config set container_name volatile.eth0.hwaddr yo:ur:ma:ca:dd:ress
Um keine Konflikte von virtuellen Container-Systemen mit echten MAC-Adressen im Netzwerk zu riskieren, sollte man nur ein bestimmte Range verwenden, dabei hilft ein Online-Generator.

Links

Webmin-Wikki

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>