UUGRN:Jails/einrichten

Aus UUGRN

Dieser Artikel beschreibt, was der Inhaber eines UUGRN:Jails nach dem ersten erfolgreichen Login zu tun hat.

Vorbereitungen

Jedes aktive Vereinsmitglied kann auf Wunsch ein eigenes Jail bekommen. Voraussetzung hierfür ist ein User-Account auf shell.uugrn.org und dort außerdem ein ssh-Schlüsselpaar, welches generiert werden sollte:

$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa): <return>
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): *hier eine passphrase eingeben und gut merken*
Enter same passphrase again: *nochmal wiederholen*
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
6d:28:7e:fc:d8:ed:46:37:6d:c7:56:da:96:7b:47:11 user@shell.uugrn.org

Im Anschluss gibt es die beiden Dateien

$ ls -la .ssh/
total 8
drwx------  2 user  users  512 May 14 00:18 .
drwxr-xr-x  3 user  users  512 May 14 00:18 ..
-rw-------  1 user  users  672 May 14 00:18 id_dsa
-rw-r--r--  1 user  users  616 May 14 00:18 id_dsa.pub

Die Passphrase schützt den Schlüssel vor Missbrauch. Ein SSH-Key ohne Passphrase darf man nur auf einem System verwenden, welches man unmittelbar unter seiner eigenen Kontrolle hat. Das ist bei shell.uugrn.org definitiv nicht gegeben.

Der soeben generierte Schlüssel wird für den root-Account im eigenen Jail verwendet. Ein UUGRN-Admin muss den Public-Key entsprechend in das Jail übertragen.

einloggen als root

Ein Mitgliedsjail hat initial keinen Hauptbenutzer, dieser wird im Verlauf erst noch selbst erstellt. Der erste Login durch den Jailinhaber erfolgt daher als root von shell.uugrn.org aus, der erforderliche SSH-Key sollte vorher bereits angelegt sein. Idealerweise findet diese Übergabe im Dialog (z.B. UUGRN:FIXME Treffen oder UUGRN:IRC) statt, denn aufgrund der Passphrase des SSH-Keys kann der UUGRN-Admin selbst nicht testen, ob der Login in das eigene Jail funktioniert.


Hauptbenutzer einrichten

Es sollte für alle weiteren Aufgaben ein Hauptbenutzer eingerichtet werden. Dieser kann sich dann auch per ssh direkt in das Jail einloggen. Neue Benutzer anlegen geht hier der Einfachheit halber direkt mit dem Kommando adduser(8), wie beispielsweise die folgende Terminalsitzung zeigt (Benutzereingaben sind fett formatiert):

root@meinjail:~# adduser 
Username: username
Full name: Vorname Nachname
Uid (Leave empty for default): <return>
Login group [username]: staff
Login group is staff. Invite username into other groups? []: wheel
Login class [default]: <return>
Shell (sh csh tcsh bash rbash nologin) [sh]: bash
Home directory [/home/username]: <return>
Use password-based authentication? [yes]: <return>
Use an empty password? (yes/no) [no]: <return>
Use a random password? (yes/no) [no]: <return>
Enter password: *geheimes passwort*
Enter password again: *geheimes passwort*
Lock out the account after creation? [no]: <return>
Username   : username
Password   : *****
Full Name  : Vorname Nachname
Uid        : 1004
Class      : 
Groups     : staff wheel
Home       : /home/username
Shell      : /usr/local/bin/bash
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (username) to the user database.
Add another user? (yes/no): no
Goodbye!

Mit dem soeben angelegten Benutzername kann man sich nun per SSH von irgendwoher einloggen. Um root werden zu können, wird standardmäßig su(1) verwendet. Hierfür ist es erforderlich, dass der Benutzer in der Gruppe wheel eingetragen ist, das kann man einfach prüfen:

root@meinjail:~# id username
uid=1004(username) gid=20(staff) groups=20(staff),0(wheel)

Damit ein Benutzer per su - root werden kann, muss root ein Passwort haben. Initial ist das Passwort zufällig bzw. invalid. Mit der noch offenen root-Shell kann man das root-Passwort leicht setzen:

root@t@meinjail:~# passwd
Changing local password for root
New Password: *supergeheimespasswort*
Retype New Password: *supergeheimespasswort*

Alternativ kann sudo(8) auch verwendet werden, sofern es entsprechend konfiguriert ist. Hierfür wird dann das Passwort des aufrufenden Benutzers abgefragt, nicht das root-Passwort.

Softwarepakete

Je nach gewünschtem Jail-Setup gibt es mehr oder weniger umfangreich vorinstallierte Software.

