UUGRN:Jails/einrichten: Unterschied zwischen den Versionen

Aus UUGRN
K (div updates)
(→‎Vorbereitungen: rsa key generieren statt dsa-key)
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:
Jedes [[UUGRN:Mitgliedschaft|aktive Vereinsmitglied]] kann auf Wunsch ein eigenes Jail bekommen.  
Jedes [[UUGRN:Mitgliedschaft|aktive Vereinsmitglied]] kann auf Wunsch ein eigenes Jail bekommen.  
Voraussetzung hierfür ist ein User-Account auf [[UUGRN:Jails/shell|shell.uugrn.org]] und dort außerdem ein ssh-Schlüsselpaar, welches generiert werden sollte:
Voraussetzung hierfür ist ein User-Account auf [[UUGRN:Jails/shell|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.
  user@shell.uugrn.org:~$ '''ssh-keygen -t rsa'''
  Enter file in which to save the key (/home/user/.ssh/id_dsa): '''<return>'''
  Generating public/private rsa key pair.
  Enter file in which to save the key (/home/user/.ssh/id_rsa): '''<return>'''
  Created directory '/home/user/.ssh'.
  Created directory '/home/user/.ssh'.
  Enter passphrase (empty for no passphrase): '''*hier eine passphrase eingeben und gut merken*'''
  Enter passphrase (empty for no passphrase): '''*hier eine passphrase eingeben und gut merken*'''
  Enter same passphrase again: '''*nochmal wiederholen*'''
  Enter same passphrase again: '''*nochmal wiederholen*'''
  Your identification has been saved in /home/user/.ssh/id_dsa.
  Your identification has been saved in /home/user/.ssh/id_rsa.
  Your public key has been saved in /home/user/.ssh/id_dsa.pub.
  Your public key has been saved in /home/user/.ssh/id_rsa.pub.
  The key fingerprint is:
  The key fingerprint is:
  6d:28:7e:fc:d8:ed:46:37:6d:c7:56:da:96:7b:47:11 user@shell.uugrn.org
  SHA256:0PMg0sq87v62FTvPdZtfZY3xj3M9w2zvZUZBa5QAbDg user@shell.uugrn.org
The key's randomart image is:
+---[RSA 2048]----+
|          o....o.|
|    . . E o  o..|
|    . + + o  .+ |
|  o o o +    .+o|
|    +  S .  . *|
|    .  o    o++|
|    .  +  . +*O|
|  .  .. + . ..B*|
|  o+oo.  o  oo+|
+----[SHA256]-----+


Im Anschluss gibt es die beiden Dateien
Im Anschluss gibt es die beiden Dateien


  $ '''ls -la .ssh/'''
  user@shell.uugrn.org:~$ '''ls -la .ssh/'''
  total 8
  insgesamt 32
  drwx------ 2 user  users 512 May 14 00:18 .
  drwx------   2 user user  4096 Sep 3 20:12 .
  drwxr-xr-x  3 user  users  512 May 14 00:18 ..
  drwxr-xr-x 140 user user 20480 Sep 3 20:12 ..
  -rw------- 1 user  users 672 May 14 00:18 id_dsa
  -rw-------   1 user user  1675 Sep 3 20:12 id_rsa
  -rw-r--r-- 1 user  users  616 May 14 00:18 id_dsa.pub
  -rw-r--r--   1 user user  392 Sep 3 20:12 id_rsa.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 [[UUGRN:Jails/shell|shell.uugrn.org]] definitiv nicht gegeben.
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 [[UUGRN:Jails/shell|shell.uugrn.org]] definitiv nicht gegeben.
Zeile 88: Zeile 102:


Den Umfang der installierten Software kann man mit {{man|freebsd|8|pkg_info}} nachsehen.  
Den Umfang der installierten Software kann man mit {{man|freebsd|8|pkg_info}} nachsehen.  
Vorkompilierte Software-Pakete lassen sich einfach mit {{man|freebsd|8|pkg_add}} installieren, etwa von einem FTP-Server:
Vorkompilierte Software-Pakete lassen sich einfach mit {{man|freebsd|8|pkg_add}} installieren:
  # '''pkg_add -r -v pdksh'''
  # '''pkg_add -v pdksh'''
  [...]
  [...]


Empfohlen wird jedoch der Einsatz der Ports mit dem Tool {{man|freebsd|8|portinstall}}. 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.
Empfohlen wird jedoch der Einsatz der Ports mit dem Tool {{man|freebsd|8|portinstall}}. 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 ===
=== Standard Befehle ===
;{{man|freebsd|8|portsdb}} -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.
;{{man|freebsd|1|portsdb}} -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.
;{{man|freebsd|8|portversion}} -vL "=": Alle veralteten Ports auflisten
;{{man|freebsd|1|portversion}} -vL "=": Alle veralteten Ports auflisten
;{{man|freebsd|8|porupgrade}} -a: Alle veralteten Ports updaten
;{{man|freebsd|1|portupgrade}} -a: Alle veralteten Ports updaten
;{{man|freebsd|8|portupgrade}} -r "portname*": Alle Ports, die auf portname* matchen, werden upgedatet, außerdem alle ggf. erforderlichen Abhängigkeiten.
;{{man|freebsd|1|portupgrade}} -r "portname*": Alle Ports, die auf portname* matchen, werden upgedatet, außerdem alle ggf. erforderlichen Abhängigkeiten.
;{{man|freebsd|8|pkgdb}} -F: manchmal ist es erforderlich, die Abhängigkeiten zu korrigieren. Wenn es komplizierter wird, am besten im [[UUGRN:IRC]] nachfragen
;{{man|freebsd|1|pkgdb}} -F: manchmal ist es erforderlich, die Abhängigkeiten zu korrigieren. Wenn es komplizierter wird, am besten im [[UUGRN:IRC]] nachfragen
;{{man|freebsd|8|portinstall}} category/port: Den Port aus dem Verezeichnis /usr/ports/category/port installieren
;{{man|freebsd|1|portinstall}} category/port: Den Port aus dem Verezeichnis /usr/ports/category/port installieren
;{{man|freebsd|8|portinstall}} "portname*": Alle Ports, die auf "portname*" matchen, installieren.
;{{man|freebsd|1|portinstall}} "portname*": Alle Ports, die auf "portname*" matchen, installieren.
;{{man|freebsd|8|portinstall}} -p category/port: Port installieren, dabei ein Package erzeugen. Das landet nach der Installation in /data/ports/packages/
;{{man|freebsd|1|portinstall}} -p category/port: Port installieren, dabei ein Package erzeugen. Das landet nach der Installation in /data/ports/packages/
;{{man|freebsd|8|portinstall}} -P category/port: Port installieren, falls möglich ein vorkompiliertes Paket einspielen, anderenfalls selbst kompilieren
;{{man|freebsd|1|portinstall}} -P category/port: Port installieren, falls möglich ein vorkompiliertes Paket einspielen, anderenfalls selbst kompilieren
;{{man|freebsd|8|portinstall}} -PP category/port: Nur vorkompilierte Pakete verwenden (kann, wenn das Release weit zurück liegt fehlschlagen, dann einfach nur -P verwenden)
;{{man|freebsd|1|portinstall}} -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!
Es gibt noch sehr viel mehr Tools, die man kennen sollte. Die Manpages der vorgestellten Befehle verweisen auf diese. Lesen!
Zeile 112: Zeile 127:
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.
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]]
;siehe dazu: [[UUGRN:DNS-Konzept]]


