Unterabschnitte

Das Chroot-Paket

Die Einleitung

Dieses Paket ermöglicht die einfache Erstellung von Chroot-Umgebungen für einzelne Anwender um deren Systemzugriff einzuschränken, d.h. sie in einem Chroot-Gefängnis einzusperren.

Die Funktionen

Das Chroot-Paket beinhaltet keine weiteren externen Komponenten.

Die Voraussetzungen

Dieses Paket benötigt keine weiteren Pakete um funktionieren zu können.

Die Installation

Das Chroot-Paket wird über das Setup-Menü installiert. Wird eine ältere Paketversion vorgefunden, so wird diese deinstalliert bevor die neuen Programmdateien installiert werden. Nach dem Installieren der Programmdateien wird direkt der Konfigurations-Editor gestartet um die Konfiguration anzupassen. Nach Beendigung dieses Schrittes werden die Konfigurationsdateien generiert und alle benötigten Programme gestartet.

Das Menü im Setup-Programm

Das Menü im Setup-Programm ist wie folgt aufgebaut:

Die Menüpunkte dürften selbsterklärend sein, da sie keinerlei weitere Eingaben erwarten. Deshalb wird auf deren Funktion nicht weiter eingegangen.

Die Änderung der Konfiguration

Die Konfiguration kann über den Menüpunkt 'Edit configuration' geändert werden. Standardmäßig wird der Editor aufgerufen, der in der Environment-Konfiguration über die Variable 'EDITOR' festgelegt wurde. Nachdem der Editor beendet wurde wird abgefragt, ob die Konfiguration aktiviert werden soll. Wird dies bestätigt, werden über ein Skript die Anpassungen umgehend wirksam gemacht.

Die Konfigurationsdatei

In der Konfigurationsdatei, die über das Menü zugänglich ist, sind folgende Parameter vorhanden; wer sie von Hand editieren will findet sie unter /etc/config.d/chroot.

Die Parameter

START_CHROOT

Für die Aktivierung des Chroot-Paketes muss diese Variable lediglich auf den Wert 'yes' gestellt werden. Die Einstellung 'no' deaktiviert das Chroot-Paket.

Gültige Werte: yes, no

Standardeinstellung: START_CHROOT='no'

CHROOT_DEFAULT_JAILPATH

Über diesen Parameter wird der Verzeichnispfad für ein Chroot-Gefängnis festgelegt.

Gültige Werte: absoluter Pfadname

Standardeinstellung: CHROOT_DEFAULT_JAILPATH='/home/jail'

CHROOT_DEFAULT_ENABLE_SSH_APPS

Über diesen Parameter wird festgelegt ob die SSH-Programme standardmäßig in das Chroot-Gefängnis kopiert werden sollen.

Gültige Werte: yes, no

Standardeinstellung: CHROOT_DEFAULT_ENABLE_SSH_APPS='no'

CHROOT_DEFAULT_ENABLE_RSYNC_APPS

Über diesen Parameter wird festgelegt ob die RSYNC-Programme standardmäßig in das Chroot-Gefängnis kopiert werden sollen.

Gültige Werte: yes, no

Standardeinstellung: CHROOT_DEFAULT_ENABLE_RSYNC_APPS='no'

CHROOT_N

Über diesen Parameter wird die Anzahl der Anwender angegeben, die in einem Chroot-Gefängnis eingesperrt werden sollen.

Gültige Werte: Zahl

Standardeinstellung: CHROOT_N='0'

CHROOT_x_ACTIVE

Wird dieser Parameter auf den Wert 'yes' gesetzt, so wird der zugehörige Datensatz aktiviert, 'no' deaktiviert ihn.

Gültige Werte: yes oder no

Beispiel: CHROOT_1_ACTIVE='no'

CHROOT_x_COMMENT

Über diesen Parameter kann ein Kommentar, welcher die Identifizierung des Chroot-Accounts erleichtern soll, angegeben werden.

Gültige Werte: beliebiger Text

Beispiel: CHROOT_1_COMMENT='Dies ist mein Server'

CHROOT_x_USER

Über diesen Parameter legt man den Namen des Systemanwender fest, welcher in einem Chroot-Verzeichnis eingesperrt werden soll.

Gültige Werte: Anwendername

Beispiel: CHROOT_1_USER='frank'

CHROOT_x_JAILPATH

Über diesen Parameter kann ein individueller Verzeichnispfad für ein Chroot-Gefängnis festgelegt werden. Wird der Parameter nicht gesetzt, so wird das über den Parameter CHROOT_DEFAULT_JAILPATH definierte Verzeichnis verwendet.

Gültige Werte: absoluter Pfadname

Standardeinstellung: CHROOT_1_JAILPATH=

CHROOT_x_LOCK_USER

Über diesen Parameter wird festgelegt, ob ein Anwender in dem Chroot-Gefängnis eingesperrt werden soll oder nicht. Wird der Parameter auf den Wert `yes' gesetzt, so wird das Home-Verzeichnis des Anwenders entsprechend angepasst, bei dem Wert `no' wird dieses nicht verändert.

Gültige Werte: yes, no

Standardeinstellung: CHROOT_1_LOCK_USER='yes'

CHROOT_x_ENABLE_SSH_APPS (Optional)

Optionaler Parameter: Über diesen Parameter kann individuell festgelegt werden ob die SSH-Programme in das Chroot-Gefängnis kopiert werden sollen.

Gültige Werte: yes, no

Standardeinstellung: CHROOT_1_ENABLE_SSH_APPS='no'

CHROOT_x_ENABLE_RSYNC_APPS (Optional)

Optionaler Parameter: Über diesen Parameter kann individuell festgelegt werden ob die RSYNC-Programme in das Chroot-Gefängnis kopiert werden sollen.

Gültige Werte: yes, no

Standardeinstellung: CHROOT_1_ENABLE_RSYNC_APPS='no'

Verschiedenes

Individuelle Dateilisten einrichten

Mittels zwei verschiedener Dateien ist es möglich individuelle Dateien automatisiert in eine Chroot-Umgebung kopieren zu lassen. Die beiden Dateien heißen 'custom-default-filelist.txt' und 'custom-<username>-filelist.txt' und müssen auf eisfair-1 im Verzeichnis '/var/chroot/' und auf eisfair-2 im Verzeichnis '/data/packages/chroot' abgelegt werden.

Die erste Datei wird generell bei jeder Chroot-Umgebung gelesen, die zweite Datei kann zur individuellen Konfiguration für einzelner Anwender einer Chroot-Umgebung genutzt werden. Hier ist zu beachten, dass man bei einer gemeinsamen Nutzung einer Chroot-Umgebung durch mehrere Anwender die angegebenen Dateien natürlich allen Anwendern zur Verfügung gestellt werden.

Es ist zu beachten, dass die Dateien dem Anwender und der Gruppe 'root' gehören müssen und dass nur Zugriffsrechte für den Anwender 'root', z.B. 0600', eingerichtet wurden damit diese auch gelesen werden.

In den Dateilisten müssen die zu kopierenden Dateien zeilenweise, mit absoluter Pfadangabe aufgeführt werden.

Notwendige Konfiguration des Inet-Paketes

Falls man bis dato noch keinen SSH-Zugriff für die gewünschten Anwender auf den Server bzw. die Chroot-Umgebung eingerichtet hat, dann müssen folgende Anpassungen an der Inet-Konfiguration vorgenommen werden. Wenn man bereits erfolgreich einen SSH-Zugriff mittels Kennwort- oder SSH-Key-Authentifizierung eingerichtet hat, so kann man diesen Punkt beruhigt ignorieren.