Jails als Grundlage erstellen

Einleitung

Alle Artikel hier basieren auf der Erstellung eines Jails, da ich grundsätzlich jede Anwendung in einer eigenen Umgebung betreibe. Das sorgt für saubere Voraussetzungen und keine unnötig wechselseitige Abhängigkeiten. Jails können Dienste sehr einfach, schlank und sicher betreiben. Für FreeBSD ist es egal, ob eine oder 100 Jails gleichzeitig laufen, relevant sind nur die Dienste, die darin laufen. Dies kann bequem über die TrueNAS Administrations-Webseite oder auch direkt auf der Konsole erfolgen.

Die Verwaltung in TrueNAS wird mit iocage verwaltet und ist vorinstalliert, kann aber auch in FreeBSD mit pkg install iocage installiert und genutzt werden. Der Vorteil ist, das entweder über die TrueNAS GUI oder eine reine Shell die wichtigsten Einstellungen und Anpassungen vorgenommen werden können. Wir beleuchten hier mal beides.

Ziele

Erstellung einer Jail mit den wichtigsten Grundeinstellungen, damit andere Artikel darauf aufbauen können.

NEU: Für ganz ungeduldige habe ich einen Konsole only Abschnitt. Da gibts nur Befehle, keine Erklärungen.

Letzte Aktualisierung:

  • 02.03.2024: Initiale Version

TrueNAS

Im ersten Schritt erstellen wir ein Jail auf dem TrueNAS. Dazu öffnen wir zuerst die TrueNAS Administrations-Webseite.

Erstellen

  • TrueNAS / Jail / Add
    • Name: JAILNAME
    • Jail Type: Basejail
    • Release: 13.X
    • DHCP Autoconfigure IPv4: Ja
    • VNET: Ja

Anpassen

Einige Dienste (wie z.B. PostgreSQL) benötigen einige spezifischere Optionen. Wenn nicht, kann das übersprungen werden.

  • `TrueNAS / Jails / JAILNAME / Edit / Jail Properies
    • allow_sysvipc = An

Benutzer einrichten

Die Webshell in TrueNAS ist nicht geeignet um komplexe Konfigurationen vorzunehmen, daher wird SSH aktiviert.

  • Jail starten: TrueNAS / Jails / JAILNAME / Start
  • Jail Shell öffnen: TrueNAS / Jails / JAILNAME / Shell
    • Mit passwd das root Kennwort setzen
    • Mit adduser USERNAME einen Benutzer hinzufügen Wichtig: Der Gruppe wheel zuweisen, damit mit su Rechte erlangt werden können
#Username: USERNAME
#Full name: USERNAME
#Uid (Leave empty for default):
#Login group [USERNAME]:
#Login group is USERNAME. Invite USERNAME into other groups? []: wheel
#Login class [default]:
#Shell (sh csh tcsh nologin) [sh]: tcsh
#Home directory [/home/USERNAME]:
#Home directory permissions (Leave empty for default):
#Use password-based authentication? [yes]

SSH aktivieren

  • service sshd enable aktiviert den SSH Dienst
  • service sshd start startet den SSH Dienst
  • ifconfig zeigt die aktuelle IPv4 Adresse an

Die IP-Adresse am besten statisch im DHCP-Server hinterlegen, damit sie sich nicht mehr ändert und per DNS veröffentlichen (JAILNAME.domain.local).

Konsole

iocage create -b -n JAILNAME -r XX.Y-RELEASE vnet="on" bpf="on" dhcp="on"
iocage exec -f JAILNAME "pw user add -n USERNAME -c 'FULLNAME' -d /home/USERNAME -G wheel -m -s /bin/sh"
iocage exec JAILNAME "service sshd enable"
iocage exec JAILNAME "service sshd start"

Voilá