%
% chroot.tex
% Last Update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Kapitel Chroot %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Achtung: Dateien muessen mit latin1-Encoding gespeichert werden!
% Attention: Files must be saved using latin1 encoding!
%

\chapter{Das Chroot-Paket}

\section{Die Einleitung}

    Dieses Paket erm"oglicht die einfache Erstellung von Chroot-Umgebungen
    f"ur einzelne Anwender um deren Systemzugriff einzuschr"anken, d.h. sie
    in einem Chroot-Gef"angnis einzusperren.


\section{Die Funktionen}

    Das Chroot-Paket beinhaltet keine weiteren externen Komponenten.


\section{Die Voraussetzungen}

    Dieses Paket ben"otigt keine weiteren Pakete um funktionieren zu k"onnen.


\section{Die Installation}

    Das Chroot-Paket wird "uber das Setup-Men"u installiert. Wird eine
    "altere 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"otigten
    Programme gestartet.


\section{Das Men"u im Setup-Programm}

    Das Men"u im Setup-Programm ist wie folgt aufgebaut:

    \begin{itemize}
        \item ChangeRoot administration
        \begin{itemize}
            \item View documentation: Anzeigen der Dokumentation
            \item Edit configuration: Bearbeiten der Konfiguration
            \item Advanced configuration file handling: Konfigurationen verwalten
            \item Return: Untermen"u verlassen
        \end{itemize}
    \end{itemize}

    Die Men"upunkte d"urften selbsterkl"arend sein, da sie keinerlei weitere
    Eingaben erwarten. Deshalb wird auf deren Funktion nicht weiter eingegangen.


\section{Die "Anderung der Konfiguration}

    Die Konfiguration kann "uber den Men"upunkt 'Edit configuration' ge"andert werden.
    Standardm"a"sig wird der Editor aufgerufen, der in der Environment-Konfiguration
    "uber die Variable 'EDITOR' festgelegt wurde. Nachdem der Editor beendet wurde
    wird abgefragt, ob die Konfiguration aktiviert werden soll. Wird dies best"atigt,
    werden "uber ein Skript die Anpassungen umgehend wirksam gemacht.


\section{Die Konfigurationsdatei}

    In der Konfigurationsdatei, die "uber das Men"u zug"anglich ist, sind folgende
    Parameter vorhanden; wer sie von Hand editieren will findet sie unter
    \texttt{/etc/config.d/chroot}.

\section{Die Parameter}

\begin{description}
    \config{START\_CHROOT}{START\_CHROOT}{STARTCHROOT}
        F"ur die Aktivierung des Chroot-Paketes muss diese Variable lediglich
        auf den Wert 'yes' gestellt werden. Die Einstellung 'no' deaktiviert
        das Chroot-Paket.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{START\_CHROOT='no'}

    \config{CHROOT\_DEFAULT\_JAILPATH}{CHROOT\_DEFAULT\_JAILPATH}{CHROOTDEFAULTJAILPATH}
        "Uber diesen Parameter wird der Verzeichnispfad f"ur ein Chroot-Gef"angnis
        festgelegt.

        G"ultige Werte: absoluter Pfadname

        Standardeinstellung: \texttt{CHROOT\_DEFAULT\_JAILPATH='/home/jail'}

    \config{CHROOT\_DEFAULT\_ENABLE\_SSH\_APPS}{CHROOT\_DEFAULT\_ENABLE\_SSH\_APPS}{CHROOTDEFAULTENABLESSHAPPS}
        "Uber diesen Parameter wird festgelegt ob die SSH-Programme standardm"a"sig
        in das Chroot-Gef"angnis kopiert werden sollen.

        G"ultige Werte: yes, no

        Standardeinstellung:  \texttt{CHROOT\_DEFAULT\_ENABLE\_SSH\_APPS='no'}

    \config{CHROOT\_DEFAULT\_ENABLE\_RSYNC\_APPS}{CHROOT\_DEFAULT\_ENABLE\_RSYNC\_APPS}{CHROOTDEFAULTENABLERSYNCAPPS}
        "Uber diesen Parameter wird festgelegt ob die RSYNC-Programme standardm"a"sig
        in das Chroot-Gef"angnis kopiert werden sollen.

        G"ultige Werte: yes, no

        Standardeinstellung:  \texttt{CHROOT\_DEFAULT\_ENABLE\_RSYNC\_APPS='no'}

    \config{CHROOT\_N}{CHROOT\_N}{CHROOTN}
        "Uber diesen Parameter wird die Anzahl der Anwender angegeben, die in
        einem Chroot-Gef"angnis eingesperrt werden sollen.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{CHROOT\_N='0'}

    \config{CHROOT\_x\_ACTIVE}{CHROOT\_x\_ACTIVE}{CHROOTxACTIVE}
        Wird dieser Parameter auf den Wert 'yes' gesetzt, so wird der zugeh"orige
        Datensatz aktiviert, 'no' deaktiviert ihn.

        G"ultige Werte: yes oder no

        Beispiel: \texttt{CHROOT\_1\_ACTIVE='no'}

    \config{CHROOT\_x\_COMMENT}{CHROOT\_x\_COMMENT}{CHROOTxCOMMENT}
        "Uber diesen Parameter kann ein Kommentar, welcher die Identifizierung
        des Chroot-Accounts erleichtern soll, angegeben werden.

        G"ultige Werte: beliebiger Text

        Beispiel: \texttt{CHROOT\_1\_COMMENT='Dies ist mein Server'}

    \config{CHROOT\_x\_USER}{CHROOT\_x\_USER}{CHROOTxUSER}
        "Uber diesen Parameter legt man den Namen des Systemanwender fest,
        welcher in einem Chroot-Verzeichnis eingesperrt werden soll.

        G"ultige Werte: Anwendername

        Beispiel: \texttt{CHROOT\_1\_USER='frank'}

    \config{CHROOT\_x\_JAILPATH}{CHROOT\_x\_JAILPATH}{CHROOTxJAILPATH}
        "Uber diesen Parameter kann ein individueller Verzeichnispfad f"ur
        ein Chroot-Gef"angnis festgelegt werden. Wird der Parameter nicht
        gesetzt, so wird das "uber den Parameter \jump{CHROOTDEFAULTJAILPATH}{CHROOT\_DEFAULT\_JAILPATH}
        definierte Verzeichnis verwendet.

        G"ultige Werte: absoluter Pfadname

        Standardeinstellung: \texttt{CHROOT\_1\_JAILPATH=$''$}

    \config{CHROOT\_x\_LOCK\_USER}{CHROOT\_x\_LOCK\_USER}{CHROOTxLOCKUSER}
        "Uber diesen Parameter wird festgelegt, ob ein Anwender in dem
        Chroot-Gef"angnis 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"andert.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{CHROOT\_1\_LOCK\_USER='yes'}

    \config{CHROOT\_x\_ENABLE\_SSH\_APPS (Optional)}{CHROOT\_x\_ENABLE\_SSH\_APPS}{CHROOTxENABLESSHAPPS}
        Optionaler Parameter: "Uber diesen Parameter kann individuell
        festgelegt werden ob die SSH-Programme in das Chroot-Gef"angnis
        kopiert werden sollen.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{CHROOT\_1\_ENABLE\_SSH\_APPS='no'}

    \config{CHROOT\_x\_ENABLE\_RSYNC\_APPS (Optional)}{CHROOT\_x\_ENABLE\_RSYNC\_APPS}{CHROOTxENABLERSYNCAPPS}
        Optionaler Parameter: "Uber diesen Parameter kann individuell
        festgelegt werden ob die RSYNC-Programme in das Chroot-Gef"angnis
        kopiert werden sollen.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{CHROOT\_1\_ENABLE\_RSYNC\_APPS='no'}
\end{description}

\section{Verschiedenes}
%----------------------

\begin{description}
    \config{Individuelle\ Dateilisten\ einrichten}{Individuelle\ Dateilisten\ einrichten}{IndividuelleDateilisteneinrichten}
        Mittels zwei verschiedener Dateien ist es m"oglich individuelle Dateien
        automatisiert in eine Chroot-Umgebung kopieren zu lassen. Die beiden
        Dateien hei"sen 'custom-default-filelist.txt' und 'custom-<username>-filelist.txt'
        und m"ussen 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"ur 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"urlich allen Anwendern zur Verf"ugung gestellt werden.

        Es ist zu beachten, dass die Dateien dem Anwender und der Gruppe 'root'
        geh"oren m"ussen und dass nur Zugriffsrechte f"ur den Anwender 'root',
        z.B. 0600', eingerichtet wurden damit diese auch gelesen werden.

        In den Dateilisten m"ussen die zu kopierenden Dateien zeilenweise,
        mit absoluter Pfadangabe aufgef"uhrt werden.

    \config{Notwendige\ Konfiguration\ des\ Inet-Paketes}{Notwendige\ Konfiguration\ des\ Inet-Paketes}{NotwendigeKonfigurationdesInet-Paketes}
        Falls man bis dato noch keinen SSH-Zugriff f"ur die gew"unschten Anwender
        auf den Server bzw. die Chroot-Umgebung eingerichtet hat, dann m"ussen
        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.

    \begin{itemize}
        \item 1. "Uber 'Setup - User administration - Add user to additional group'
            wei"st man den entsprechenden Anwendern die zus"atzliche Gruppe 'chroot'
            hinzu.\\

        \item 2. Anschlie"send werden "uber 'Setup - Service administration -
            Inet Service - Edit configuration' noch die entsprechenden Anwender
            konfiguriert und die Chroot-Gruppe hinzugef"ugt.\\

            Beispiel:\\
            \texttt{SSH\_ALLOW\_USER\_N='1'\\
                    SSH\_ALLOW\_USER\_1='frank'\\
                    \\
                    SSH\_ALLOW\_GROUP\_N='1'\\
                    SSH\_ALLOW\_GROUP\_1='chroot'}
    \end{itemize}
\end{description}