== E-Mail Setup ==
== E-Mail Setup ==
FreeBSD verwendet standardmäßig {{man|freebsd|8|sendmail}} als [[MTA]]. Beim Anlegen der Jails werden diese im DNS entpsrechend mit MX-Records versorgt, sodass ein Mailtransport in das Jail erfolgen kann, siehe dazu [[UUGRN:Mailkonzept]].
FreeBSD verwendet standardmäßig {{man|freebsd|8|sendmail}} 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 [[UUGRN:Jails/mail|mail.uugrn.org]] und [[UUGRN:Jails/up|up.uugrn.org]] eingetragen werden. Dies erledigt ein UUGRN-Admin.
 
;siehe dazu: [[UUGRN:Mailkonzept]]
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 [[UUGRN:Jails/mail|mail.uugrn.org]] und [[UUGRN:Jails/up|up.uugrn.org]] eingetragen werden. Dies erledigt ein UUGRN-Admin.


== Webserver einrichten ==
== Webserver einrichten ==

Aktuelle Version vom 3. September 2016, 18:41 Uhr

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

Vorbereitungen[Bearbeiten]

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:

user@shell.uugrn.org:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): <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_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0PMg0sq87v62FTvPdZtfZY3xj3M9w2zvZUZBa5QAbDg user@shell.uugrn.org
The key's randomart image is:
+---[RSA 2048]----+
|          o....o.|
|     . . E o  o..|
|    . + + o   .+ |
|   o o o +    .+o|
|    +   S .   . *|
|     .   o    o++|
|    .   +   . +*O|
|   .  .. + . ..B*|
|   o+oo.  o   oo+|
+----[SHA256]-----+

Im Anschluss gibt es die beiden Dateien

user@shell.uugrn.org:~$ ls -la .ssh/
insgesamt 32
drwx------   2 user user  4096 Sep  3 20:12 .
drwxr-xr-x 140 user user 20480 Sep  3 20:12 ..
-rw-------   1 user user  1675 Sep  3 20:12 id_rsa
-rw-r--r--   1 user user   392 Sep  3 20:12 id_rsa.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[Bearbeiten]

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[Bearbeiten]

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[Bearbeiten]

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[Bearbeiten]

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[Bearbeiten]

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[Bearbeiten]

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[Bearbeiten]

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[Bearbeiten]

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.