Den Umfang der installierten Software kann man mit pkg_info(8) nachsehen. Vorkompilierte Software-Pakete lassen sich einfach mit pkg_add(8) installieren:

# pkg_add -v pdksh
[...]

Empfohlen wird jedoch der Einsatz der Ports mit dem Tool portinstall(8). Der Einsatz von einem gemeinsamen, nur-lese Portsbaum unter /usr/ports/ ist in den Jails entsprechend vorkonfiguriert: alle Schreibzugriffe auf die Ports im Jail werden nach /data/ports/ umgeleitet.

Es existieren zahlreiche vorkompilierte Pakete für die aktuellen Jails. Diese liegen read-only unter /usr/ports/packages/All/.

Standard Befehle

portsdb(1) -Fu
Lädt den aktuellen Port-INDEX und speichert in nach /data/ports. Kann täglich, gerne mehrmals ausgeführt werden, wird aber nur täglich upgedatet.
portversion(1) -vL "="
Alle veralteten Ports auflisten
portupgrade(1) -a
Alle veralteten Ports updaten
portupgrade(1) -r "portname*"
Alle Ports, die auf portname* matchen, werden upgedatet, außerdem alle ggf. erforderlichen Abhängigkeiten.
pkgdb(1) -F
manchmal ist es erforderlich, die Abhängigkeiten zu korrigieren. Wenn es komplizierter wird, am besten im UUGRN:IRC nachfragen
portinstall(1) category/port
Den Port aus dem Verezeichnis /usr/ports/category/port installieren
portinstall(1) "portname*"
Alle Ports, die auf "portname*" matchen, installieren.
portinstall(1) -p category/port
Port installieren, dabei ein Package erzeugen. Das landet nach der Installation in /data/ports/packages/
portinstall(1) -P category/port
Port installieren, falls möglich ein vorkompiliertes Paket einspielen, anderenfalls selbst kompilieren
portinstall(1) -PP category/port
Nur vorkompilierte Pakete verwenden (kann, wenn das Release weit zurück liegt fehlschlagen, dann einfach nur -P verwenden)

Es gibt noch sehr viel mehr Tools, die man kennen sollte. Die Manpages der vorgestellten Befehle verweisen auf diese. Lesen!

eigene Domains verwalten

Das Mitgliedsjail kann durch einen UUGRN-Admin für die Verwaltung eigener Domains vorbereitet werden. Sofern nicht explizit anders gewünscht, wird ein Hidden-Primary Setup angeboten, neue Domains können für einen kleinen Betrag direkt über Benutzer:Jpru bestellt werden. Ein UUGRN-Admin ist hier Ansprechpartner und wird das koordinieren. Bestehende Domains können per KK-Antrag umgezogen werden. Für andere Lösungen bitte zuerst mit einem UUGRN-Admin abstimmen.

siehe dazu
UUGRN:DNS-Konzept

E-Mail Setup

FreeBSD verwendet standardmäßig sendmail(8) als MTA. Beim Anlegen der Jails werden diese im DNS entpsrechend mit MX-Records versorgt, sodass ein Mailtransport in das Jail erfolgen kann. Nicht nur Mails an user@meinjail.uugrn.org können zugestellt werden, sondern natürlich auch an bestehende, eigene Domains. Damit dies funktioniert, müssen diese Domains bei den UUGRN-Mailservern mail.uugrn.org und up.uugrn.org eingetragen werden. Dies erledigt ein UUGRN-Admin.

siehe dazu
UUGRN:Mailkonzept

Webserver einrichten

Im Standardumfang UUGRN:Jails/Templates/large wird Apache 2.2 mit PHP5 vorinstalliert. Die Konfigurationsdateien befinden sich unter /usr/local/etc/apache22/* und /usr/local/etc/php*. Das Root-Verzeichnis von Apache liegt bei FreeBSD unter /usr/local/www/, kann aber z.B. analog zu shell.uugrn.org/WWW auch in /data/www/ konfiuriert werden.

Tipp
die Apache-Konfiguration von shell.uugrn.org kann eingesehen oder kopiert werden.

Wichtig ist, dass alle Dienste, die im Jail gestartet werden sollen, ein eintrag in /etc/rc.conf erfolgen muss, z.B.

apache22_enable="YES"

Dienste und Aktivitäten dokumentieren

Die Benutzungsbedingunen für Jails erfordern Transparenz durch Dokumentation. Bitte analog zu den bestehenden Dokumentationen unter UUGRN:Jails#Mitglieder-Jails entsprechend ergänzen.

UUGRN-Wiki verbessern („Stub”)

Dieser Artikel ist leider sehr kurz. Also: Sei mutig und mache aus ihm bitte einen guten Artikel, wenn du mehr zum Thema „Jails/einrichten” weißt.