harden-doc 3.19 - en to de translation catalogue (219 entries)

en: Appendix
de: Anhang

en: The hardening process step by step
de: Der Abhärtungsprozess Schritt für Schritt

en: Below is a post-installation, step-by-step procedure for hardening a Debian 2.2 GNU/Linux system. This is one possible approach to such a procedure and is oriented toward the hardening of network services. It is included to show the entire process you might use during configuration. Also, see <xref linkend="checklist" />.
de: Eine Anleitung, die Schritt für Schritt darstellt, wie ein Debian 2.2 GNU/Linux-System nach der Installation abgehärtet wird, ist unten aufgeführt. Das ist nur eine denkbare Herangehensweise für einem solchen Vorgang. Sie ist am Absichern von Netzwerkdiensten orientiert und stellt den gesamten Anlauf der Konfiguration vor. Vergleichen Sie auch <xref linkend="checklist" />.

en: Install the system, taking into account the information regarding partitioning included earlier in this document. After base installation, go into custom install. Do not select task packages.
de: Installieren Sie das System. Beachten Sie dabei die Informationen dieses HOWTOs bezüglich der Partitionierung. Nach der Basis-Installation nehmen Sie eine angepasste Installation vor. Wählen Sie keine Task-Pakete aus. Aktivieren Sie shadow-Passwörter.

en: Using <command>dselect</command>, remove all unneeded but selected packages before doing [I]nstall. Keep the bare minimum of packages for the system.
de: Entfernen Sie mit <command>dselect</command> alle nicht benötigten, aber ausgewählten Pakete, bevor Sie [I]nstallation wählen. Belassen Sie nur die absolut notwendige Software auf dem System.

en: Update all software from the latest packages available at security.debian.org as explained previously in <xref linkend="security-update" />.
de: Aktualisieren Sie die ganze Software mit den aktuellen Paketen von security.debian.org, wie bereits unter <xref linkend="security-update" /> beschrieben.

en: Implement the suggestions presented in this manual regarding user quotas, login definitions and <command>lilo</command>
de: Implementieren Sie die in dieser Anleitung vorgeschlagenen Maßnahmen zu Benutzer-Quotas, Ausgestaltung des Anmeldevorgangs und <command>Lilo</command>.

en: Make a list of services currently running on your system. Try:
de: Machen Sie sich eine Liste von allen Diensten, die derzeit auf Ihrem System laufen. Versuchen Sie dazu Folgendes:

en: You will need to install <package>lsof-2.2</package> for the third command to work (run it as root). You should be aware that <command>lsof</command> can translate the word LISTEN to your locale settings.
de: Damit das dritte Kommando funktioniert, werden Sie <application>lsof-2.2</application> installieren müssen (und es als Root laufen lassen). Beachten Sie, dass <command>lsof</command> das Wort LISTEN passend zu Ihrer Lokalisation übersetzen kann.

en: In order to remove unnecessary services, first determine what package provides the service and how it is started. This can be accomplished by checking the program that listens in the socket. The following shell script, which uses the programs <command>lsof</command> and <command>dpkg</command>, does just that:
de: Um einen unnötigen Dienst zu entfernen, stellen Sie zunächst fest, wie er gestartet wird und welches Paket ihn zur Verfügung stellt. Sie können dies ganz einfach machen, indem Sie das Programm prüfen, das auf dem Socket lauscht. Das nachfolgende Shell-Skript, das die Programme <command>lsof</command> und <command>dpkg</command> verwendet, macht genau das:

en: Once you find any unwanted services, remove the associated package (with <command>dpkg --purge</command>), or disable the service from starting automatically at boot time using <command>update-rc.d</command> (see <xref linkend="disableserv" />).
de: Wenn Sie einen unerwünschten Dienst finden, entfernen Sie das Paket (mit <command>dpkg --purge</command>). Oder benutzen Sie <command>update-rc.d</command> (siehe <xref linkend="disableserv" />), um ihn aus dem Start-Prozess zu entfernen.

en: For inetd services (launched by the superdaemon), check which services are enabled in <filename>/etc/inetd.conf</filename> using:
de: Überprüfen Sie bei inetd-Diensten (werden durch den Superdaemon gestartet), welche Dienste in <filename>/etc/inetd.conf</filename> aktiviert sind. Verwenden Sie dazu Folgendes:

en: Then disable those services that are not needed by commenting out the line that includes them in <filename>/etc/inetd.conf</filename>, removing the package, or using <command>update-inetd</command>.
de: Deaktivieren Sie dann diejenigen Dienste, die Sie nicht benötigen, indem Sie die Zeile in <filename>/etc/inetd.conf</filename> auskommentieren, das Paket entfernen, oder indem Sie <command>update-inetd</command> benutzen.

en: If you have wrapped services (those using <command>/usr/sbin/tcpd</command>), check that the files <filename>/etc/hosts.allow</filename> and <filename>/etc/hosts.deny</filename> are configured according to your service policy.
de: Wenn Sie Dienste eingehüllt haben (und <command>/usr/sbin/tcpd</command> benutzen), prüfen Sie, ob die Dateien <filename>/etc/hosts.allow</filename> und <filename>/etc/hosts.deny</filename> passend zu Ihrer Richtlinie für die Dienste konfiguriert sind.

en: If the server uses more than one external interface, depending on the service, you may want to limit the service to listen on a specific interface. For example, if you want internal FTP access only, make the FTP daemon listen only on your management interface, not on all interfaces (i.e, 0.0.0.0:21).
de: Wenn der Server mehr als eine externe Schnittstelle benutzt, können Sie Dienste darauf beschränken, auf bestimmten Schnittstellen zu lauschen. Ob das möglich ist, hängt aber von den Diensten ab. Wenn Sie zum Beispiel internen FTP-Zugriff erlauben wollen, lassen Sie den FTP-Daemon nur auf der internen Schnittstelle lauschen, nicht auf allen (d.h. 0.0.0.0:21).

en: Re-boot the machine, or switch to single user mode and then back to multiuser using the commands:
de: Booten Sie die Maschine neu, oder wechseln Sie in den Single-User-Modus und zurück in den Multi-User-Modus mit:

en: Check the services now available, and, if necessary, repeat the steps above.
de: Prüfen Sie die nun angebotenen Dienste und wiederholen Sie gegebenenfalls die letzten Schritte.

en: Now install the needed services, if you have not done so already, and configure them properly.
de: Installieren Sie jetzt die benötigten Dienste, falls es noch nicht geschehen ist, und konfigurieren Sie sie passend.

en: Use the following shell command to determine what user each available service is running as:
de: Prüfen Sie mit folgendem Shell-Befehl, unter welchem Benutzer die verfügbaren Dienste laufen:

en: 
      # for i in `/usr/sbin/lsof -i |grep LISTEN |cut -d " " -f 1 |sort -u`; \
      &gt; do user=`ps ef |grep $i |grep -v grep |cut -f 1 -d " "` ; \
      &gt; echo "Service $i is running as user $user"; done
de: 
      # for i in `/usr/sbin/lsof -i |grep LISTEN |cut -d " " -f 1 |sort -u`; \
      > do user=`ps ef |grep $i |grep -v grep |cut -f 1 -d " "` ; \
      > echo "Dienst $i läuft als Benutzer $user"; done

en: Consider changing these services to a specific user/group and maybe <command>chroot</command>'ing them for increased security. You can do this by changing the <filename>/etc/init.d</filename> scripts which start the service. Most services in Debian use <command>start-stop-daemon</command>, which has options (<literal>--change-uid</literal> and <literal>--chroot</literal>) for accomplishing this. A word of warning regarding the <command>chroot</command>'ing of services: you may need to put all the files installed by the package (use dpkg -L) providing the service, as well as any packages it depends on, in the <command>chroot</command>'ed environment. Information about setting up a <command>chroot</command> environment for the <command>ssh</command> program can be found in <xref linkend="chroot-ssh-env" />.
de: Überlegen Sie, ob Sie diese Dienste einem bestimmten Benutzer oder Gruppe zuweisen wollen und sie vielleicht auch in eine chroot-Umgebung einsperren wollen, um die Sicherheit zu erhöhen. Sie können dies tun, indem Sie die <filename>/etc/init.d</filename>-Skripte ändern, die den Dienst starten. Die meisten Dienste benutzen unter Debian <command>start-stop-daemon</command>, der die dafür Optionen (<literal>--change-uid</literal> und <literal>--chroot</literal>) zur Verfügung stellt. Ein paar warnende Worte zum Einsperren in eine <command>chroot</command>-Umgebung: Sie müssen alle Dateien, die durch das Paket des Dienstes installiert wurden (verwenden Sie dpkg -L), und alle Pakete, von denen es abhängt, in die <command>Chroot</command>-Umgebung legen. Informationen, wie das Programm <command>ssh</command> in eine <command>chroot</command>-Umgebung eingesperrt wird, finden Sie unter <xref linkend="chroot-ssh-env" />.

en: Repeat the steps above in order to check that only desired services are running and that they are running as the desired user/group combination.
de: Wiederholen Sie die Schritte oben um zu prüfen, ob nur die gewünschten Dienste laufen und ob sie unter der gewünschten Benutzer/Gruppen-Kombination laufen.

en: Test the installed services in order to see if they work as expected.
de: Testen Sie die installierten Dienste, um festzustellen, ob sie wie erwartet arbeiten.

en: Check the system using a vulnerability assessment scanner (like <package>nessus</package>), in order to determine vulnerabilities in the system (i.e., misconfiguration, old services or unneeded services).
de: Überprüfen Sie das System, indem Sie einen Scanner zur Abschätzung der Verwundbarkeit (zum Beispiel <application>nessus</application>) benutzen, um Angriffsmöglichkeiten (Fehlkonfigurationen, alte oder nicht benötigte Dienste) zu finden.

en: Install network and host intrusion measures like <package>snort</package> and <package>logcheck</package>.
de: Installieren Sie Instrumente zur Entdeckung von Eindringlingen in Netzwerk und Hosts (wie <package>snort</package> und <package>logcheck</package>).

en: Repeat the network scanner step and verify that the intrusion detection systems are working correctly.
de: Wiederholen Sie den Netzwerk-Scan und prüfen Sie, ob das System zur Erkennung von Eindringlingen funktioniert.

en: For the truly paranoid, also consider the following:
de: Die richtig Paranoiden überlegen sich auch Folgendes:

en: Add firewalling capabilities to the system, accepting incoming connections only to offered services and limiting outgoing connections only to those that are authorized.
de: Fügen Sie dem System Firewall-Fähigkeiten hinzu, die eingehende Verbindungen nur zu angebotenen Diensten erlauben und ungenehmigte ausgehende Verbindungen verhindern.

en: Re-check the installation with a new vulnerability assessment using a network scanner.
de: Überprüfen Sie erneut die Installation auf Angriffspunkte mit einem Netzwerk-Scanner.

en: Using a network scanner, check outbound connections from the system to an outside host and verify that unwanted connections do not find their way out.
de: Prüfen Sie ausgehende Verbindungen vom System zu Hosts außerhalb mit einem Netzwerk-Scanner, um sicherzustellen, dass ungewollte Verbindungen keinen Weg nach draußen finden.

en: Configuration checklist
de: Prüfliste der Konfiguration

en: This appendix briefly reiterates points from other sections in this manual in a condensed checklist format. This is intended as a quick summary for someone who has already read the manual. There are other good checklists available, including Kurt Seifried's <ulink name="Securing Linux Step by Step" url="http://seifried.org/security/os/linux/20020324-securing-linux-step-by-step.html" /> and <ulink name="CERT's Unix Security Checklist" url="http://www.cert.org/tech_tips/usc20_full.html" />.
de: Dieser Anhang wiederholt kurz Punkte aus anderen Abschnitten dieser Anleitung in einem verdichteten Prüflisten-Format. Er ist als schnelle Zusammenfassung für Leute gedacht, die bereits diese Anleitung gelesen haben. Es gibt auch andere gute Prüflisten, zum Beispiel Kurt Seifrieds <ulink url="http://seifried.org/security/os/linux/20020324-securing-linux-step-by-step.html" name="Securing Linux Step by Step" /> und <ulink url="http://www.cert.org/tech_tips/usc20_full.html" name="CERT's Unix Security Checklist" />.

en: Limit physical access and booting capabilities
de: Beschränkung des physischen Zugriffs und der Boot-Fähigkeiten:

en: Enable a password in the BIOS.
de: Setzen Sie im BIOS ein Passwort.

en: Disable floppy/cdrom/... booting in the system's BIOS.
de: Schalten Sie im BIOS das Booten von Diskette, CD-ROM, ... ab.

en: Set a LILO or GRUB password (<filename>/etc/lilo.conf</filename> or <filename>/boot/grub/menu.lst</filename>, respectively); check that the LILO or GRUB configuration file is read-protected.
de: Setzen Sie ein LILO- bzw. GRUB-Passwort (<filename>/etc/lilo.conf</filename> bzw. <filename>/boot/grub/menu.lst</filename>); stellen Sie sicher, dass die Konfigurationsdatei von LILO oder GRUB nicht lesbar ist.

en: Partitioning
de: Partitionierung:

en: Separate user-writable data, non-system data, and rapidly changing run-time data to their own partitions
de: Legen Sie Daten, die von Benutzern geschrieben wurden, Daten, die nicht zum System gehören, und sich ständig ändernde Laufzeitdaten auf eigenen, getrennten Partitionen ab.

en: Set <literal>nosuid,noexec,nodev</literal> mount options in <filename>/etc/fstab</filename> on ext2/3 partitions that should not hold binaries such as <filename>/home</filename> or <filename>/tmp</filename>.
de: Setzen Sie die Mount-Optionen <literal>nosuid,noexec,nodev</literal> in <filename>/etc/fstab</filename> bei ext2/3-Partitionen, die keine ausführbaren Programme enthalten sollten, wie zum Beispiel <filename>/home</filename> oder <filename>/tmp</filename>.

en: Password hygiene and login security
de: Passworthygiene und Anmeldesicherheit:

en: Set a good root password
de: Wählen Sie ein gutes Root-Passwort.

en: Install and use PAM
de: Installieren und benutzen Sie PAM:

en: Add MD5 support to PAM and make sure that (generally speaking) entries in <filename>/etc/pam.d/</filename> files which grant access to the machine have the second field in the pam.d file set to <literal>requisite</literal> or <literal>required</literal>.
de: Fügen Sie die Unterstützung von PAM-MD5 hinzu, und stellen Sie sicher (allgemein gesprochen), dass die Einträge in den <filename>/etc/pam.d/</filename>-Dateien, die Zugriff auf die Maschine gewähren, das zweite Feld in der pam.d-Datei auf <literal>requisite</literal> oder <literal>required</literal> gesetzt haben.

en: Tweak <filename>/etc/pam.d/login</filename> so as to only permit local root logins.
de: Ändern Sie <filename>/etc/pam.d/login</filename>, so dass nur lokale Anmeldungen von Root erlaubt werden.

en: Also mark authorized tty:s in <filename>/etc/security/access.conf</filename> and generally set up this file to limit root logins as much as possible.
de: Bezeichnen Sie außerdem autorisierte ttys in <filename>/etc/security/access.conf</filename> und richten Sie diese Datei überhaupt so ein, dass Anmeldungen von Root so weit wie möglich eingeschränkt werden.

en: Add pam_limits.so if you want to set per-user limits
de: Fügen Sie pam_limits.so hinzu, wenn Sie Begrenzungen für jeden Benutzer vornehmen wollen.

en: Tweak <filename>/etc/pam.d/passwd</filename>: set minimum length of passwords higher (6 characters maybe) and enable MD5
de: Ändern Sie <filename>/etc/pam.d/passwd</filename>: Erhöhen Sie die minimale Länge von Passwörtern (vielleicht sechs Zeichen) und schalten Sie MD5 ein.

en: Add group wheel to <filename>/etc/group</filename> if desired; add pam_wheel.so group=wheel entry to <filename>/etc/pam.d/su</filename>
de: Wenn Sie es wünschen, fügen Sie <filename>/etc/group</filename> die Gruppe wheel hinzu; fügen Sie <filename>/etc/pam.d/su</filename> pam_wheel.so group=wheel hinzu.

en: For custom per-user controls, use pam_listfile.so entries where appropriate
de: Für angepasste Kontrollen der einzelnen Benutzer nehmen Sie Einträge in pam_listfile.so an den passenden Stellen vor.

en: Have an <filename>/etc/pam.d/other</filename> file and set it up with tight security
de: Erstellen Sie eine Datei <filename>/etc/pam.d/other</filename> und setzen Sie sie mit strenger Sicherheit auf.

en: Set up limits in <filename>/etc/security/limits.conf</filename> (note that <filename>/etc/limits</filename> is not used if you are using PAM)
de: Setzen Sie in <filename>/etc/security/limits.conf</filename> Begrenzungen (beachten Sie, dass <filename>/etc/limits</filename> nicht benutzt wird, wenn Sie PAM verwenden).

en: Tighten up <filename>/etc/login.defs</filename>; also, if you enabled MD5 and/or PAM, make sure you make the corresponding changes here, too
de: Nehmen Sie Einschränkungen in <filename>/etc/login.defs</filename> vor; wenn Sie MD5 oder PAM einschalten, machen Sie auch hier die entsprechenden Änderungen.

en: Tighten up <filename>/etc/pam.d/login</filename>
de: Nehmen Sie Einschränkungen in <filename>/etc/pam.d/login</filename> vor.

en: Disable root ftp access in <filename>/etc/ftpusers</filename>
de: Schalten Sie den FTP-Zugriff von Root in <filename>/etc/ftpusers</filename> ab.

en: Disable network root login; use <citerefentry><refentrytitle>su</refentrytitle> <manvolnum>1</manvolnum></citerefentry> or <citerefentry><refentrytitle>sudo</refentrytitle> <manvolnum>1</manvolnum></citerefentry>. (consider installing <package>sudo</package>)
de: Schalten Sie Anmeldungen von Root über das Netzwerk ab; benutzen Sie <citerefentry><refentrytitle>su</refentrytitle> <manvolnum>1</manvolnum></citerefentry> oder <citerefentry><refentrytitle>sudo</refentrytitle> <manvolnum>1</manvolnum></citerefentry> (denken Sie über die Installation von <package>sudo</package> nach).

en: Use PAM to enforce additional constraints on logins?
de: Benutzen Sie PAM, um zusätzliche Auflagen für Anmeldungen zu ermöglichen.

en: Other local security issues
de: Andere lokale Sicherheitsangelegenheiten:

en: Kernel tweaks (see <xref linkend="kernel-conf" />)
de: Kernel-Tweaks (siehe <xref linkend="kernel-conf" />)

en: Kernel patches (see <xref linkend="kernel-patches" />)
de: Kernel-Patches (siehe <xref linkend="kernel-patches" />)

en: Tighten up log file permissions (<filename>/var/log/{last,fail}log</filename>, Apache logs)
de: Schränken Sie die Zugriffsrechte auf Protokolldateien (<filename>/var/log/{last,fail}log</filename>, Protokolle von Apache) ein.

en: Verify that SETUID checking is enabled in <filename>/etc/checksecurity.conf</filename>
de: Stellen Sie sicher, dass in <filename>/etc/checksecurity.conf</filename> die Prüfung von SETUID eingeschaltet ist.

en: Consider making some log files append-only and configuration files immutable using chattr (ext2/3 file systems only)
de: Überlegen Sie sich, an Protokolldateien nur erweiterbar (append-only) und Konfigurationsdateien unveränderbar (immutable) zu machen, indem Sie chattr benutzen (nur ext2/3-Dateisystem).

en: Set up file integrity (see <xref linkend="check-integ" />). Install <package>debsums</package>
de: Setzen Sie eine Integritätsprüfung des Dateisystems auf (siehe <xref linkend="check-integ" />). Installieren Sie <application>debsums</application>.

en: Log everything to a local printer?
de: Alles auf einem lokalen Drucker mitprotokollieren?

en: Burn your configuration on a boot-able CD and boot off that?
de: Brennen Sie Ihre Konfiguration auf eine bootbare CD und booten Sie hiervon?

en: Disable kernel modules?
de: Abschalten von Kernel-Modulen?

en: Limit network access
de: Einschränkung des Netzwerkzugriffs:

en: Install and configure <command>ssh</command> (suggest PermitRootLogin No in <filename>/etc/ssh/sshd_config</filename>, PermitEmptyPasswords No; note other suggestions in text also)
de: Installieren und konfigurieren Sie <command>ssh</command> (Vorschlag: PermitRootLogin No in <filename>/etc/ssh/sshd_config</filename>, PermitEmptyPasswords No; beachten Sie auch die anderen Vorschläge im Text).

en: Disable or remove <command>in.telnetd</command>, if installed
de: Schalten Sie <command>in.telnetd</command> ab oder entfernen Sie ihn, falls er installiert ist.

en: Generally, disable gratuitous services in <filename>/etc/inetd.conf</filename> using <command>update-inetd --disable</command> (or disable <command>inetd</command> altogether, or use a replacement such as <command>xinetd</command> or <command>rlinetd</command>)
de: Deaktivieren Sie ganz allgemein alle überflüssigen Dienste in <filename>/etc/inetd.conf</filename>. Benutzen Sie dazu <command>update-inetd --disable</command> (oder Sie schalten <command>inetd</command> ganz ab oder verwenden einen Ersatz wie <command>xinetd</command> oder <command>rlinetd</command>).

en: Disable other gratuitous network services; ftp, DNS, WWW etc should not be running if you do not need them and monitor them regularly. In most cases mail should be running but configured for local delivery only.
de: Schalten Sie andere überflüssige Netzwerkdienste ab. ftp, DNS, www, usw. sollten nicht laufen, wenn Sie sie nicht brauchen und nicht regelmäßig überwachen. In den meisten Fällen muss ein Mail-Server betrieben werden, sollte aber so konfiguriert sein, dass er nur lokal Mails zustellt.

en: For those services which you do need, do not just use the most common programs, look for more secure versions shipped with Debian (or from other sources). Whatever you end up running, make sure you understand the risks.
de: Installieren Sie von den Diensten, die Sie brauchen, nicht einfach das verbreiteteste Programm, sondern schauen Sie nach sichereren Versionen, die Debian liefert (oder aus anderen Quellen), um. Was auch immer Sie schließlich benutzen: Stellen Sie sicher, dass Sie die Risiken verstanden haben.

en: Set up <command>chroot</command> jails for outside users and daemons.
de: Setzen Sie <command>Chroot</command>-Gefängnisse für auswärtige Benutzer und Daemonen auf.

en: Configure firewall and tcpwrappers (i.e. <citerefentry><refentrytitle>hosts_access</refentrytitle> <manvolnum>5</manvolnum></citerefentry>); note trick for <filename>/etc/hosts.deny</filename> in text.
de: Konfigurieren Sie die Firewall und die tcp-Wrapper (d.h. <citerefentry><refentrytitle>hosts_access</refentrytitle> <manvolnum>5</manvolnum></citerefentry>); beachten Sie den Trick für <filename>/etc/hosts.deny</filename> im Text.

en: If you run ftp, set up your ftpd server to always run <command>chroot</command>'ed to the user's home directory
de: Wenn Sie FTP laufen lassen, setzen Sie den ftpd-Server so auf, dass er immer in einer <command>chroot</command>-Umgebung im Home-Verzeichnis des Benutzers läuft.

en: If you run X, disable xhost authentication and go with <command>ssh</command> instead; better yet, disable remote X if you can (add -nolisten tcp to the X command line and turn off XDMCP in <filename>/etc/X11/xdm/xdm-config</filename> by setting the requestPort to 0)
de: Wenn Sie X laufen lassen, schalten Sie xhost-Authentifizierung ab und benutzen Sie stattdessen <command>ssh</command>. Oder noch besser: Deaktivieren Sie die Weiterleitung von X komplett, falls das möglich ist (fügen Sie -nolisten tcp zu der X-Kommando-Zeile hinzu und schalten Sie XDMCP in <filename>/etc/X11/xdm/xdm-config</filename> ab, indem Sie den requestPort auf 0 setzen).

en: Disable remote access to printers
de: Schalten Sie Zugriff von außerhalb auf den Drucker ab.

en: Tunnel any IMAP or POP sessions through SSL or <command>ssh</command>; install stunnel if you want to provide this service to remote mail users
de: Tunneln Sie alle IMAP- oder POP-Sitzungen durch SSL oder <command>ssh</command>. Installieren Sie stunnel, wenn Sie diesen Dienst anderen Mail-Benutzern anbieten wollen.

en: Set up a log host and configure other machines to send logs to this host (<filename>/etc/syslog.conf</filename>)
de: Setzen Sie einen Log-Host auf, und konfigurieren Sie andere Maschinen, ihre Protokolle an diesen Host zu senden (<filename>/etc/syslog.conf</filename>).

en: Secure BIND, Sendmail, and other complex daemons (run in a <command>chroot</command> jail; run as a non-root pseudo-user)
de: Sichern Sie BIND, Sendmail und andere komplexe Daemonen ab (starten Sie sie in einer <command>chroot</command>-Umgebung und als Pseudobenutzer, der nicht Root ist).

en: Install tiger or a similar network intrusion detection tool.
de: Installieren Sie tiger oder ein ähnliches Werkzeug zur Erkennung von Eindringlingen in Ihr Netzwerk.

en: Install snort or a similar network intrusion detection tool.v
de: Installieren Sie snort oder ein ähnliches Werkzeug zur Erkennung von Eindringlingen in Ihr Netzwerk.

en: Do without NIS and RPC if you can (disable portmap).
de: Verzichten Sie, falls möglich, auf NIS und RPC (Abschalten von portmap).

en: Policy issues
de: Angelegenheiten mit Richtlinien:

en: Educate users about the whys and hows of your policies. When you have prohibited something which is regularly available on other systems, provide documentation which explains how to accomplish similar results using other, more secure means.
de: Klären Sie die Benutzer über das Wie und Warum Ihrer Richtlinien auf. Wenn Sie etwas verboten haben, das auf anderen Systemen normalerweise verfügbar ist, stellen Sie Dokumentation bereit, die erklärt, wie man die gleichen Resultate erreicht, indem man andere, sichere Mittel anwendet.

en: Prohibit use of protocols which use clear-text passwords (<command>telnet</command>, <command>rsh</command> and friends; ftp, imap, http, ...).
de: Verbieten Sie die Nutzung von Protokollen, die Klartext-Passwörter benutzen (<command>telnet</command>, <command>rsh</command> und ähnliche, ftp, imap, pop, http, ...).

en: Prohibit programs which use SVGAlib.
de: Verbieten Sie Programme, die SVGAlib benutzen.

en: Use disk quotas.
de: Benutzen Sie Disk-Quotas.

en: Keep informed about security issues
de: Bleiben Sie über Sicherheitsangelegenheiten informiert:

en: Subscribe to security mailing lists
de: Abonnieren Sie sicherheitsrelevante Mailinglisten.

en: Configure <package>apt</package> for security updates -- add to <filename>/etc/apt/sources.list</filename> an entry (or entries) for http://security.debian.org/
de: Richten Sie Sicherheitsaktualisierungen für <application>apt</application> ein &ndash; fügen Sie <filename>/etc/apt/sources.list</filename> einen Eintrag (oder Einträge) für http://security.debian.org/ hinzu.

en: Also remember to periodically run <command>apt-get update ; apt-get upgrade</command> (perhaps install as a <command>cron</command> job?) as explained in <xref linkend="security-update" />.
de: Vergessen Sie auch nicht, regelmäßig <command>apt-get update ; apt-get upgrade</command> (vielleicht als <command>Cron</command>-Job?) laufen zu lassen, wie unter <xref linkend="security-update" /> beschrieben.

en: Setting up a stand-alone IDS
de: Aufsetzen eines eigenständigen IDS

en: You can easily set up a dedicated Debian system as a stand-alone Intrusion Detection System using <package>snort</package> and a web-based interface to analyse the intrusion detection alerts:
de: Sie können sehr leicht eine Debian-Box als eigenständiges Eindringlings-Erkennungs-System (Intrusion Detection System, IDS) aufsetzen, indem Sie <application>snort</application> benutzen und eine webbasierte Schnittstelle zur Überwachung der Alarme über Eindringlinge einrichten:

en: Install a base Debian system and select no additional packages.
de: Installieren Sie ein Debian-Basis-System ohne zusätzliche Pakete.

en: Install one of the Snort versions with database support and configure the IDS to log alerts into the database.
de: Installieren Sie eine Version von Snort, die Datenbanken unterstützt, und richten Sie Snort so ein, dass die Alarme in der Datenbank protokolliert werden.

en: Download and install BASE (Basic Analysis and Security Engine), or ACID (Analysis Console for Intrusion Databases). Configure it to use the same database than Snort.
de: Laden Sie BASE (Basic Analysis and Security Engine) oder ACID (Analysis Console for Intrusion Databases, Konsole zur Analyse für Eindringling-Datenbanken) herunter und installieren Sie es. Konfigurieren Sie es so, dass es die gleiche Datenbank wie Snort verwendet.

en: Download and install the necessary packages<footnote><para>Typically the needed packages will be installed through the dependencies</para></footnote>.
de: Installieren Sie die notwendigen Pakete.<footnote><para>Normalerweise werden alle benötigten Pakete installiert, um Abhängigkeiten aufzulösen.</para></footnote>

en: BASE is currently packaged for Debian in <package>acidbase</package> and ACID is packaged as <package>acidlab</package><footnote><para> It can also be downloaded from <ulink url="http://www.cert.org/kb/acid/" />, <ulink url="http://acidlab.sourceforge.net" /> or <ulink url="http://www.andrew.cmu.edu/~rdanyliw/snort/" />. </para></footnote>. Both provide a graphical WWW interface to Snort's output.
de: BASE wird derzeit für Debian im Paket <application>acidbase</application> geliefert, ACID im Paket <application>acidlab</application>.<footnote><para>Es kann auch von <ulink url="http://www.cert.org/kb/acid/" />, <ulink url="http://acidlab.sourceforge.net" /> oder <ulink url="http://www.andrew.cmu.edu/~rdanyliw/snort/" /> heruntergeladen werden.</para></footnote> Beide stellen eine graphische WWW-Schnittstelle zur Ausgabe von Snort zur Verfügung.

en: Besides the base installation you will also need a web server (such as <package>apache</package>), a <command>PHP</command> interpreter and a relational database (such <package>postgresql</package> or <package>mysql</package>) where Snort will store its alerts.
de: Neben der Grundinstallationen benötigen Sie auch einen Webserver (wie <application>apache</application>), einen <command>PHP</command>-Interpreter und eine relationale Datenbank (wie <application>postgresql</application> oder <application>mysql</application>), wo Snort seine Alarme ablegen kann.

en: This system should be set up with at least two interfaces: one interface connected to a management LAN (for accessing the results and maintaining the system), and one interface with no IP address attached to the network segment being analyzed. You should configure the web server to listen only on the interface connected to the management LAN.
de: Dieses System sollte mit wenigstens zwei Netzwerk-Schnittstellen ausgestattet sein: Eine verbunden mit einem Verwaltungs-LAN (um die Resultate abzufragen und das System zu verwalten), und eine ohne IP-Adresse, das an mit dem zu beobachtenden Abschnitt des Netzwerks verbunden ist. Sie sollten den Webserver so einrichten, dass er nur auf der Schnittstelle lauscht, die mit dem Verwaltungs-LAN verbunden ist.

en: You should configure both interfaces in the standard Debian <filename>/etc/network/interfaces</filename> configuration file. One (the management LAN) address can be configured as you would normally do. The other interface needs to be configured so that it is started up when the system boots, but with no interface address. You can use the following interface definition:
de: Sie sollten beide Schnittstellen in der Standardkonfigurationsdatei von Debian <filename>/etc/network/interfaces</filename> einrichten. Eine Adresse, nämlich die des Verwaltungs-LANs, sollten Sie wie gewöhnlich einrichten. Die andere Schnittstelle muss so konfiguriert werden, dass sie aktiviert wird, wenn das System startet, ihr darf aber keine Interface-Adresse zugewiesen sein. Eine Konfiguration der Schnittstelle könnte folgendermaßen aussehen:

en: Setting up a bridge firewall
de: Aufsetzenden einer Bridge-Firewall

en: This information was contributed by Francois Bayart in order to help users set up a Linux bridge/firewall with the 2.4.x kernel and <package>iptables</package>. Kernel patches are no more needed as the code was made standard part of the Linux kernel distribution.
de: Diese Informationen trug Francois Bayart bei, um Benutzern zu helfen, eine Linux Bridge/Firewall mit 2.4.x Kernel und <application>iptables</application> aufzusetzen. Ein Kernelpatch wird nicht mehr benötigt, da der Code Standardinhalt der Linux-Kernel-Distribution wurde.

en: To configure the kernel with necessary support, run <literal>make menuconfig</literal> or <literal>make xconfig</literal>. In the section <emphasis>Networking options</emphasis>, enable the following options:
de: Um die notwendigen Einstellungen im Kernel vorzunehmen, rufen Sie <literal>make menuconfig</literal> oder <literal>make xconfig</literal> auf. Aktivieren Sie im Abschnitt <emphasis>Networking options</emphasis> folgende Optionen:

en: Caution: you must disable this if you want to apply some firewalling rules or else <command>iptables</command> will not work:
de: Passen Sie auf, dass Sie Folgendes deaktiviert müssen, wenn Sie Firewall-Regeln anwenden wollen; anderenfalls wird <command>iptables</command> nicht funktioniert:

en: Next, add the correct options in the section <emphasis>IP: Netfilter Configuration</emphasis>. Then, compile and install the kernel. If you want to do it the <emphasis>Debian way</emphasis>, install <package>kernel-package</package> and run <command>make-kpkg</command> to create a custom Debian kernel package you can install on your server using dpkg. Once the new kernel is compiled and installed, install the <package>bridge-utils</package> package.
de: Anschließend müssen Sie die korrekten Optionen im Abschnitt <emphasis>IP: Netfilter Configuration</emphasis> setzen. Dann kompilieren und installieren Sie den Kernel. Wenn Sie dies auf die <emphasis>Debian-Art</emphasis> machen wollen, installieren Sie <application>kernel-package</application> und benutzen Sie <command>make-kpkg</command>, um ein maßgeschneidertes Debian-Kernelpaket zu erstellen, das Sie mit dpkg auf Ihrem Server installieren können. Sobald der neue Kernel kompiliert und installiert ist, müssen Sie das Paket <application>bridge-utils</application> installieren.

en: Once these steps are complete, you can complete the configuration of your bridge. The next section presents two different possible configurations for the bridge, each with a hypothetical network map and the necessary commands.
de: Wenn Sie diesen Schritt abgeschlossen haben, können Sie die Konfiguration Ihrer Bridge fertigstellen. Im nächsten Abschnitt werden Ihnen zwei verschiedene mögliche Konfigurationen einer Bridge vorgestellt. Beide sind mit einer Übersicht eines hypothetischen Netzwerks und den notwendigen Befehlen versehen.

en: A bridge providing NAT and firewall capabilities
de: Eine Bridge mit NAT- und Firewall-Fähigkeiten

en: The first configuration uses the bridge as a firewall with network address translation (NAT) that protects a server and internal LAN clients. A diagram of the network configuration is shown below:
de: Die erste Konfigurationsmöglichkeit benutzt die Bridge als Firewall mit Network Address Translation (NAT, Übersetzung der Netzwerkadressen), die einen Server und interne LAN-Clienten schützt. Unten wird eine Darstellung der Anordnung des Netzwerks gezeigt:

en: 
    Internet ---- router ( 62.3.3.25 ) ---- bridge (62.3.3.26 gw 62.3.3.25 / 192.168.0.1)
                                              |
                                              |
                                              |---- WWW Server (62.3.3.27 gw 62.3.3.25)
                                              |
                                              |
                                             LAN --- Zipowz (192.168.0.2 gw 192.168.0.1)
de: 
    Internet ---- Router ( 62.3.3.25 ) ---- Bridge (62.3.3.26 gw 62.3.3.25 / 192.168.0.1)
                                              |
                                              |
                                              |---- WWW-Server (62.3.3.27 gw 62.3.3.25)
                                              |
                                              |
                                             LAN --- Zipowz (192.168.0.2 gw 192.168.0.1)

en: The following commands show how this bridge can be configured.
de: Die folgenden Befehle zeigen, wie diese Bridge konfiguriert werden kann:

en: 
    # Create the interface br0
    /usr/sbin/brctl addbr br0
    
    # Add the Ethernet interface to use with the bridge
    /usr/sbin/brctl addif br0 eth0
    /usr/sbin/brctl addif br0 eth1
    
    # Start up the Ethernet interface
    /sbin/ifconfig eth0 0.0.0.0
    /sbin/ifconfig eth1 0.0.0.0
    
    # Configure the bridge ethernet
    # The bridge will be correct and invisible ( transparent firewall ).
    # It's hidden in a traceroute and you keep your real gateway on the 
    # other computers. Now if you want you can config a gateway on your 
    # bridge and choose it as your new gateway for the other computers.
    
    /sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.31
    
    # I have added this internal IP to create my NAT 
    ip addr add 192.168.0.1/24 dev br0
    /sbin/route add default gw 62.3.3.25
de: 
    # Erstellen der Schnittstelle br0
    /usr/sbin/brctl addbr br0
    
    # Hinzufügen der Ethernet-Schnittstelle, welche die Bridge benutzen soll
    /usr/sbin/brctl addif br0 eth0
    /usr/sbin/brctl addif br0 eth1
    
    # Starten der Ethernet-Schnittstelle
    /sbin/ifconfig eth0 0.0.0.0
    /sbin/ifconfig eth1 0.0.0.0
    
    # Konfigurieren der Ethernet-Bridge
    # Die Bridge wird korrekt und unsichtbar (transparente Firewall) sein.
    # In einem traceroute ist sie versteckt, und Sie behalten Ihr echtes
    # Gateway auf Ihren anderen Computern. Jetzt können Sie ein Gateway
    # auf Ihrer Bridge konfigurieren und es auf Ihren anderen Computern als
    # neues Gateway einsetzen
    
    /sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.31
    
    # Ich habe diese internen IPs für mein NAT benutzt 
    ip addr add 192.168.0.1/24 dev br0
    /sbin/route add default gw 62.3.3.25

en: A bridge providing firewall capabilities
de: Eine Bridge mit Firewall-Fähigkeiten

en: A second possible configuration is a system that is set up as a transparent firewall for a LAN with a public IP address space.
de: Eine zweite denkbare Konfiguration ist ein System, das als transparente Firewall für ein LAN mit einer öffentlichen IP-Adresse aufgesetzt ist.

en: 
    Internet ---- router (62.3.3.25) ---- bridge (62.3.3.26)
                                            |
                                            |
                                            |---- WWW Server (62.3.3.28 gw 62.3.3.25)
                                            |
                                            |
                                            |---- Mail Server (62.3.3.27 gw 62.3.3.25)
de: 
    Internet ---- Router (62.3.3.25) ---- Bridge (62.3.3.26)
                                            |
                                            |
                                            |---- WWW-Server (62.3.3.28 gw 62.3.3.25)
                                            |
                                            |
                                            |---- Mail-Server (62.3.3.27 gw 62.3.3.25)

en: 
    # Create the interface br0
    /usr/sbin/brctl addbr br0
    
    # Add the Ethernet interface to use with the bridge
    /usr/sbin/brctl addif br0 eth0
    /usr/sbin/brctl addif br0 eth1
    
    # Start up the Ethernet interface
    /sbin/ifconfig eth0 0.0.0.0
    /sbin/ifconfig eth1 0.0.0.0
    
    # Configure the bridge Ethernet
    # The bridge will be correct and invisible ( transparent firewall ).
    # It's hidden in a traceroute and you keep your real gateway on the 
    # other computers. Now if you want you can config a gateway on your
    # bridge and choose it as your new gateway for the other computers.
    
    /sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.31
de: 
    # Erstellen der Schnittstelle br0
    /usr/sbin/brctl addbr br0
    
    # Hinzufügen der Ethernet-Schnittstelle, welche die Bridge benutzen soll
    /usr/sbin/brctl addif br0 eth0
    /usr/sbin/brctl addif br0 eth1
    
    # Starten der Ethernet-Schnittstelle
    /sbin/ifconfig eth0 0.0.0.0
    /sbin/ifconfig eth1 0.0.0.0
    
    # Konfigurieren der Ethernet-Bridge
    # Die Bridge wird korrekt und unsichtbar (transparente Firewall) sein.
    # In einem traceroute ist sie versteckt, und Sie behalten Ihr echtes
    # Gateway auf Ihren anderen Computern. Jetzt können Sie ein Gateway
    # auf Ihrer Bridge konfigurieren und es auf Ihren anderen Computern als
    # neues Gateway einsetzen
    
    /sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.31

en: If you traceroute the Linux Mail Server, you won't see the bridge. If you want access to the bridge with <command>ssh</command>, you must have a gateway or you must first connect to another server, such as the "Mail Server", and then connect to the bridge through the internal network card.
de: Wenn Sie mit <command>traceroute</command> die Route des Linux-Mail-Servers verfolgen, sehen Sie die Bridge nicht. Wenn Sie mit <command>ssh</command> auf die Bridge zugreifen wollen, müssen Sie ein Gateway haben oder erst auf einen anderen Server wie den »Mail Server« zugreifen, um dann über die interne Netzwerkkarte auf die Bridge zuzugreifen.

en: Basic IPtables rules
de: Grundlegende Iptables-Regeln

en: This is an example of the basic rules that could be used for either of these setups.
de: Dies ist ein Beispiel für grundlegende Regeln, die für beide Einstellungen benutzt werden können:

en: Basic Iptables rules
de: Grundlegende Iptables-Regeln

en: 
    iptables -F FORWARD
    iptables -P FORWARD DROP
    iptables -A FORWARD -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -m state --state INVALID -j DROP
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    # Some funny rules but not in a classic Iptables sorry ...
    # Limit ICMP 
    # iptables -A FORWARD -p icmp -m limit --limit 4/s -j ACCEPT
    # Match string, a good simple method to block some VIRUS very quickly
    # iptables -I FORWARD -j DROP -p tcp -s 0.0.0.0/0 -m string --string "cmd.exe"
    
    # Block all MySQL connection just to be sure
    iptables -A FORWARD -p tcp -s 0/0 -d 62.3.3.0/24 --dport 3306 -j DROP
    
    # Linux Mail Server Rules
    
    # Allow FTP-DATA (20), FTP (21), SSH (22) 
    iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.27/32 --dport 20:22 -j ACCEPT
    
    # Allow the Mail Server to connect to the outside
    # Note: This is *not* needed for the previous connections 
    # (remember: stateful filtering) and could be removed.
    iptables -A FORWARD -p tcp -s 62.3.3.27/32 -d 0/0 -j ACCEPT
    
    # WWW Server Rules
    
    # Allow HTTP ( 80 ) connections with the WWW server
    iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 80 -j ACCEPT
    
    # Allow HTTPS ( 443 ) connections with the WWW server
    iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 443 -j ACCEPT
    
    # Allow the WWW server to go out
    # Note: This is *not* needed for the previous connections 
    # (remember: stateful filtering) and could be removed.
    iptables -A FORWARD -p tcp -s 62.3.3.28/32 -d 0/0 -j ACCEPT
de: 
    iptables -F FORWARD
    iptables -P FORWARD DROP
    iptables -A FORWARD -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -m state --state INVALID -j DROP
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    # Zwei lustige Regeln, aber nicht bei klassischen Iptables. Sorry ...
    # Limit ICMP 
    # iptables -A FORWARD -p icmp -m limit --limit 4/s -j ACCEPT
    # Übereinstimmende Strings, eine gute, einfache Methode, um Viren sehr
    # schnell abzublocken
    # iptables -I FORWARD -j DROP -p tcp -s 0.0.0.0/0 -m string --string "cmd.exe"
    
    # Abblocken aller MySQL-Verbindungen, nur um sicher zu gehen
    iptables -A FORWARD -p tcp -s 0/0 -d 62.3.3.0/24 --dport 3306 -j DROP
    
    # Regeln für den Linux Mail-Server
    
    # Erlaube FTP-DATA (20), FTP (21), SSH (22)
    iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.27/32 --dport 20:22 -j ACCEPT
    
    #Dem Mail-Server erlauben, sich mit der Außenwelt zu verbinden
    # Beachten Sie: Dies ist *nicht* für die vorherigen Verbindungen
    # notwendig (erinnern Sie sich: stateful filtering) und könnte entfernt
    # werden:
    iptables -A FORWARD -p tcp -s 62.3.3.27/32 -d 0/0 -j ACCEPT
    
    # Regeln für den WWW-Server
    
    # AErlaube HTTP ( 80 ) Verbindungen mit dem WWW-Server
    iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 80 -j ACCEPT
    
    # Erlaube HTTPS ( 443 ) Verbindungen mit dem WWW-Server
    iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 443 -j ACCEPT
    
    # Dem WWW-Server erlauben, sich mit der Außenwelt zu verbinden
    # Beachten Sie: Dies ist *nicht* für die vorherigen Verbindungen
    # notwendig (erinnern Sie sich: stateful filtering) und könnte entfernt
    # werden:
    iptables -A FORWARD -p tcp -s 62.3.3.28/32 -d 0/0 -j ACCEPT

en: Sample script to change the default Bind installation.
de: Beispielskript, um die Standard-Installation von Bind zu ändern

en: This script automates the procedure for changing the <command>bind</command> version 8 name server's default installation so that it does <emphasis>not</emphasis> run as the superuser. Notice that <command>bind</command> version 9 in Debian already does this by default <footnote><para> Since version 9.2.1-5. That is, since Debian release <emphasis>sarge</emphasis>.</para></footnote> , and you are much better using that version than <command>bind</command> version 8.
de: Dieses Skript automatisiert den Vorgang, die Standardinstallation des Name-Servers <command>bind</command> in der Version 8 zu ändern, so dass er <emphasis>nicht</emphasis> als Root läuft. Hinweis: Bei <command>bind</command> in der Version 9 in Debian ist dies standardmäßig so.<footnote><para>Ab der Version 9.2.1-5, also seit der Veröffentlichung von <emphasis>Sarge</emphasis>.</para></footnote> Diese Version ist demnach der Version 8 von <command>bind</command> vorzuziehen.

en: This script is here for historical purposes and to show how you can automate this kind of changes system-wide. The script will create the user and groups defined for the name server and will modify both <filename>/etc/default/bind</filename> and <filename>/etc/init.d/bind</filename> so that the program will run with that user. Use with extreme care since it has not been tested thoroughly.
de: Dieses Skript ist hier aus historischen Gründen aufgeführt und soll zeigen, wie man diese Art von Veränderungen systemweit automatisieren kann. Das Skript wird den Benutzer und die Gruppe für den Name-Server erstellen und <filename>/etc/default/bind</filename> und <filename>/etc/init.d/bind</filename> so ändern, dass das Programm unter diesem Benutzer läuft. Benutzen Sie es äußerst vorsichtig, da es nicht eingehend getestet wurde.

en: You can also create the users manually and use the patch available for the default init.d script attached to <ulink name="bug report #157245" url="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=157245" />.
de: Sie können die Benutzer auch von Hand erstellen und dann den Patch für das Standard-Init.d-Skript verwenden, der im <ulink url="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=157245" name="Fehlerbericht #157245" /> enthalten ist.

en: 
      #!/bin/sh
      # Change the default Debian bind v8 configuration to have it run
      # with a non-root user and group.
      # 
      # DO NOT USER this with version 9, use debconf for configure this instead
      #
      # WARN: This script has not been tested thoroughly, please
      # verify the changes made to the INITD script
    
      # (c) 2002 Javier Fernandez-Sanguino Pena
      #
      #    This program is free software; you can redistribute it and/or modify
      #    it under the terms of the GNU General Public License as published by
      #    the Free Software Foundation; either version 1, or (at your option)
      #    any later version.
      #
      #    This program is distributed in the hope that it will be useful,
      #    but WITHOUT ANY WARRANTY; without even the implied warranty of
      #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      #    GNU General Public License for more details.
      #
      #     Please see the file `COPYING' for the complete copyright notice.
      #
    
      restore() {
      # Just in case, restore the system if the changes fail
        echo "WARN: Restoring to the previous setup since I'm unable to properly change it."
        echo "WARN: Please check the $INITDERR script."
        mv $INITD $INITDERR
        cp $INITDBAK $INITD
      }
    
    
      USER=named
      GROUP=named
      INITD=/etc/init.d/bind
      DEFAULT=/etc/default/bind
      INITDBAK=$INITD.preuserchange
      INITDERR=$INITD.changeerror
      AWKS="awk ' /\/usr\/sbin\/ndc reload/ { print \"stop; sleep 2; start;\"; noprint = 1; } /\\\\$/ { if ( noprint != 0 ) { noprint = noprint + 1;} } /^.*$/ { if ( noprint != 0 ) { noprint = noprint - 1; } else { print \$0; } } '"
    
      [ `id -u` -ne 0 ] &amp;&amp; {
        echo "This program must be run by the root user"
        exit 1
      }
    
      RUNUSER=`ps eo user,fname |grep named |cut -f 1 -d " "`
    
      if [ "$RUNUSER" = "$USER" ] 
      then
        echo "WARN: The name server running daemon is already running as $USER"
        echo "ERR:  This script will not do any changes to your setup."
        exit 1
      fi
      if [ ! -f "$INITD" ]
      then
        echo "ERR:  This system does not have $INITD (which this script tries to change)"
        RUNNING=`ps eo fname |grep named`
        [ -z "$RUNNING" ] &amp;&amp; \
          echo "ERR:  In fact the name server daemon is not even running (is it installed?)"
        echo "ERR:  No changes will be made to your system"
        exit 1
      fi
    
      # Check if there are options already setup 
      if [ -e "$DEFAULT" ]
      then
        if grep -q ^OPTIONS $DEFAULT; then
          echo "ERR: The $DEFAULT file already has options set."
          echo "ERR:  No changes will be made to your system"
        fi
      fi
    
      # Check if named group exists
      if [ -z "`grep $GROUP /etc/group`" ] 
      then
        echo "Creating group $GROUP:"
        addgroup $GROUP
      else
        echo "WARN: Group $GROUP already exists. Will not create it"
      fi
      # Same for the user
      if [ -z "`grep $USER /etc/passwd`" ] 
      then
        echo "Creating user $USER:"
        adduser --system --home /home/$USER \
          --no-create-home --ingroup $GROUP \
          --disabled-password --disabled-login $USER
      else
        echo "WARN: The user $USER already exists. Will not create it"
      fi
    
      # Change the init.d script
    
      # First make a backup (check that there is not already
      # one there first)
      if [ ! -f $INITDBAK ] 
      then
        cp $INITD $INITDBAK
      fi
    
      # Then use it to change it
      cat $INITDBAK |
      eval $AWKS &gt; $INITD
    
      # Now put the options in the /etc/default/bind file:
      cat &gt;&gt;$DEFAULT &lt;&lt;EOF
    # Make bind run with the user we defined
    OPTIONS="-u $USER -g $GROUP"
    EOF
    
      echo "WARN: The script $INITD has been changed, trying to test the changes."
      echo "Restarting the named daemon (check for errors here)."
    
      $INITD restart
      if [ $? -ne 0 ] 
      then
        echo "ERR:  Failed to restart the daemon."
        restore
        exit 1
      fi
    
      RUNNING=`ps eo fname |grep named`
      if [ -z "$RUNNING" ] 
      then
        echo "ERR:  Named is not running, probably due to a problem with the changes."
        restore
        exit 1
      fi
    
      # Check if it's running as expected
      RUNUSER=`ps eo user,fname |grep named |cut -f 1 -d " "`
    
      if [ "$RUNUSER" = "$USER" ] 
      then
        echo "All has gone well, named seems to be running now as $USER."
      else
        echo "ERR:  The script failed to automatically change the system."
        echo "ERR:  Named is currently running as $RUNUSER."
        restore
        exit 1
      fi
    
      exit 0
de: 
      #!/bin/sh
      # Change the default Debian bind v8 configuration to have it run
      # with a non-root user and group.
      # 
      # DO NOT USER this with version 9, use debconf for configure this instead
      #
      # WARN: This script has not been tested thoroughly, please
      # verify the changes made to the INITD script
    
      # (c) 2002 Javier Fernández-Sanguino Peña
      #
      #    This program is free software; you can redistribute it and/or modify
      #    it under the terms of the GNU General Public License as published by
      #    the Free Software Foundation; either version 1, or (at your option)
      #    any later version.
      #
      #    This program is distributed in the hope that it will be useful,
      #    but WITHOUT ANY WARRANTY; without even the implied warranty of
      #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      #    GNU General Public License for more details.
      #
      #     Please see the file `COPYING' for the complete copyright notice.
      #
    
      restore() {
      # Just in case, restore the system if the changes fail
        echo "WARN: Restoring to the previous setup since I'm unable to properly change it."
        echo "WARN: Please check the $INITDERR script."
        mv $INITD $INITDERR
        cp $INITDBAK $INITD
      }
    
    
      USER=named
      GROUP=named
      INITD=/etc/init.d/bind
      DEFAULT=/etc/default/bind
      INITDBAK=$INITD.preuserchange
      INITDERR=$INITD.changeerror
      AWKS="awk ' /\/usr\/sbin\/ndc reload/ { print \"stop; sleep 2; start;\"; noprint = 1; } /\\\\$/ { if ( noprint != 0 ) { noprint = noprint + 1;} } /^.*$/ { if ( noprint != 0 ) { noprint = noprint - 1; } else { print \$0; } } '"
    
      [ `id -u` -ne 0 ] &#38;&#38; {
        echo "This program must be run by the root user"
        exit 1
      }
    
      RUNUSER=`ps eo user,fname |grep named |cut -f 1 -d " "`
    
      if [ "$RUNUSER" = "$USER" ] 
      then
        echo "WARN: The name server running daemon is already running as $USER"
        echo "ERR:  This script will not do any changes to your setup."
        exit 1
      fi
      if [ ! -f "$INITD" ]
      then
        echo "ERR:  This system does not have $INITD (which this script tries to change)"
        RUNNING=`ps eo fname |grep named`
        [ -z "$RUNNING" ] &#38;&#38; \
          echo "ERR:  In fact the name server daemon is not even running (is it installed?)"
        echo "ERR:  No changes will be made to your system"
        exit 1
      fi
    
      # Check if there are options already setup 
      if [ -e "$DEFAULT" ]
      then
        if grep -q ^OPTIONS $DEFAULT; then
          echo "ERR: The $DEFAULT file already has options set."
          echo "ERR:  No changes will be made to your system"
        fi
      fi
    
      # Check if named group exists
      if [ -z "`grep $GROUP /etc/group`" ] 
      then
        echo "Creating group $GROUP:"
        addgroup $GROUP
      else
        echo "WARN: Group $GROUP already exists. Will not create it"
      fi
      # Same for the user
      if [ -z "`grep $USER /etc/passwd`" ] 
      then
        echo "Creating user $USER:"
        adduser --system --home /home/$USER \
          --no-create-home --ingroup $GROUP \
          --disabled-password --disabled-login $USER
      else
        echo "WARN: The user $USER already exists. Will not create it"
      fi
    
      # Change the init.d script
    
      # First make a backup (check that there is not already
      # one there first)
      if [ ! -f $INITDBAK ] 
      then
        cp $INITD $INITDBAK
      fi
    
      # Then use it to change it
      cat $INITDBAK |
      eval $AWKS &gt; $INITD
    
      # Now put the options in the /etc/default/bind file:
      cat &gt;&gt;$DEFAULT &lt;&lt;EOF
    # Make bind run with the user we defined
    OPTIONS="-u $USER -g $GROUP"
    EOF
    
      echo "WARN: The script $INITD has been changed, trying to test the changes."
      echo "Restarting the named daemon (check for errors here)."
    
      $INITD restart
      if [ $? -ne 0 ] 
      then
        echo "ERR:  Failed to restart the daemon."
        restore
        exit 1
      fi
    
      RUNNING=`ps eo fname |grep named`
      if [ -z "$RUNNING" ] 
      then
        echo "ERR:  Named is not running, probably due to a problem with the changes."
        restore
        exit 1
      fi
    
      # Check if it's running as expected
      RUNUSER=`ps eo user,fname |grep named |cut -f 1 -d " "`
    
      if [ "$RUNUSER" = "$USER" ] 
      then
        echo "All has gone well, named seems to be running now as $USER."
      else
        echo "ERR:  The script failed to automatically change the system."
        echo "ERR:  Named is currently running as $RUNUSER."
        restore
        exit 1
      fi
    
      exit 0

en: The previous script, run on Woody's (Debian 3.0) custom <command>bind</command> (version 8), will modify the initd file after creating the 'named' user and group and will
de: Das obige Skript wird, wenn es auf Woodys (Debian 3.0) <command>bind</command> (Version 8) angewendet wird, die initd-Datei verändern, nachdem der Benutzer und die Gruppe »named« erstellt wurde.

en: Security update protected by a firewall
de: Schutz der Sicherheitsaktualisierung durch eine Firewall

en: After a standard installation, a system may still have some security vulnerabilities. Unless you can download updates for the vulnerable packages on another system (or you have mirrored security.debian.org for local use), the system will have to be connected to the Internet for the downloads.
de: Nach einer Standard-Installation könnten immer noch Sicherheitslücken auf dem System vorhanden sein. Falls Sie die Aktualisierungen für die verwundbaren Pakete nicht auf einem anderen System herunterladen können (oder security.debian.org zu lokalen Zwecken spiegeln können), müssen Sie sich mit dem Internet verbinden, um die Pakete herunterzuladen.

en: However, as soon as you connect to the Internet you are exposing this system. If one of your local services is vulnerable, you might be compromised even before the update is finished! This may seem paranoid but, in fact, analysis from the <ulink name="Honeynet Project" url="http://www.honeynet.org" /> has shown that systems can be compromised in less than three days, even if the system is not publicly known (i.e., not published in DNS records).
de: Wenn Sie sich jedoch mit dem Internet verbinden, setzen Sie Ihr System einer Gefahr aus. Wenn einer Ihrer lokalen Dienste angreifbar ist, könnten Sie kompromittiert sein, noch bevor die Aktualisierung beendet ist! Sie mögen dies paranoid finden, aber eine Analyse vom <ulink url="http://www.honeynet.org" name="Honeynet Project" /> zeigt tatsächlich, dass ein System in weniger als drei Tagen kompromittiert werden kann, sogar wenn das System gar nicht der Öffentlichkeit bekannt ist (d.h. nicht in DNS-Einträgen auftaucht).

en: When doing an update on a system not protected by an external system like a firewall, it is possible to properly configure your local firewall to restrict connections involving only the security update itself. The example below shows how to set up such local firewall capabilities, which allow connections from security.debian.org only, logging all others.
de: Wenn Sie eine Aktualisierung Ihres Systems durchführen, das nicht von einem externen System (z.B. einer Firewall) geschützt ist, können Sie trotzdem eine lokale Firewall so konfigurieren, dass Sie nur die Sicherheitsaktualisierung selbst erlaubt. Das Beispiel unten zeigt, wie die lokale Firewall aufgesetzt werden muss, damit nur Verbindungen zu security.debian.org erlaubt werden, während der Rest protokolliert wird.

en: The following example can be use to setup a restricted firewall ruleset. Run this commands from a local console (not a remote one) to reduce the chances of locking yourself out of the system.
de: Im nachfolgenden Beispiel wird ein strenges Regelwerk für eine Firewall dargestellt. Führen Sie diese Befehle auf einer lokalen Konsole aus (und nicht auf einer entfernten), um das Risiko zu verringern, sich aus Ihrem System auszusperren.

en: Note: Using a <emphasis>DROP</emphasis> policy in the INPUT chain is the most correct thing to do, but be <emphasis>very</emphasis> careful when doing this after flushing the chain from a remote connection. When testing firewall rulesets from a remote location it is best if you run a script with the firewall ruleset (instead of introducing the ruleset line by line through the command line) and, as a precaution, keep a backdoor<footnote><para>Such as <emphasis>knockd</emphasis>. Alternatively, you can open a different console and have the system ask for confirmation that there is somebody on the other side, and reset the firewall chain if no confirmation is given. The following test script could be of use: <programlisting> #!/bin/bash while true; do read -n 1 -p "Are you there? " -t 30 ayt if [ -z "$ayt" ] ; then break fi done # Reset the firewall chain, user is not available echo echo "Resetting firewall chain!" iptables -F iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT exit 1 </programlisting></para></footnote>
de: Hinweis: Es ist die vorzugswürdige Verfahrensweise, die Policy-Regel <emphasis>DROP</emphasis> für die Input-Kette zu verwenden. Seien Sie aber <emphasis>äußerst</emphasis> vorsichtig, wenn Sie dies bei einer entfernten Verbindung unternehmen. Wenn Sie das Regelwerk Ihrer Firewall aus der Ferne testen, ist es am besten, wenn Sie ein Skript mit dem Regelwerk laufen lassen (anstatt jede Regel Zeile für Zeile von der Befehlszeile aus einzugeben) und sich vorsorglich eine Hintertür<footnote><para>Wie z.B. <emphasis>knockd</emphasis>. Alternativ dazu können Sie auch eine separate Konsole öffnen und das System nachfragen lassen, ob sich jemand auf der Gegenseite befindet. Wenn keine Eingabe erfolgt, werden die Firewall-Regeln zurückgesetzt. Ein Beispiel dafür ist: <programlisting>#!/bin/bash
    
    while true; do
        read -n 1 -p "Are you there? " -t 30 ayt
        if [ -z "$ayt" ] ; then
            break
        fi
    done
    
    # Reset the firewall chain, user is not available
    echo
    echo "Resetting firewall chain!"
    iptables -F
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    exit 1
    </programlisting></para></footnote>

en: Of course, you should disable any backdoors before getting the system into production. configured so that you can re-enable access to the system if you make a mistake. That way there would be no need to go to a remote location to fix a firewall ruleset that blocks you.
de: Selbstverständlich müssen Sie alle Hintertüren abschalten, ehe Sie Ihr System in Betrieb nehmen. Offen halten, so dass Sie wieder Zugriff auf Ihr System bekommen, wenn Sie einen Fehler gemacht haben. Auf diese Weise müssen Sie sich nicht auf den Weg zum entfernten Rechner machen, um die Firewall-Regel, mit der Sie sich ausgeschlossen haben, zu korrigieren.

en: Chroot environment for <application>SSH</application>
de: Chroot-Umgebung für <application>SSH</application>

en: Creating a restricted environment for <application>SSH</application> is a tough job due to its dependencies and the fact that, unlike other servers, <application>SSH</application> provides a remote shell to users. Thus, you will also have to consider the applications users will be allowed to use in the environment.
de: Es ist eine schwere Aufgabe, eine eingeschränkte Umgebung für <command>SSH</command> zu erstellen. Das liegt zum einen an seinen Abhängigkeiten und zum anderen daran, dass <command>SSH</command> im Gegensatz zu anderen Servern den Benutzern eine entfernte Shell zur Verfügung stellt. Daher müssen Sie sich überlegen, welche Programme Benutzer in der Umgebung verwenden sollen.

en: You have two options to setup a restricted remote shell:
de: Sie haben zwei Möglichkeiten, eine beschränkte entfernte Shell einzurichten:

en: Chrooting the ssh users, by properly configuring the ssh daemon you can ask it to chroot a user after authentication just before it is provided a shell. Each user can have their own environment.
de: die SSH-Benutzer in ein Chroot-Gefängnis einsperren: Dazu müssen Sie den SSH-Daemon so konfigurieren, dass er Benutzer nach der Authentifizierung in ein Chroot-Gefängnis einsperrt, bevor sie eine Shell bekommen. Jeder Benutzer kann seine eigene Umgebung haben.

en: Chrooting the ssh server, since you chroot the ssh application itself all users are chrooted to the defined environment.
de: den SSH-Server in ein Chroot-Gefängnis einsperren: Wenn die SSH-Anwendung sich selbst in einer Chroot-Umgebung befindet, sind auch alle Benutzer in diese Umgebung eingesperrt.

en: The first option has the advantage of making it possible to have both non-chrooted and chrooted users, if you don't introduce any setuid application in the user's chroots it is more difficult to break out of it. However, you might need to setup individual chroots for each user and it is more difficult to setup (as it requires cooperation from the SSH server). The second option is more easy to setup, and protects from an exploitation of the ssh server itself (since it's also in the chroot) but it will have the limitation that all users will share the same chroot environment (you cannot setup a per-user chroot environment).
de: Die erste Möglichkeit hat den Vorteil, dass es möglich ist, sowohl unbeschränkte als auch beschränkte Benutzer zu haben. Falls Sie keine Setuid-Anwendungen in der Chroot-Umgebung zur Verfügung stellen, wird es schwieriger, aus dem Gefängnis auszubrechen. Allerdings müssen Sie gegebenenfalls Chroot-Umgebungen für jeden Benutzer einzeln einrichten. Außerdem ist die Konfiguration schwieriger, da es Zusammenarbeit mit dem SSH-Server erfordert. Die zweite Möglichkeit ist leichter zu verwirklichen und schützt vor dem Ausnutzen eines Exploits des SSH-Servers, da auch dieser im Chroot-Gefängnis ist. Jedoch müssen alle Benutzer die gleiche Chroot-Umgebung verwenden. Verschiedene Umgebungen für verschiedene Benutzer sind nicht möglich.

en: Chrooting the ssh users
de: SSH-Benutzer in ein Chroot-Gefängnis einsperren

en: You can setup the ssh server so that it will chroot a set of defined users into a shell with a limited set of applications available.
de: Sie können den SSH-Server so einrichten, dass er bestimmte Benutzer in eine Chroot-Umgebung einsperrt, so dass sie eine Shell mit nur einer beschränkten Anzahl von Anwendungen zur Verfügung haben.

en: Using <package>libpam-chroot</package>
de: Einsatz von <package>libpam-chroot</package>

en: Probably the easiest way is to use the <package>libpam-chroot</package> package provided in Debian. Once you install it you need to:
de: Der wahrscheinlich leichteste Weg ist, das Paket <application>libpam-chroot</application>, das in Debian vorhanden ist, zu verwenden. Wenn Sie es installiert haben, müssen Sie:

en: Modify <filename>/etc/pam.d/ssh</filename> to use this PAM module, add as its last line<footnote><para>You can use the <emphasis>debug</emphasis> option to have it send the progress of the module to the <emphasis>authpriv.notice</emphasis> facility</para></footnote>:
de: <filename>/etc/pam.d/ssh</filename> verändern, um dieses PAM-Modul zu verwenden. Fügen Sie dazu als letzte Zeile Folgendes ein<footnote><para>Sie können die Option <emphasis>debug</emphasis> verwenden. Damit wird der Fortschritt des Moduls unter <emphasis>authpriv.notice</emphasis> protokolliert.</para></footnote>:

en: set a proper chroot environment for the user. You can try using the scripts available at <filename>/usr/share/doc/libpam-chroot/examples/</filename>, use the <package>makejail</package> <footnote><para>You can create a very limited bash environment with the following python definition for makejail, just create the directory <filename>/var/chroots/users/foo</filename> and a file with the following contents and call it <filename>bash.py</filename>: <screen> chroot="/var/chroots/users/foo" cleanJailFirst=1 testCommandsInsideJail=["bash ls"] </screen> And then run <emphasis>makejail bash.py</emphasis> to create the user environment at <filename>/var/chroots/users/foo</filename>. To test the environment run: <screen> # chroot /var/chroots/users/foo/ ls bin dev etc lib proc sbin usr </screen> </para></footnote> program or setup a minimum Debian environment with <package>debootstrap</package>. Make sure the environment includes the needed devices <footnote><para>In some occasions you might need the <filename>/dev/ptmx</filename> and <filename>/dev/pty*</filename> devices and the <filename>/dev/pts/</filename> subdirectory. Running MAKEDEV in the <filename>/dev</filename> directory of the chrooted environment should be sufficient to create them if they do not exist. If you are using kernels (version 2.6) which dynamically create device files you will need to create the /dev/pts/ files yourself and grant them the proper privileges.</para></footnote>.
de: eine passende Chroot-Umgebung für die Benutzer einrichten. Sie können versuchen, die Skripte unter <filename>/usr/share/doc/libpam-chroot/examples/</filename> zu verwenden, das Programm <application>makejail</application> benutzen<footnote><para>Mit folgendem Python-Aufruf können Sie eine sehr eingeschränkte Bash-Umgebung für makejail erstellen. Erstellen Sie das Verzeichnis <filename>/var/chroots/users/foo</filename> und eine Datei mit dem Namen <filename>bash.py</filename> und folgendem Inhalt: <screen>  chroot="/var/chroots/users/foo"
      cleanJailFirst=1
      testCommandsInsideJail=["bash ls"]</screen> Führen Sie dann <emphasis>makejail bash.py</emphasis> aus, um eine Benutzer-Umgebung unter <filename>/var/chroots/users/foo</filename> zu erstellen. So testen Sie die Umgebung: <screen>   # chroot /var/chroots/users/foo/ ls
      bin  dev  etc  lib  proc  sbin  usr </screen> </para></footnote> oder eine minimale Debian-Umgebung mit <application>debootstrap</application> aufsetzen. Stellen Sie sicher, dass die Umgebung die notwendigen Geräte enthält.<footnote><para> Unter Umständen benötigen Sie die Geräte <filename>/dev/ptmx</filename> und <filename>/dev/pty*</filename> und das Unterverzeichnis <filename>/dev/pts/</filename>. Es sollte ausreichen, MAKEDEV im <filename>/dev</filename>-Verzeichnis der Chroot-Umgebung auszuführen, um sie zu erstellen, falls sie nicht existieren. Wenn Sie einen Kernel einsetzen, der die Gerätedateien dynamisch erstellt (Version 2.6), müssen Sie die Dateien /dev/pts/ selbst erstellen und mit den passenden Rechten ausstatten.</para></footnote>

en: Configure <filename>/etc/security/chroot.conf</filename> so that the users you determine are chrooted to the directory you setup previously. You might want to have independent directories for different users so that they will not be able to see neither the whole system nor each other's.
de: <filename>/etc/security/chroot.conf</filename> bearbeiten, damit die ausgewählten Benutzer in das Verzeichnis eingesperrt werden, das Sie zuvor eingerichtet haben. Sie sollten getrennte Verzeichnisse für verschiedene Benutzer haben, damit sie weder das ganze System noch sich gegenseitig sehen können.

en: Configure SSH: Depending on your OpenSSH version the chroot environment might work straight of the box or not. Since 3.6.1p2 the <emphasis>do_pam_session()</emphasis> function is called after sshd has dropped privileges, since chroot() needs root priviledges it will not work with Privilege separation on. In newer OpenSSH versions, however, the PAM code has been modified and do_pam_session is called before dropping priviledges so it will work even with Privilege separation is on. If you have to disable it modify <filename>/etc/ssh/sshd_config</filename> like this:
de: SSH konfigurieren: Je nach der eingesetzten OpenSSH-Version funktioniert die Chroot-Umgebung sofort. Seit 3.6.1p2 wird die Funktion <emphasis>do_pam_session()</emphasis> aufgerufen, nachdem sshd seine Rechte abgelegt hat. Da chroot() Root-Rechte benötigt, wird es mit Rechtetrennung nicht funktionieren. Allerdings wurde in neueren OpenSSH-Versionen der PAM-Code verändert, so dass do_pam_session vor dem Ablegen der Rechte aufgerufen wird. Daher funktioniert es auch mit aktivierter Rechtetrennung. Falls Sie sie abschalten müssen, müssen Sie <filename>/etc/ssh/sshd_config</filename> so verändern:

en: Notice that this will lower the security of your system since the OpenSSH server will then run as <emphasis>root</emphasis> user. This means that if a remote attack is found against OpenSSH an attacker will get <emphasis>root</emphasis> privileges instead of <emphasis>sshd</emphasis>, thus compromising the whole system. <footnote><para> If you are using a kernel that implements Mandatory Access Control (RSBAC/SElinux) you can avoid changing this configuration just by granting the <emphasis>sshd</emphasis> user privileges to make the chroot() system call. </para></footnote>
de: Beachten Sie, dass das die Sicherheit Ihres Systems verringern wird, da dann der OpenSSH-Server als <emphasis>Root</emphasis> läuft. Das bedeutet, dass wenn eine Angriffsmöglichkeit aus der Ferne gegen OpenSSH entdeckt wird, ein Angreifer <emphasis>Root</emphasis>-Rechte anstatt nur <emphasis>Sshd</emphasis>-Rechte erlangen wird und somit das gesamte System kompromittiert.<footnote><para> Wenn Sie einen Kernel verwenden, der Mandatory-Access-Control (RSBAC/SElinux) unterstützt, müssen Sie die Konfiguration nicht ändern, wenn Sie dem <emphasis>Sshd</emphasis>-Benutzer die notwendigen Rechte einräumen, um den Systemaufruf chroot() ausführen zu können.</para></footnote>

en: If you don't disable <emphasis>Privilege Separation</emphasis> you will need an <filename>/etc/passwd</filename> which includes the user's UID inside the chroot for <emphasis>Privilege Separation</emphasis> to work properly.
de: Wenn Sie die <emphasis>Rechtetrennung</emphasis> nicht deaktivieren, brauchen Sie im Chroot-Gefängnis <filename>/etc/passwd</filename>, welches die Benutzer-UID enthält, damit die <emphasis>Rechtetrennung</emphasis> funktioniert.

en: If you have <emphasis>Privilege Separation</emphasis> set to <emphasis>yes</emphasis> and your OpenSSH version does not behave properly you will need to disable it. If you don't, users that try to connect to your server and would be chrooted by this module will see this:
de: Wenn Sie die Option <emphasis>Rechtetrennung</emphasis> auf <emphasis>yes</emphasis> gesetzt haben und Ihre Version von OpenSSH nicht richtig läuft, müssen Sie sie abschalten. Wenn Sie das unterlassen, werden Benutzer, die sich mit Ihrem Server verbinden wollen und von diesem Modul in eine Chroot-Umgebung eingesperrt werden sollen, Folgendes zu sehen bekommen:

en: This is because the ssh daemon, which is running as 'sshd', is not be able to make the chroot() system call. To disable Privilege separation you have to modify the <filename>/etc/ssh/sshd_config</filename> configuration file as described above.
de: Dies geschieht, weil der SSH-Daemon, der als »sshd« läuft, nicht den Systemaufruf chroot() ausführen kann. Um die Rechtetrennung abzuschalten, müssen Sie die Konfigurationsdatei <filename>/etc/ssh/sshd_config</filename> wie oben beschrieben verändern.

en: Notice that if any of the following is missing the users will not be able to logon to the chroot:
de: Beachten Sie, dass, wenn Folgendes fehlt, sich die Benutzer nicht in der Chroot-Umgebung anmelden können:

en: The <filename>/proc</filename> filesystem needs to be mounted in the users' chroot.
de: Das Dateisystem <filename>/proc</filename> muss in der Chroot-Umgebung des Benutzers gemountet sein.

en: The necessary <filename>/dev/pts/</filename> devices need to exist. If the files are generated by your running kernel automatically then you have to manually create them on the chroot's <filename>/dev/</filename>.
de: Die notwendigen Geräte unter <filename>/dev/pts/</filename> müssen vorliegen. Falls diese Dateien automatisch vom Kernel erstellt werden, müssen Sie sie von Hand unter <filename>/dev/</filename> in der Chroot-Umgebung erstellen.

en: The user's home directory has to exist in the chroot, otherwise the ssh daemon will not continue.
de: Das Home-Verzeichnis des Benutzers muss in der Chroot-Umgebung existieren. Ansonsten wird der SSH-Daemon nicht fortfahren.

en: You can debug all these issues if you use the <emphasis>debug</emphasis> keyword in the <filename>/etc/pam.d/ssh</filename> PAM definition. If you encounter issues you might find it useful to enable the debugging mode on the ssh client too.
de: Sie können diese Probleme mit dem Schlüsselwort <emphasis>debug</emphasis> in der PAM-Konfiguration <filename>/etc/pam.d/ssh</filename> debuggen. Falls Sie auf Probleme stoßen, kann es sich als nützlich erweisen, auch den Debugging-Modus des SSH-Clients zu aktivieren.

en: Note: This information is also available (and maybe more up to date) in <filename>/usr/share/doc/libpam-chroot/README.Debian.gz</filename>, please review it for updated information before taking the above steps.
de: Hinweis: Diese Informationen sind auch in <filename>/usr/share/doc/libpam-chroot/README.Debian.gz</filename> enthalten (und vielleicht aktueller). Bitte überprüfen Sie, ob dort aktualisierte Informationen vorhanden sind, bevor Sie die oben aufgezeigten Schritte ausführen.

en: Patching the <command>ssh</command> server
de: Patchen des <command>ssh</command>-Servers

en: Debian's <command>sshd</command> does not allow restriction of a user's movement through the server, since it lacks the <command>chroot</command> function that the commercial program <command>sshd2</command> includes (using 'ChrootGroups' or 'ChrootUsers', see <citerefentry><refentrytitle>sshd2_config</refentrytitle> <manvolnum>5</manvolnum></citerefentry>). However, there is a patch available to add this functionality available from <ulink name="ChrootSSH project" url="http://chrootssh.sourceforge.net" /> (requested and available in <ulink name="Bug #139047" url="http://bugs.debian.org/139047" /> in Debian). The patch may be included in future releases of the OpenSSH package. Emmanuel Lacour has <command>ssh</command> deb packages for <emphasis>sarge</emphasis> with this feature. They are available at <ulink url="http://debian.home-dn.net/sarge/ssh/" />. Notice that those might not be up to date so completing the compilation step is recommended.
de: Debians <command>sshd</command> gestattet nicht, die Bewegungen eines Benutzer durch den Server zu beschränken, da er keine <command>Chroot</command>-Funktionalität besitzt. Diese ist im Gegensatz dazu Bestandteil des kommerziellen Programms <command>sshd2</command> (es verwendet »ChrootGroups« oder »ChrootUsers«, siehe <citerefentry><refentrytitle>sshd2_config</refentrytitle> <manvolnum>5</manvolnum></citerefentry>). Allerdings gibt es einen Patch, der <command>sshd</command> um diese Funktion erweitert. Den Patch erhalten Sie unter <ulink url="http://chrootssh.sourceforge.net" name="ChrootSSH project" /> (wurde in <ulink url="http://bugs.debian.org/139047" name="Fehlerbericht #139047" /> nachgefragt). Der Patch könnte Bestandteil von zukünftigen Veröffentlichungen des OpenSSH-Pakets werden. Emmanuel Lacour bietet <command>ssh</command>-Pakete als Debs mit diesen Fähigkeiten für <emphasis>Sarge</emphasis> an. Sie sind unter <ulink url="http://debian.home-dn.net/sarge/ssh/" /> verfügbar. Beachten Sie aber, dass sie nicht aktuell sein müssen, daher wird empfohlen, den Weg der Kompilierung zu gehen.

en: After applying the patch, modify <filename>/etc/passwd</filename> by changing the home path of the users (with the special <literal>/./</literal> token):
de: Nachdem Sie den Patch angewendet haben, müssen Sie <filename>/etc/passwd</filename> anpassen und darin das Home-Verzeichnis der Benutzer ändern (mit dem speziellen <literal>/./</literal> Kürzel).

en: 
      joeuser:x:1099:1099:Joe Random User:/home/joe/./:/bin/bash
de: 
      joebenutzer:x:1099:1099:Joe Zufaelliger Benutzer:/home/joe/./:/bin/bash

en: This will restrict <emphasis>both</emphasis> remote shell access, as well as remote copy through the <command>ssh</command> channel.
de: Dies wird <emphasis>sowohl</emphasis> den Fernzugriff auf die Shell <emphasis>als auch</emphasis> Fernkopien über den <command>ssh</command>-Kanal einschränken.

en: Make sure to have all the needed binaries and libraries in the <command>chroot</command>'ed path for users. These files should be owned by root to avoid tampering by the user (so as to exit the <command>chroot</command>'ed jailed). A sample might include:
de: Gehen Sie sicher, dass Sie alle benötigten Programme und Bibliotheken in den <command>Chroot</command>-Pfaden der Benutzer haben. Diese Dateien sollten Root als Eigentümer haben, um Manipulationen durch den Benutzer zu verhindern (zum Beispiel um das <command>chroot</command>-Gefängnis zu verlassen). Ein Beispiel könnte so aussehen:

en: 
    ./bin:
    total 660
    drwxr-xr-x    2 root     root         4096 Mar 18 13:36 .
    drwxr-xr-x    8 guest    guest        4096 Mar 15 16:53 ..
    -r-xr-xr-x    1 root     root       531160 Feb  6 22:36 bash
    -r-xr-xr-x    1 root     root        43916 Nov 29 13:19 ls
    -r-xr-xr-x    1 root     root        16684 Nov 29 13:19 mkdir
    -rwxr-xr-x    1 root     root        23960 Mar 18 13:36 more
    -r-xr-xr-x    1 root     root         9916 Jul 26  2001 pwd
    -r-xr-xr-x    1 root     root        24780 Nov 29 13:19 rm
    lrwxrwxrwx    1 root     root            4 Mar 30 16:29 sh -&gt; bash
de: 
    ./bin:
    total 660
    drwxr-xr-x    2 root     root         4096 Mar 18 13:36 .
    drwxr-xr-x    8 guest    guest        4096 Mar 15 16:53 ..
    -r-xr-xr-x    1 root     root       531160 Feb  6 22:36 bash
    -r-xr-xr-x    1 root     root        43916 Nov 29 13:19 ls
    -r-xr-xr-x    1 root     root        16684 Nov 29 13:19 mkdir
    -rwxr-xr-x    1 root     root        23960 Mar 18 13:36 more
    -r-xr-xr-x    1 root     root         9916 Jul 26  2001 pwd
    -r-xr-xr-x    1 root     root        24780 Nov 29 13:19 rm
    lrwxrwxrwx    1 root     root            4 Mar 30 16:29 sh -> bash

en: Chrooting the ssh server
de: Einsperren des SSH-Servers in einem Chroot-Gefängnis

en: If you create a chroot which includes the SSH server files in, for example <filename>/var/chroot/ssh</filename>, you would start the <command>ssh</command> server <command>chroot</command>'ed with this command:
de: Wenn Sie eine Chroot-Umgebung erstellen, welche die Dateien des SSH-Servers enthält, z.B. unter <filename>/var/chroot/ssh</filename>, sollten Sie den im <command>chroot</command>-Gefängnis eingesperrten <command>ssh</command>-Server mit diesem Befehl starten:

en: That would make startup the <command>sshd</command> daemon inside the chroot. In order to do that you have to first prepare the contents of the <filename>/var/chroot/ssh</filename> directory so that it includes both the SSH server and all the utilities that the users connecting to that server might need. If you are doing this you should make certain that OpenSSH uses <emphasis>Privilege Separation</emphasis> (which is the default) having the following line in the configuration file <filename>/etc/ssh/sshd_config</filename>:
de: Das führt dazu, dass der <command>sshd</command>-Daemon innerhalb des Chroot-Gefängnisses gestartet wird. Dazu müssen Sie zunächst dafür sorgen, dass das Verzeichnis <filename>/var/chroot/ssh</filename> den SSH-Server und die Werkzeuge enthält, die Benutzer benötigen, die mit dem Server verbunden sind. Wenn Sie das vorhaben, sollten Sie sicherstellen, dass OpenSSH <emphasis>Rechtetrennung (Privilege Separation)</emphasis> einsetzt (was standardmäßig so ist). Dazu muss in der Konfigurationsdatei <filename>/etc/ssh/sshd_config</filename> folgende Zeile enthalten sein:

en: That way the remote daemon will do as few things as possible as the root user so even if there is a bug in it it will not compromise the chroot. Notice that, unlike the case in which you setup a per-user chroot, the ssh daemon is running in the same chroot as the users so there is at least one potential process running as root which could break out of the chroot.
de: Dadurch wird der entfernte Daemon so wenig Dinge wie möglich als Root ausführen. Wenn er also einen Fehler enthalten sollte, kann damit nicht aus dem Chroot-Gefängnis ausgebrochen werden. Beachten Sie, dass, anders als wenn Sie eine Chroot-Umgebung für jeden Benutzer einzeln einrichten, in diesem Fall der SSH-Daemon im selben Chroot-Gefängnis wie die Benutzer läuft. Es gibt also mindestens einen Prozess in der Chroot-Umgebung, der als Root läuft. Mit ihm ist es möglich, aus dem Chroot-Gefängnis auszubrechen.

en: Notice, also, that in order for SSH to work in that location, the partition where the chroot directory resides cannot be mounted with the <emphasis>nodev</emphasis> option. If you use that option, then you will get the following error: <emphasis>PRNG is not seeded</emphasis>, because <filename>/dev/urandom</filename> does not work in the chroot.
de: Beachten Sie auch, dass SSH nur funktioniert, wenn die Partition, auf der die Chroot-Umgebung eingerichtet wurde, nicht mit der Option <emphasis>nodev</emphasis> gemountet wurde. Wenn Sie diese Option verwenden, bekommen Sie folgende Fehlermeldung: <emphasis>PRNG is not seeded</emphasis>, weil <filename>/dev/urandom</filename> nicht in der Chroot-Umgebung funktioniert.

en: Setup a minimal system (the really easy way)
de: Einrichten eines minimalen Systems (der wirklich leichte Weg)

en: You can use <package>debootstrap</package> to setup a minimal environment that just includes the ssh server. In order to do this you just have to create a chroot as described in the <ulink name="chroot section of the Debian Reference" url="http://www.debian.org/doc/manuals/reference/ch09#_chroot_system" /> document. This method is bound to work (you will get all the necessary componentes for the chroot) but at the cost of disk space (a minimal installation of Debian will amount to several hundred megabytes). This minimal system might also include setuid files that a user in the chroot could use to break out of the chroot if any of those could be use for a privilege escalation.
de: Sie können mit <application>debootstrap</application> eine minimale Umgebung einrichten, die ausschließlich den SSH-Server enthält. Dafür müssen Sie nur eine Chroot-Umgebung einrichten, wie es im <ulink url="http://www.debian.org/doc/manuals/reference/ch09#_chroot_system" name="Chroot-Abschnitt der Debian-Referenz" /> beschrieben wird. Diese Vorgehensweise ist idiotensicher (Sie werden alle für die Chroot-Umgebung notwendigen Bestandteile erhalten), aber dies geht auf Kosten von Plattenspeicher. Eine minimale Installation von Debian benötigt einige hundert Megabyte. Dieses minimale System könnte auch Setuid-Dateien enthalten, mit denen ein Benutzer aus dem Chroot-Gefängnis ausbrechen könnte, wenn sie eine Rechteerweiterung zulassen.

en: Automatically making the environment (the easy way)
de: Automatisches Erstellen der Umgebung (der leichte Weg)

en: You can easily create a restricted environment with the <package>makejail</package> package, since it automatically takes care of tracing the server daemon (with <command>strace</command>), and makes it run under the restricted environment.
de: Mit dem Paket <application>makejail</application> können Sie leicht eine eingeschränkte Umgebung erstellen, da es automatisch den Trace des Server-Daemons verfolgt (mit <command>strace</command>) und dafür sorgt, dass er in der eingeschränkten Umgebung läuft.

en: The advantage of programs that automatically generate <command>chroot</command> environments is that they are capable of copying any package to the <command>chroot</command> environment (even following the package's dependencies and making sure it's complete). Thus, providing user applications is easier.
de: Der Vorteil von Programmen, die automatisch die <command>chroot</command>-Umgebung einrichten, liegt darin, dass sie im Stande sind, Pakete in die <command>chroot</command>-Umgebung zu kopieren (und verfolgen sogar die Abhängigkeiten der Pakete, um sicherzustellen, dass sie vollständig sind). Dadurch wird das Bereitstellen von Anwendungen für Benutzer leichter.

en: To set up the environment using <command>makejail</command>'s provided examples, just create <filename>/var/chroot/sshd</filename> and use the command:
de: Um ein Chroot-Gefängnis aus den von <command>makejail</command> zur Verfügung gestellten Beispielen einzurichten, müssen Sie <filename>/var/chroot/sshd</filename> erstellen und folgenden Befehl ausführen:

en: This will setup the chroot in the <filename>/var/chroot/sshd</filename> directory. Notice that this chroot will not fully work unless you:
de: Dies wird eine Chroot-Umgebung im Verzeichnis <filename>/var/chroot/sshd</filename> erstellen. Beachten Sie, dass diese Chroot-Umgebung nicht voll funktionstüchtig ist, bis Sie:

en: Mount the <emphasis>procfs</emphasis> filesystem in <filename>/var/chroot/sshd/proc</filename>. <command>Makejail</command> will mount it for you but if the system reboots you need to remount it running:
de: Das Dateisystem <emphasis>procfs</emphasis> in <filename>/var/chroot/sshd/proc</filename> eingehängt haben. <command>Makejail</command> wird es für Sie einhängen. Aber nach einem Neustart werden Sie es erneut einhängen müssen:

en: You can also have it be mounted automatically by editing <filename>/etc/fstab</filename> and including this line:
de: Es kann auch automatisch eingebunden werden. Dazu müssen Sie <filename>/etc/fstab</filename> bearbeiten und folgende Zeile eintragen:

en: Have syslog listen to the device <filename>/dev/log</filename> inside the chroot. In order to do this you have modify <filename>/etc/default/syslogd</filename> and add <emphasis>-a /var/chroot/sshd/dev/log</emphasis> to the <varname>SYSLOGD</varname> variable definition.
de: Syslog auf das Geräte <filename>/dev/log</filename> in der Chroot-Umgebung horchen lassen. Dazu müssen Sie <filename>/etc/default/syslogd</filename> ändern und <emphasis>-a /var/chroot/sshd/dev/log</emphasis> zur Definition der Variablen <emphasis>SYSLOGD</emphasis> hinzufügen.

en: Read the sample file to see what other changes need to be made to the environment. Some of these changes, such as copying user's home directories, cannot be done automatically. Also, limit the exposure of sensitive information by only copying the data from a given number of users from the files <filename>/etc/shadow</filename> or <filename>/etc/group</filename>. Notice that if you are using Privilege Separation the <emphasis>sshd</emphasis> user needs to exist in those files.
de: Sehen Sie sich die Beispielsdatei an, um herauszufinden, welche Änderungen an der Umgebung vorgenommen werden müssen. Einige diese Änderungen können nicht automatisch vorgenommen werden, wie z.B. das Kopieren des Home-Verzeichnisses eines Benutzers. Außerdem sollten Sie die Gefährdung von sensiblen Informationen begrenzen, indem Sie nur die Daten bestimmter Benutzer aus den Dateien <filename>/etc/shadow</filename> und <filename>/etc/group</filename> kopieren. Beachten Sie, dass, falls Sie Rechtetrennung verwenden, der Benutzer <emphasis>sshd</emphasis> in diesen Dateien vorhanden sein muss.

en: The following sample environment has been (slightly) tested in Debian 3.0 and is built with the configuration file provided in the package and includes the <package>fileutils</package> package:
de: Die folgende Beispielumgebung wurde (ein wenig) unter Debian 3.0 getestet. Sie basiert auf der Konfigurationsdatei, die mit dem Paket geliefert wird, und beinhaltet das Paket <application>fileutils</application>.

en: 
    .
    |-- bin
    |   |-- ash
    |   |-- bash
    |   |-- chgrp
    |   |-- chmod
    |   |-- chown
    |   |-- cp
    |   |-- csh -&gt; /etc/alternatives/csh
    |   |-- dd
    |   |-- df
    |   |-- dir
    |   |-- fdflush
    |   |-- ksh
    |   |-- ln
    |   |-- ls
    |   |-- mkdir
    |   |-- mknod
    |   |-- mv
    |   |-- rbash -&gt; bash
    |   |-- rm
    |   |-- rmdir
    |   |-- sh -&gt; bash
    |   |-- sync
    |   |-- tcsh
    |   |-- touch
    |   |-- vdir
    |   |-- zsh -&gt; /etc/alternatives/zsh
    |   `-- zsh4
    |-- dev
    |   |-- null
    |   |-- ptmx
    |   |-- pts
    |   |-- ptya0
    (...)
    |   |-- tty
    |   |-- tty0
    (...)
    |   `-- urandom
    |-- etc
    |   |-- alternatives
    |   |   |-- csh -&gt; /bin/tcsh
    |   |   `-- zsh -&gt; /bin/zsh4
    |   |-- environment
    |   |-- hosts
    |   |-- hosts.allow
    |   |-- hosts.deny
    |   |-- ld.so.conf
    |   |-- localtime -&gt; /usr/share/zoneinfo/Europe/Madrid
    |   |-- motd
    |   |-- nsswitch.conf
    |   |-- pam.conf
    |   |-- pam.d
    |   |   |-- other
    |   |   `-- ssh
    |   |-- passwd
    |   |-- resolv.conf
    |   |-- security
    |   |   |-- access.conf
    |   |   |-- chroot.conf
    |   |   |-- group.conf
    |   |   |-- limits.conf
    |   |   |-- pam_env.conf
    |   |   `-- time.conf
    |   |-- shadow
    |   |-- shells
    |   `-- ssh
    |       |-- moduli
    |       |-- ssh_host_dsa_key
    |       |-- ssh_host_dsa_key.pub
    |       |-- ssh_host_rsa_key
    |       |-- ssh_host_rsa_key.pub
    |       `-- sshd_config
    |-- home
    |   `-- userX
    |-- lib
    |   |-- ld-2.2.5.so
    |   |-- ld-linux.so.2 -&gt; ld-2.2.5.so
    |   |-- libc-2.2.5.so
    |   |-- libc.so.6 -&gt; libc-2.2.5.so
    |   |-- libcap.so.1 -&gt; libcap.so.1.10
    |   |-- libcap.so.1.10
    |   |-- libcrypt-2.2.5.so
    |   |-- libcrypt.so.1 -&gt; libcrypt-2.2.5.so
    |   |-- libdl-2.2.5.so
    |   |-- libdl.so.2 -&gt; libdl-2.2.5.so
    |   |-- libm-2.2.5.so
    |   |-- libm.so.6 -&gt; libm-2.2.5.so
    |   |-- libncurses.so.5 -&gt; libncurses.so.5.2
    |   |-- libncurses.so.5.2
    |   |-- libnsl-2.2.5.so
    |   |-- libnsl.so.1 -&gt; libnsl-2.2.5.so
    |   |-- libnss_compat-2.2.5.so
    |   |-- libnss_compat.so.2 -&gt; libnss_compat-2.2.5.so
    |   |-- libnss_db-2.2.so
    |   |-- libnss_db.so.2 -&gt; libnss_db-2.2.so
    |   |-- libnss_dns-2.2.5.so
    |   |-- libnss_dns.so.2 -&gt; libnss_dns-2.2.5.so
    |   |-- libnss_files-2.2.5.so
    |   |-- libnss_files.so.2 -&gt; libnss_files-2.2.5.so
    |   |-- libnss_hesiod-2.2.5.so
    |   |-- libnss_hesiod.so.2 -&gt; libnss_hesiod-2.2.5.so
    |   |-- libnss_nis-2.2.5.so
    |   |-- libnss_nis.so.2 -&gt; libnss_nis-2.2.5.so
    |   |-- libnss_nisplus-2.2.5.so
    |   |-- libnss_nisplus.so.2 -&gt; libnss_nisplus-2.2.5.so
    |   |-- libpam.so.0 -&gt; libpam.so.0.72
    |   |-- libpam.so.0.72
    |   |-- libpthread-0.9.so
    |   |-- libpthread.so.0 -&gt; libpthread-0.9.so
    |   |-- libresolv-2.2.5.so
    |   |-- libresolv.so.2 -&gt; libresolv-2.2.5.so
    |   |-- librt-2.2.5.so
    |   |-- librt.so.1 -&gt; librt-2.2.5.so
    |   |-- libutil-2.2.5.so
    |   |-- libutil.so.1 -&gt; libutil-2.2.5.so
    |   |-- libwrap.so.0 -&gt; libwrap.so.0.7.6
    |   |-- libwrap.so.0.7.6
    |   `-- security
    |       |-- pam_access.so
    |       |-- pam_chroot.so
    |       |-- pam_deny.so
    |       |-- pam_env.so
    |       |-- pam_filter.so
    |       |-- pam_ftp.so
    |       |-- pam_group.so
    |       |-- pam_issue.so
    |       |-- pam_lastlog.so
    |       |-- pam_limits.so
    |       |-- pam_listfile.so
    |       |-- pam_mail.so
    |       |-- pam_mkhomedir.so
    |       |-- pam_motd.so
    |       |-- pam_nologin.so
    |       |-- pam_permit.so
    |       |-- pam_rhosts_auth.so
    |       |-- pam_rootok.so
    |       |-- pam_securetty.so
    |       |-- pam_shells.so
    |       |-- pam_stress.so
    |       |-- pam_tally.so
    |       |-- pam_time.so
    |       |-- pam_unix.so
    |       |-- pam_unix_acct.so -&gt; pam_unix.so
    |       |-- pam_unix_auth.so -&gt; pam_unix.so
    |       |-- pam_unix_passwd.so -&gt; pam_unix.so
    |       |-- pam_unix_session.so -&gt; pam_unix.so
    |       |-- pam_userdb.so
    |       |-- pam_warn.so
    |       `-- pam_wheel.so
    |-- sbin
    |   `-- start-stop-daemon
    |-- usr
    |   |-- bin
    |   |   |-- dircolors
    |   |   |-- du
    |   |   |-- install
    |   |   |-- link
    |   |   |-- mkfifo
    |   |   |-- shred
    |   |   |-- touch -&gt; /bin/touch
    |   |   `-- unlink
    |   |-- lib
    |   |   |-- libcrypto.so.0.9.6
    |   |   |-- libdb3.so.3 -&gt; libdb3.so.3.0.2
    |   |   |-- libdb3.so.3.0.2
    |   |   |-- libz.so.1 -&gt; libz.so.1.1.4
    |   |   `-- libz.so.1.1.4
    |   |-- sbin
    |   |   `-- sshd
    |   `-- share
    |       |-- locale
    |       |   `-- es
    |       |       |-- LC_MESSAGES
    |       |       |   |-- fileutils.mo
    |       |       |   |-- libc.mo
    |       |       |   `-- sh-utils.mo
    |       |       `-- LC_TIME -&gt; LC_MESSAGES
    |       `-- zoneinfo
    |           `-- Europe
    |               `-- Madrid
    `-- var
        `-- run
            |-- sshd
            `-- sshd.pid
    
    27 directories, 733 files
de: 
    .
    |-- bin
    |   |-- ash
    |   |-- bash
    |   |-- chgrp
    |   |-- chmod
    |   |-- chown
    |   |-- cp
    |   |-- csh -> /etc/alternatives/csh
    |   |-- dd
    |   |-- df
    |   |-- dir
    |   |-- fdflush
    |   |-- ksh
    |   |-- ln
    |   |-- ls
    |   |-- mkdir
    |   |-- mknod
    |   |-- mv
    |   |-- rbash -> bash
    |   |-- rm
    |   |-- rmdir
    |   |-- sh -> bash
    |   |-- sync
    |   |-- tcsh
    |   |-- touch
    |   |-- vdir
    |   |-- zsh -> /etc/alternatives/zsh
    |   `-- zsh4
    |-- dev
    |   |-- null
    |   |-- ptmx
    |   |-- pts
    |   |-- ptya0
    (...)
    |   |-- tty
    |   |-- tty0
    (...)
    |   `-- urandom
    |-- etc
    |   |-- alternatives
    |   |   |-- csh -> /bin/tcsh
    |   |   `-- zsh -> /bin/zsh4
    |   |-- environment
    |   |-- hosts
    |   |-- hosts.allow
    |   |-- hosts.deny
    |   |-- ld.so.conf
    |   |-- localtime -> /usr/share/zoneinfo/Europe/Madrid
    |   |-- motd
    |   |-- nsswitch.conf
    |   |-- pam.conf
    |   |-- pam.d
    |   |   |-- other
    |   |   `-- ssh
    |   |-- passwd
    |   |-- resolv.conf
    |   |-- security
    |   |   |-- access.conf
    |   |   |-- chroot.conf
    |   |   |-- group.conf
    |   |   |-- limits.conf
    |   |   |-- pam_env.conf
    |   |   `-- time.conf
    |   |-- shadow
    |   |-- shells
    |   `-- ssh
    |       |-- moduli
    |       |-- ssh_host_dsa_key
    |       |-- ssh_host_dsa_key.pub
    |       |-- ssh_host_rsa_key
    |       |-- ssh_host_rsa_key.pub
    |       `-- sshd_config
    |-- home
    |   `-- userX
    |-- lib
    |   |-- ld-2.2.5.so
    |   |-- ld-linux.so.2 -> ld-2.2.5.so
    |   |-- libc-2.2.5.so
    |   |-- libc.so.6 -> libc-2.2.5.so
    |   |-- libcap.so.1 -> libcap.so.1.10
    |   |-- libcap.so.1.10
    |   |-- libcrypt-2.2.5.so
    |   |-- libcrypt.so.1 -> libcrypt-2.2.5.so
    |   |-- libdl-2.2.5.so
    |   |-- libdl.so.2 -> libdl-2.2.5.so
    |   |-- libm-2.2.5.so
    |   |-- libm.so.6 -> libm-2.2.5.so
    |   |-- libncurses.so.5 -> libncurses.so.5.2
    |   |-- libncurses.so.5.2
    |   |-- libnsl-2.2.5.so
    |   |-- libnsl.so.1 -> libnsl-2.2.5.so
    |   |-- libnss_compat-2.2.5.so
    |   |-- libnss_compat.so.2 -> libnss_compat-2.2.5.so
    |   |-- libnss_db-2.2.so
    |   |-- libnss_db.so.2 -> libnss_db-2.2.so
    |   |-- libnss_dns-2.2.5.so
    |   |-- libnss_dns.so.2 -> libnss_dns-2.2.5.so
    |   |-- libnss_files-2.2.5.so
    |   |-- libnss_files.so.2 -> libnss_files-2.2.5.so
    |   |-- libnss_hesiod-2.2.5.so
    |   |-- libnss_hesiod.so.2 -> libnss_hesiod-2.2.5.so
    |   |-- libnss_nis-2.2.5.so
    |   |-- libnss_nis.so.2 -> libnss_nis-2.2.5.so
    |   |-- libnss_nisplus-2.2.5.so
    |   |-- libnss_nisplus.so.2 -> libnss_nisplus-2.2.5.so
    |   |-- libpam.so.0 -> libpam.so.0.72
    |   |-- libpam.so.0.72
    |   |-- libpthread-0.9.so
    |   |-- libpthread.so.0 -> libpthread-0.9.so
    |   |-- libresolv-2.2.5.so
    |   |-- libresolv.so.2 -> libresolv-2.2.5.so
    |   |-- librt-2.2.5.so
    |   |-- librt.so.1 -> librt-2.2.5.so
    |   |-- libutil-2.2.5.so
    |   |-- libutil.so.1 -> libutil-2.2.5.so
    |   |-- libwrap.so.0 -> libwrap.so.0.7.6
    |   |-- libwrap.so.0.7.6
    |   `-- security
    |       |-- pam_access.so
    |       |-- pam_chroot.so
    |       |-- pam_deny.so
    |       |-- pam_env.so
    |       |-- pam_filter.so
    |       |-- pam_ftp.so
    |       |-- pam_group.so
    |       |-- pam_issue.so
    |       |-- pam_lastlog.so
    |       |-- pam_limits.so
    |       |-- pam_listfile.so
    |       |-- pam_mail.so
    |       |-- pam_mkhomedir.so
    |       |-- pam_motd.so
    |       |-- pam_nologin.so
    |       |-- pam_permit.so
    |       |-- pam_rhosts_auth.so
    |       |-- pam_rootok.so
    |       |-- pam_securetty.so
    |       |-- pam_shells.so
    |       |-- pam_stress.so
    |       |-- pam_tally.so
    |       |-- pam_time.so
    |       |-- pam_unix.so
    |       |-- pam_unix_acct.so -> pam_unix.so
    |       |-- pam_unix_auth.so -> pam_unix.so
    |       |-- pam_unix_passwd.so -> pam_unix.so
    |       |-- pam_unix_session.so -> pam_unix.so
    |       |-- pam_userdb.so
    |       |-- pam_warn.so
    |       `-- pam_wheel.so
    |-- sbin
    |   `-- start-stop-daemon
    |-- usr
    |   |-- bin
    |   |   |-- dircolors
    |   |   |-- du
    |   |   |-- install
    |   |   |-- link
    |   |   |-- mkfifo
    |   |   |-- shred
    |   |   |-- touch -> /bin/touch
    |   |   `-- unlink
    |   |-- lib
    |   |   |-- libcrypto.so.0.9.6
    |   |   |-- libdb3.so.3 -> libdb3.so.3.0.2
    |   |   |-- libdb3.so.3.0.2
    |   |   |-- libz.so.1 -> libz.so.1.1.4
    |   |   `-- libz.so.1.1.4
    |   |-- sbin
    |   |   `-- sshd
    |   `-- share
    |       |-- locale
    |       |   `-- es
    |       |       |-- LC_MESSAGES
    |       |       |   |-- fileutils.mo
    |       |       |   |-- libc.mo
    |       |       |   `-- sh-utils.mo
    |       |       `-- LC_TIME -> LC_MESSAGES
    |       `-- zoneinfo
    |           `-- Europe
    |               `-- Madrid
    `-- var
        `-- run
            |-- sshd
            `-- sshd.pid
    
    27 directories, 733 files

en: For Debian release 3.1 you have to make sure that the environment includes also the common files for PAM. The following files need to be copied over to the chroot if <command>makejail</command> did not do it for you:
de: Bei Debian 3.1 müssen Sie sicherstellen, dass das Gefängnis auch die Dateien für PAM enthält. Falls es nicht schon <command>makejail</command> für Sie erledigt hat, müssen Sie folgende Dateien in die Chroot-Umgebung kopiert:

en: Manually creating the environment (the hard way)
de: Die Chroot-Umgebung von Hand erstellen (der schwierige Weg)

en: It is possible to create an environment, using a trial-and-error method, by monitoring the <command>sshd</command> server traces and log files in order to determine the necessary files. The following environment, contributed by José Luis Ledesma, is a sample listing of files in a <command>chroot</command> environment for <command>ssh</command> in Debian woody (3.0): <footnote><para> Notice that there are no SETUID files. This makes it more difficult for remote users to escape the <command>chroot</command> environment. However, it also prevents users from changing their passwords, since the <command>passwd</command> program cannot modify the files <filename>/etc/passwd</filename> or <filename>/etc/shadow</filename>. </para></footnote>
de: Es ist möglich, eine Umgebung mit der Trial-and-Error-Methode zu erstellen. Dazu müssen Sie die Traces und die Protokolldateien des <command>sshd</command>-Servers überwachen, um die notwendigen Dateien herauszufinden. Die folgende Umgebung, die von José Luis Ledesma zur Verfügung gestellt wurde, ist eine beispielhafte Auflistung der Dateien in einer <command>chroot</command>-Umgebung für <command>ssh</command> unter Debian 3.0:

en: 
    .:
    total 36
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ./
    drwxr-xr-x 11 root root 4096 Jun 3 13:43 ../
    drwxr-xr-x 2 root root 4096 Jun 4 12:13 bin/
    drwxr-xr-x 2 root root 4096 Jun 4 12:16 dev/
    drwxr-xr-x 4 root root 4096 Jun 4 12:35 etc/
    drwxr-xr-x 3 root root 4096 Jun 4 12:13 lib/
    drwxr-xr-x 2 root root 4096 Jun 4 12:35 sbin/
    drwxr-xr-x 2 root root 4096 Jun 4 12:32 tmp/
    drwxr-xr-x 2 root root 4096 Jun 4 12:16 usr/
    ./bin:
    total 8368
    drwxr-xr-x 2 root root 4096 Jun 4 12:13 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    -rwxr-xr-x 1 root root 109855 Jun 3 13:45 a2p*
    -rwxr-xr-x 1 root root 387764 Jun 3 13:45 bash*
    -rwxr-xr-x 1 root root 36365 Jun 3 13:45 c2ph*
    -rwxr-xr-x 1 root root 20629 Jun 3 13:45 dprofpp*
    -rwxr-xr-x 1 root root 6956 Jun 3 13:46 env*
    -rwxr-xr-x 1 root root 158116 Jun 3 13:45 fax2ps*
    -rwxr-xr-x 1 root root 104008 Jun 3 13:45 faxalter*
    -rwxr-xr-x 1 root root 89340 Jun 3 13:45 faxcover*
    -rwxr-xr-x 1 root root 441584 Jun 3 13:45 faxmail*
    -rwxr-xr-x 1 root root 96036 Jun 3 13:45 faxrm*
    -rwxr-xr-x 1 root root 107000 Jun 3 13:45 faxstat*
    -rwxr-xr-x 1 root root 77832 Jun 4 11:46 grep*
    -rwxr-xr-x 1 root root 19597 Jun 3 13:45 h2ph*
    -rwxr-xr-x 1 root root 46979 Jun 3 13:45 h2xs*
    -rwxr-xr-x 1 root root 10420 Jun 3 13:46 id*
    -rwxr-xr-x 1 root root 4528 Jun 3 13:46 ldd*
    -rwxr-xr-x 1 root root 111386 Jun 4 11:46 less*
    -r-xr-xr-x 1 root root 26168 Jun 3 13:45 login*
    -rwxr-xr-x 1 root root 49164 Jun 3 13:45 ls*
    -rwxr-xr-x 1 root root 11600 Jun 3 13:45 mkdir*
    -rwxr-xr-x 1 root root 24780 Jun 3 13:45 more*
    -rwxr-xr-x 1 root root 154980 Jun 3 13:45 pal2rgb*
    -rwxr-xr-x 1 root root 27920 Jun 3 13:46 passwd*
    -rwxr-xr-x 1 root root 4241 Jun 3 13:45 pl2pm*
    -rwxr-xr-x 1 root root 2350 Jun 3 13:45 pod2html*
    -rwxr-xr-x 1 root root 7875 Jun 3 13:45 pod2latex*
    -rwxr-xr-x 1 root root 17587 Jun 3 13:45 pod2man*
    -rwxr-xr-x 1 root root 6877 Jun 3 13:45 pod2text*
    -rwxr-xr-x 1 root root 3300 Jun 3 13:45 pod2usage*
    -rwxr-xr-x 1 root root 3341 Jun 3 13:45 podchecker*
    -rwxr-xr-x 1 root root 2483 Jun 3 13:45 podselect*
    -r-xr-xr-x 1 root root 82412 Jun 4 11:46 ps*
    -rwxr-xr-x 1 root root 36365 Jun 3 13:45 pstruct*
    -rwxr-xr-x 1 root root 7120 Jun 3 13:45 pwd*
    -rwxr-xr-x 1 root root 179884 Jun 3 13:45 rgb2ycbcr*
    -rwxr-xr-x 1 root root 20532 Jun 3 13:45 rm*
    -rwxr-xr-x 1 root root 6720 Jun 4 10:15 rmdir*
    -rwxr-xr-x 1 root root 14705 Jun 3 13:45 s2p*
    -rwxr-xr-x 1 root root 28764 Jun 3 13:46 scp*
    -rwxr-xr-x 1 root root 385000 Jun 3 13:45 sendfax*
    -rwxr-xr-x 1 root root 67548 Jun 3 13:45 sendpage*
    -rwxr-xr-x 1 root root 88632 Jun 3 13:46 sftp*
    -rwxr-xr-x 1 root root 387764 Jun 3 13:45 sh*
    -rws--x--x 1 root root 744500 Jun 3 13:46 slogin*
    -rwxr-xr-x 1 root root 14523 Jun 3 13:46 splain*
    -rws--x--x 1 root root 744500 Jun 3 13:46 ssh*
    -rwxr-xr-x 1 root root 570960 Jun 3 13:46 ssh-add*
    -rwxr-xr-x 1 root root 502952 Jun 3 13:46 ssh-agent*
    -rwxr-xr-x 1 root root 575740 Jun 3 13:46 ssh-keygen*
    -rwxr-xr-x 1 root root 383480 Jun 3 13:46 ssh-keyscan*
    -rwxr-xr-x 1 root root 39 Jun 3 13:46 ssh_europa*
    -rwxr-xr-x 1 root root 107252 Jun 4 10:14 strace*
    -rwxr-xr-x 1 root root 8323 Jun 4 10:14 strace-graph*
    -rwxr-xr-x 1 root root 158088 Jun 3 13:46 thumbnail*
    -rwxr-xr-x 1 root root 6312 Jun 3 13:46 tty*
    -rwxr-xr-x 1 root root 55904 Jun 4 11:46 useradd*
    -rwxr-xr-x 1 root root 585656 Jun 4 11:47 vi*
    -rwxr-xr-x 1 root root 6444 Jun 4 11:45 whoami*
    ./dev:
    total 8
    drwxr-xr-x 2 root root 4096 Jun 4 12:16 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    crw-r--r-- 1 root root 1, 9 Jun 3 13:43 urandom
    ./etc:
    total 208
    drwxr-xr-x 4 root root 4096 Jun 4 12:35 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    -rw------- 1 root root 0 Jun 4 11:46 .pwd.lock
    -rw-r--r-- 1 root root 653 Jun 3 13:46 group
    -rw-r--r-- 1 root root 242 Jun 4 11:33 host.conf
    -rw-r--r-- 1 root root 857 Jun 4 12:04 hosts
    -rw-r--r-- 1 root root 1050 Jun 4 11:29 ld.so.cache
    -rw-r--r-- 1 root root 304 Jun 4 11:28 ld.so.conf
    -rw-r--r-- 1 root root 235 Jun 4 11:27 ld.so.conf~
    -rw-r--r-- 1 root root 88039 Jun 3 13:46 moduli
    -rw-r--r-- 1 root root 1342 Jun 4 11:34 nsswitch.conf
    drwxr-xr-x 2 root root 4096 Jun 4 12:02 pam.d/
    -rw-r--r-- 1 root root 28 Jun 4 12:00 pam_smb.conf
    -rw-r--r-- 1 root root 2520 Jun 4 11:57 passwd
    -rw-r--r-- 1 root root 7228 Jun 3 13:48 profile
    -rw-r--r-- 1 root root 1339 Jun 4 11:33 protocols
    -rw-r--r-- 1 root root 274 Jun 4 11:44 resolv.conf
    drwxr-xr-x 2 root root 4096 Jun 3 13:43 security/
    -rw-r----- 1 root root 1178 Jun 4 11:51 shadow
    -rw------- 1 root root 80 Jun 4 11:45 shadow-
    -rw-r----- 1 root root 1178 Jun 4 11:48 shadow.old
    -rw-r--r-- 1 root root 161 Jun 3 13:46 shells
    -rw-r--r-- 1 root root 1144 Jun 3 13:46 ssh_config
    -rw------- 1 root root 668 Jun 3 13:46 ssh_host_dsa_key
    -rw-r--r-- 1 root root 602 Jun 3 13:46 ssh_host_dsa_key.pub
    -rw------- 1 root root 527 Jun 3 13:46 ssh_host_key
    -rw-r--r-- 1 root root 331 Jun 3 13:46 ssh_host_key.pub
    -rw------- 1 root root 883 Jun 3 13:46 ssh_host_rsa_key
    -rw-r--r-- 1 root root 222 Jun 3 13:46 ssh_host_rsa_key.pub
    -rw-r--r-- 1 root root 2471 Jun 4 12:15 sshd_config
    ./etc/pam.d:
    total 24
    drwxr-xr-x 2 root root 4096 Jun 4 12:02 ./
    drwxr-xr-x 4 root root 4096 Jun 4 12:35 ../
    lrwxrwxrwx 1 root root 4 Jun 4 12:02 other -&gt; sshd
    -rw-r--r-- 1 root root 318 Jun 3 13:46 passwd
    -rw-r--r-- 1 root root 546 Jun 4 11:36 ssh
    -rw-r--r-- 1 root root 479 Jun 4 12:02 sshd
    -rw-r--r-- 1 root root 370 Jun 3 13:46 su
    ./etc/security:
    total 32
    drwxr-xr-x 2 root root 4096 Jun 3 13:43 ./
    drwxr-xr-x 4 root root 4096 Jun 4 12:35 ../
    -rw-r--r-- 1 root root 1971 Jun 3 13:46 access.conf
    -rw-r--r-- 1 root root 184 Jun 3 13:46 chroot.conf
    -rw-r--r-- 1 root root 2145 Jun 3 13:46 group.conf
    -rw-r--r-- 1 root root 1356 Jun 3 13:46 limits.conf
    -rw-r--r-- 1 root root 2858 Jun 3 13:46 pam_env.conf
    -rw-r--r-- 1 root root 2154 Jun 3 13:46 time.conf
    ./lib:
    total 8316
    drwxr-xr-x 3 root root 4096 Jun 4 12:13 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    -rw-r--r-- 1 root root 1024 Jun 4 11:51 cracklib_dict.hwm
    -rw-r--r-- 1 root root 214324 Jun 4 11:51 cracklib_dict.pwd
    -rw-r--r-- 1 root root 11360 Jun 4 11:51 cracklib_dict.pwi
    -rwxr-xr-x 1 root root 342427 Jun 3 13:46 ld-linux.so.2*
    -rwxr-xr-x 1 root root 4061504 Jun 3 13:46 libc.so.6*
    lrwxrwxrwx 1 root root 15 Jun 4 12:11 libcrack.so -&gt; libcrack.so.2.7*
    lrwxrwxrwx 1 root root 15 Jun 4 12:11 libcrack.so.2 -&gt; libcrack.so.2.7*
    -rwxr-xr-x 1 root root 33291 Jun 4 11:39 libcrack.so.2.7*
    -rwxr-xr-x 1 root root 60988 Jun 3 13:46 libcrypt.so.1*
    -rwxr-xr-x 1 root root 71846 Jun 3 13:46 libdl.so.2*
    -rwxr-xr-x 1 root root 27762 Jun 3 13:46 libhistory.so.4.0*
    lrwxrwxrwx 1 root root 17 Jun 4 12:12 libncurses.so.4 -&gt; libncurses.so.4.2*
    -rwxr-xr-x 1 root root 503903 Jun 3 13:46 libncurses.so.4.2*
    lrwxrwxrwx 1 root root 17 Jun 4 12:12 libncurses.so.5 -&gt; libncurses.so.5.0*
    -rwxr-xr-x 1 root root 549429 Jun 3 13:46 libncurses.so.5.0*
    -rwxr-xr-x 1 root root 369801 Jun 3 13:46 libnsl.so.1*
    -rwxr-xr-x 1 root root 142563 Jun 4 11:49 libnss_compat.so.1*
    -rwxr-xr-x 1 root root 215569 Jun 4 11:49 libnss_compat.so.2*
    -rwxr-xr-x 1 root root 61648 Jun 4 11:34 libnss_dns.so.1*
    -rwxr-xr-x 1 root root 63453 Jun 4 11:34 libnss_dns.so.2*
    -rwxr-xr-x 1 root root 63782 Jun 4 11:34 libnss_dns6.so.2*
    -rwxr-xr-x 1 root root 205715 Jun 3 13:46 libnss_files.so.1*
    -rwxr-xr-x 1 root root 235932 Jun 3 13:49 libnss_files.so.2*
    -rwxr-xr-x 1 root root 204383 Jun 4 11:33 libnss_nis.so.1*
    -rwxr-xr-x 1 root root 254023 Jun 4 11:33 libnss_nis.so.2*
    -rwxr-xr-x 1 root root 256465 Jun 4 11:33 libnss_nisplus.so.2*
    lrwxrwxrwx 1 root root 14 Jun 4 12:12 libpam.so.0 -&gt; libpam.so.0.72*
    -rwxr-xr-x 1 root root 31449 Jun 3 13:46 libpam.so.0.72*
    lrwxrwxrwx 1 root root 19 Jun 4 12:12 libpam_misc.so.0 -&gt;
    libpam_misc.so.0.72*
    -rwxr-xr-x 1 root root 8125 Jun 3 13:46 libpam_misc.so.0.72*
    lrwxrwxrwx 1 root root 15 Jun 4 12:12 libpamc.so.0 -&gt; libpamc.so.0.72*
    -rwxr-xr-x 1 root root 10499 Jun 3 13:46 libpamc.so.0.72*
    -rwxr-xr-x 1 root root 176427 Jun 3 13:46 libreadline.so.4.0*
    -rwxr-xr-x 1 root root 44729 Jun 3 13:46 libutil.so.1*
    -rwxr-xr-x 1 root root 70254 Jun 3 13:46 libz.a*
    lrwxrwxrwx 1 root root 13 Jun 4 12:13 libz.so -&gt; libz.so.1.1.3*
    lrwxrwxrwx 1 root root 13 Jun 4 12:13 libz.so.1 -&gt; libz.so.1.1.3*
    -rwxr-xr-x 1 root root 63312 Jun 3 13:46 libz.so.1.1.3*
    drwxr-xr-x 2 root root 4096 Jun 4 12:00 security/
    ./lib/security:
    total 668
    drwxr-xr-x 2 root root 4096 Jun 4 12:00 ./
    drwxr-xr-x 3 root root 4096 Jun 4 12:13 ../
    -rwxr-xr-x 1 root root 10067 Jun 3 13:46 pam_access.so*
    -rwxr-xr-x 1 root root 8300 Jun 3 13:46 pam_chroot.so*
    -rwxr-xr-x 1 root root 14397 Jun 3 13:46 pam_cracklib.so*
    -rwxr-xr-x 1 root root 5082 Jun 3 13:46 pam_deny.so*
    -rwxr-xr-x 1 root root 13153 Jun 3 13:46 pam_env.so*
    -rwxr-xr-x 1 root root 13371 Jun 3 13:46 pam_filter.so*
    -rwxr-xr-x 1 root root 7957 Jun 3 13:46 pam_ftp.so*
    -rwxr-xr-x 1 root root 12771 Jun 3 13:46 pam_group.so*
    -rwxr-xr-x 1 root root 10174 Jun 3 13:46 pam_issue.so*
    -rwxr-xr-x 1 root root 9774 Jun 3 13:46 pam_lastlog.so*
    -rwxr-xr-x 1 root root 13591 Jun 3 13:46 pam_limits.so*
    -rwxr-xr-x 1 root root 11268 Jun 3 13:46 pam_listfile.so*
    -rwxr-xr-x 1 root root 11182 Jun 3 13:46 pam_mail.so*
    -rwxr-xr-x 1 root root 5923 Jun 3 13:46 pam_nologin.so*
    -rwxr-xr-x 1 root root 5460 Jun 3 13:46 pam_permit.so*
    -rwxr-xr-x 1 root root 18226 Jun 3 13:46 pam_pwcheck.so*
    -rwxr-xr-x 1 root root 12590 Jun 3 13:46 pam_rhosts_auth.so*
    -rwxr-xr-x 1 root root 5551 Jun 3 13:46 pam_rootok.so*
    -rwxr-xr-x 1 root root 7239 Jun 3 13:46 pam_securetty.so*
    -rwxr-xr-x 1 root root 6551 Jun 3 13:46 pam_shells.so*
    -rwxr-xr-x 1 root root 55925 Jun 4 12:00 pam_smb_auth.so*
    -rwxr-xr-x 1 root root 12678 Jun 3 13:46 pam_stress.so*
    -rwxr-xr-x 1 root root 11170 Jun 3 13:46 pam_tally.so*
    -rwxr-xr-x 1 root root 11124 Jun 3 13:46 pam_time.so*
    -rwxr-xr-x 1 root root 45703 Jun 3 13:46 pam_unix.so*
    -rwxr-xr-x 1 root root 45703 Jun 3 13:46 pam_unix2.so*
    -rwxr-xr-x 1 root root 45386 Jun 3 13:46 pam_unix_acct.so*
    -rwxr-xr-x 1 root root 45386 Jun 3 13:46 pam_unix_auth.so*
    -rwxr-xr-x 1 root root 45386 Jun 3 13:46 pam_unix_passwd.so*
    -rwxr-xr-x 1 root root 45386 Jun 3 13:46 pam_unix_session.so*
    -rwxr-xr-x 1 root root 9726 Jun 3 13:46 pam_userdb.so*
    -rwxr-xr-x 1 root root 6424 Jun 3 13:46 pam_warn.so*
    -rwxr-xr-x 1 root root 7460 Jun 3 13:46 pam_wheel.so*
    ./sbin:
    total 3132
    drwxr-xr-x 2 root root 4096 Jun 4 12:35 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    -rwxr-xr-x 1 root root 178256 Jun 3 13:46 choptest*
    -rwxr-xr-x 1 root root 184032 Jun 3 13:46 cqtest*
    -rwxr-xr-x 1 root root 81096 Jun 3 13:46 dialtest*
    -rwxr-xr-x 1 root root 1142128 Jun 4 11:28 ldconfig*
    -rwxr-xr-x 1 root root 2868 Jun 3 13:46 lockname*
    -rwxr-xr-x 1 root root 3340 Jun 3 13:46 ondelay*
    -rwxr-xr-x 1 root root 376796 Jun 3 13:46 pagesend*
    -rwxr-xr-x 1 root root 13950 Jun 3 13:46 probemodem*
    -rwxr-xr-x 1 root root 9234 Jun 3 13:46 recvstats*
    -rwxr-xr-x 1 root root 64480 Jun 3 13:46 sftp-server*
    -rwxr-xr-x 1 root root 744412 Jun 3 13:46 sshd*
    -rwxr-xr-x 1 root root 30750 Jun 4 11:46 su*
    -rwxr-xr-x 1 root root 194632 Jun 3 13:46 tagtest*
    -rwxr-xr-x 1 root root 69892 Jun 3 13:46 tsitest*
    -rwxr-xr-x 1 root root 43792 Jun 3 13:46 typetest*
    ./tmp:
    total 8
    drwxr-xr-x 2 root root 4096 Jun 4 12:32 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    ./usr:
    total 8
    drwxr-xr-x 2 root root 4096 Jun 4 12:16 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    lrwxrwxrwx 1 root root 7 Jun 4 12:14 bin -&gt; ../bin//
    lrwxrwxrwx 1 root root 7 Jun 4 11:33 lib -&gt; ../lib//
    lrwxrwxrwx 1 root root 8 Jun 4 12:13 sbin -&gt; ../sbin//
de: 
    .:
    total 36
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ./
    drwxr-xr-x 11 root root 4096 Jun 3 13:43 ../
    drwxr-xr-x 2 root root 4096 Jun 4 12:13 bin/
    drwxr-xr-x 2 root root 4096 Jun 4 12:16 dev/
    drwxr-xr-x 4 root root 4096 Jun 4 12:35 etc/
    drwxr-xr-x 3 root root 4096 Jun 4 12:13 lib/
    drwxr-xr-x 2 root root 4096 Jun 4 12:35 sbin/
    drwxr-xr-x 2 root root 4096 Jun 4 12:32 tmp/
    drwxr-xr-x 2 root root 4096 Jun 4 12:16 usr/
    ./bin:
    total 8368
    drwxr-xr-x 2 root root 4096 Jun 4 12:13 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    -rwxr-xr-x 1 root root 109855 Jun 3 13:45 a2p*
    -rwxr-xr-x 1 root root 387764 Jun 3 13:45 bash*
    -rwxr-xr-x 1 root root 36365 Jun 3 13:45 c2ph*
    -rwxr-xr-x 1 root root 20629 Jun 3 13:45 dprofpp*
    -rwxr-xr-x 1 root root 6956 Jun 3 13:46 env*
    -rwxr-xr-x 1 root root 158116 Jun 3 13:45 fax2ps*
    -rwxr-xr-x 1 root root 104008 Jun 3 13:45 faxalter*
    -rwxr-xr-x 1 root root 89340 Jun 3 13:45 faxcover*
    -rwxr-xr-x 1 root root 441584 Jun 3 13:45 faxmail*
    -rwxr-xr-x 1 root root 96036 Jun 3 13:45 faxrm*
    -rwxr-xr-x 1 root root 107000 Jun 3 13:45 faxstat*
    -rwxr-xr-x 1 root root 77832 Jun 4 11:46 grep*
    -rwxr-xr-x 1 root root 19597 Jun 3 13:45 h2ph*
    -rwxr-xr-x 1 root root 46979 Jun 3 13:45 h2xs*
    -rwxr-xr-x 1 root root 10420 Jun 3 13:46 id*
    -rwxr-xr-x 1 root root 4528 Jun 3 13:46 ldd*
    -rwxr-xr-x 1 root root 111386 Jun 4 11:46 less*
    -r-xr-xr-x 1 root root 26168 Jun 3 13:45 login*
    -rwxr-xr-x 1 root root 49164 Jun 3 13:45 ls*
    -rwxr-xr-x 1 root root 11600 Jun 3 13:45 mkdir*
    -rwxr-xr-x 1 root root 24780 Jun 3 13:45 more*
    -rwxr-xr-x 1 root root 154980 Jun 3 13:45 pal2rgb*
    -rwxr-xr-x 1 root root 27920 Jun 3 13:46 passwd*
    -rwxr-xr-x 1 root root 4241 Jun 3 13:45 pl2pm*
    -rwxr-xr-x 1 root root 2350 Jun 3 13:45 pod2html*
    -rwxr-xr-x 1 root root 7875 Jun 3 13:45 pod2latex*
    -rwxr-xr-x 1 root root 17587 Jun 3 13:45 pod2man*
    -rwxr-xr-x 1 root root 6877 Jun 3 13:45 pod2text*
    -rwxr-xr-x 1 root root 3300 Jun 3 13:45 pod2usage*
    -rwxr-xr-x 1 root root 3341 Jun 3 13:45 podchecker*
    -rwxr-xr-x 1 root root 2483 Jun 3 13:45 podselect*
    -r-xr-xr-x 1 root root 82412 Jun 4 11:46 ps*
    -rwxr-xr-x 1 root root 36365 Jun 3 13:45 pstruct*
    -rwxr-xr-x 1 root root 7120 Jun 3 13:45 pwd*
    -rwxr-xr-x 1 root root 179884 Jun 3 13:45 rgb2ycbcr*
    -rwxr-xr-x 1 root root 20532 Jun 3 13:45 rm*
    -rwxr-xr-x 1 root root 6720 Jun 4 10:15 rmdir*
    -rwxr-xr-x 1 root root 14705 Jun 3 13:45 s2p*
    -rwxr-xr-x 1 root root 28764 Jun 3 13:46 scp*
    -rwxr-xr-x 1 root root 385000 Jun 3 13:45 sendfax*
    -rwxr-xr-x 1 root root 67548 Jun 3 13:45 sendpage*
    -rwxr-xr-x 1 root root 88632 Jun 3 13:46 sftp*
    -rwxr-xr-x 1 root root 387764 Jun 3 13:45 sh*
    -rws--x--x 1 root root 744500 Jun 3 13:46 slogin*
    -rwxr-xr-x 1 root root 14523 Jun 3 13:46 splain*
    -rws--x--x 1 root root 744500 Jun 3 13:46 ssh*
    -rwxr-xr-x 1 root root 570960 Jun 3 13:46 ssh-add*
    -rwxr-xr-x 1 root root 502952 Jun 3 13:46 ssh-agent*
    -rwxr-xr-x 1 root root 575740 Jun 3 13:46 ssh-keygen*
    -rwxr-xr-x 1 root root 383480 Jun 3 13:46 ssh-keyscan*
    -rwxr-xr-x 1 root root 39 Jun 3 13:46 ssh_europa*
    -rwxr-xr-x 1 root root 107252 Jun 4 10:14 strace*
    -rwxr-xr-x 1 root root 8323 Jun 4 10:14 strace-graph*
    -rwxr-xr-x 1 root root 158088 Jun 3 13:46 thumbnail*
    -rwxr-xr-x 1 root root 6312 Jun 3 13:46 tty*
    -rwxr-xr-x 1 root root 55904 Jun 4 11:46 useradd*
    -rwxr-xr-x 1 root root 585656 Jun 4 11:47 vi*
    -rwxr-xr-x 1 root root 6444 Jun 4 11:45 whoami*
    ./dev:
    total 8
    drwxr-xr-x 2 root root 4096 Jun 4 12:16 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    crw-r--r-- 1 root root 1, 9 Jun 3 13:43 urandom
    ./etc:
    total 208
    drwxr-xr-x 4 root root 4096 Jun 4 12:35 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    -rw------- 1 root root 0 Jun 4 11:46 .pwd.lock
    -rw-r--r-- 1 root root 653 Jun 3 13:46 group
    -rw-r--r-- 1 root root 242 Jun 4 11:33 host.conf
    -rw-r--r-- 1 root root 857 Jun 4 12:04 hosts
    -rw-r--r-- 1 root root 1050 Jun 4 11:29 ld.so.cache
    -rw-r--r-- 1 root root 304 Jun 4 11:28 ld.so.conf
    -rw-r--r-- 1 root root 235 Jun 4 11:27 ld.so.conf~
    -rw-r--r-- 1 root root 88039 Jun 3 13:46 moduli
    -rw-r--r-- 1 root root 1342 Jun 4 11:34 nsswitch.conf
    drwxr-xr-x 2 root root 4096 Jun 4 12:02 pam.d/
    -rw-r--r-- 1 root root 28 Jun 4 12:00 pam_smb.conf
    -rw-r--r-- 1 root root 2520 Jun 4 11:57 passwd
    -rw-r--r-- 1 root root 7228 Jun 3 13:48 profile
    -rw-r--r-- 1 root root 1339 Jun 4 11:33 protocols
    -rw-r--r-- 1 root root 274 Jun 4 11:44 resolv.conf
    drwxr-xr-x 2 root root 4096 Jun 3 13:43 security/
    -rw-r----- 1 root root 1178 Jun 4 11:51 shadow
    -rw------- 1 root root 80 Jun 4 11:45 shadow-
    -rw-r----- 1 root root 1178 Jun 4 11:48 shadow.old
    -rw-r--r-- 1 root root 161 Jun 3 13:46 shells
    -rw-r--r-- 1 root root 1144 Jun 3 13:46 ssh_config
    -rw------- 1 root root 668 Jun 3 13:46 ssh_host_dsa_key
    -rw-r--r-- 1 root root 602 Jun 3 13:46 ssh_host_dsa_key.pub
    -rw------- 1 root root 527 Jun 3 13:46 ssh_host_key
    -rw-r--r-- 1 root root 331 Jun 3 13:46 ssh_host_key.pub
    -rw------- 1 root root 883 Jun 3 13:46 ssh_host_rsa_key
    -rw-r--r-- 1 root root 222 Jun 3 13:46 ssh_host_rsa_key.pub
    -rw-r--r-- 1 root root 2471 Jun 4 12:15 sshd_config
    ./etc/pam.d:
    total 24
    drwxr-xr-x 2 root root 4096 Jun 4 12:02 ./
    drwxr-xr-x 4 root root 4096 Jun 4 12:35 ../
    lrwxrwxrwx 1 root root 4 Jun 4 12:02 other -> sshd
    -rw-r--r-- 1 root root 318 Jun 3 13:46 passwd
    -rw-r--r-- 1 root root 546 Jun 4 11:36 ssh
    -rw-r--r-- 1 root root 479 Jun 4 12:02 sshd
    -rw-r--r-- 1 root root 370 Jun 3 13:46 su
    ./etc/security:
    total 32
    drwxr-xr-x 2 root root 4096 Jun 3 13:43 ./
    drwxr-xr-x 4 root root 4096 Jun 4 12:35 ../
    -rw-r--r-- 1 root root 1971 Jun 3 13:46 access.conf
    -rw-r--r-- 1 root root 184 Jun 3 13:46 chroot.conf
    -rw-r--r-- 1 root root 2145 Jun 3 13:46 group.conf
    -rw-r--r-- 1 root root 1356 Jun 3 13:46 limits.conf
    -rw-r--r-- 1 root root 2858 Jun 3 13:46 pam_env.conf
    -rw-r--r-- 1 root root 2154 Jun 3 13:46 time.conf
    ./lib:
    total 8316
    drwxr-xr-x 3 root root 4096 Jun 4 12:13 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    -rw-r--r-- 1 root root 1024 Jun 4 11:51 cracklib_dict.hwm
    -rw-r--r-- 1 root root 214324 Jun 4 11:51 cracklib_dict.pwd
    -rw-r--r-- 1 root root 11360 Jun 4 11:51 cracklib_dict.pwi
    -rwxr-xr-x 1 root root 342427 Jun 3 13:46 ld-linux.so.2*
    -rwxr-xr-x 1 root root 4061504 Jun 3 13:46 libc.so.6*
    lrwxrwxrwx 1 root root 15 Jun 4 12:11 libcrack.so -> libcrack.so.2.7*
    lrwxrwxrwx 1 root root 15 Jun 4 12:11 libcrack.so.2 -> libcrack.so.2.7*
    -rwxr-xr-x 1 root root 33291 Jun 4 11:39 libcrack.so.2.7*
    -rwxr-xr-x 1 root root 60988 Jun 3 13:46 libcrypt.so.1*
    -rwxr-xr-x 1 root root 71846 Jun 3 13:46 libdl.so.2*
    -rwxr-xr-x 1 root root 27762 Jun 3 13:46 libhistory.so.4.0*
    lrwxrwxrwx 1 root root 17 Jun 4 12:12 libncurses.so.4 -> libncurses.so.4.2*
    -rwxr-xr-x 1 root root 503903 Jun 3 13:46 libncurses.so.4.2*
    lrwxrwxrwx 1 root root 17 Jun 4 12:12 libncurses.so.5 -> libncurses.so.5.0*
    -rwxr-xr-x 1 root root 549429 Jun 3 13:46 libncurses.so.5.0*
    -rwxr-xr-x 1 root root 369801 Jun 3 13:46 libnsl.so.1*
    -rwxr-xr-x 1 root root 142563 Jun 4 11:49 libnss_compat.so.1*
    -rwxr-xr-x 1 root root 215569 Jun 4 11:49 libnss_compat.so.2*
    -rwxr-xr-x 1 root root 61648 Jun 4 11:34 libnss_dns.so.1*
    -rwxr-xr-x 1 root root 63453 Jun 4 11:34 libnss_dns.so.2*
    -rwxr-xr-x 1 root root 63782 Jun 4 11:34 libnss_dns6.so.2*
    -rwxr-xr-x 1 root root 205715 Jun 3 13:46 libnss_files.so.1*
    -rwxr-xr-x 1 root root 235932 Jun 3 13:49 libnss_files.so.2*
    -rwxr-xr-x 1 root root 204383 Jun 4 11:33 libnss_nis.so.1*
    -rwxr-xr-x 1 root root 254023 Jun 4 11:33 libnss_nis.so.2*
    -rwxr-xr-x 1 root root 256465 Jun 4 11:33 libnss_nisplus.so.2*
    lrwxrwxrwx 1 root root 14 Jun 4 12:12 libpam.so.0 -> libpam.so.0.72*
    -rwxr-xr-x 1 root root 31449 Jun 3 13:46 libpam.so.0.72*
    lrwxrwxrwx 1 root root 19 Jun 4 12:12 libpam_misc.so.0 ->
    libpam_misc.so.0.72*
    -rwxr-xr-x 1 root root 8125 Jun 3 13:46 libpam_misc.so.0.72*
    lrwxrwxrwx 1 root root 15 Jun 4 12:12 libpamc.so.0 -> libpamc.so.0.72*
    -rwxr-xr-x 1 root root 10499 Jun 3 13:46 libpamc.so.0.72*
    -rwxr-xr-x 1 root root 176427 Jun 3 13:46 libreadline.so.4.0*
    -rwxr-xr-x 1 root root 44729 Jun 3 13:46 libutil.so.1*
    -rwxr-xr-x 1 root root 70254 Jun 3 13:46 libz.a*
    lrwxrwxrwx 1 root root 13 Jun 4 12:13 libz.so -> libz.so.1.1.3*
    lrwxrwxrwx 1 root root 13 Jun 4 12:13 libz.so.1 -> libz.so.1.1.3*
    -rwxr-xr-x 1 root root 63312 Jun 3 13:46 libz.so.1.1.3*
    drwxr-xr-x 2 root root 4096 Jun 4 12:00 security/
    ./lib/security:
    total 668
    drwxr-xr-x 2 root root 4096 Jun 4 12:00 ./
    drwxr-xr-x 3 root root 4096 Jun 4 12:13 ../
    -rwxr-xr-x 1 root root 10067 Jun 3 13:46 pam_access.so*
    -rwxr-xr-x 1 root root 8300 Jun 3 13:46 pam_chroot.so*
    -rwxr-xr-x 1 root root 14397 Jun 3 13:46 pam_cracklib.so*
    -rwxr-xr-x 1 root root 5082 Jun 3 13:46 pam_deny.so*
    -rwxr-xr-x 1 root root 13153 Jun 3 13:46 pam_env.so*
    -rwxr-xr-x 1 root root 13371 Jun 3 13:46 pam_filter.so*
    -rwxr-xr-x 1 root root 7957 Jun 3 13:46 pam_ftp.so*
    -rwxr-xr-x 1 root root 12771 Jun 3 13:46 pam_group.so*
    -rwxr-xr-x 1 root root 10174 Jun 3 13:46 pam_issue.so*
    -rwxr-xr-x 1 root root 9774 Jun 3 13:46 pam_lastlog.so*
    -rwxr-xr-x 1 root root 13591 Jun 3 13:46 pam_limits.so*
    -rwxr-xr-x 1 root root 11268 Jun 3 13:46 pam_listfile.so*
    -rwxr-xr-x 1 root root 11182 Jun 3 13:46 pam_mail.so*
    -rwxr-xr-x 1 root root 5923 Jun 3 13:46 pam_nologin.so*
    -rwxr-xr-x 1 root root 5460 Jun 3 13:46 pam_permit.so*
    -rwxr-xr-x 1 root root 18226 Jun 3 13:46 pam_pwcheck.so*
    -rwxr-xr-x 1 root root 12590 Jun 3 13:46 pam_rhosts_auth.so*
    -rwxr-xr-x 1 root root 5551 Jun 3 13:46 pam_rootok.so*
    -rwxr-xr-x 1 root root 7239 Jun 3 13:46 pam_securetty.so*
    -rwxr-xr-x 1 root root 6551 Jun 3 13:46 pam_shells.so*
    -rwxr-xr-x 1 root root 55925 Jun 4 12:00 pam_smb_auth.so*
    -rwxr-xr-x 1 root root 12678 Jun 3 13:46 pam_stress.so*
    -rwxr-xr-x 1 root root 11170 Jun 3 13:46 pam_tally.so*
    -rwxr-xr-x 1 root root 11124 Jun 3 13:46 pam_time.so*
    -rwxr-xr-x 1 root root 45703 Jun 3 13:46 pam_unix.so*
    -rwxr-xr-x 1 root root 45703 Jun 3 13:46 pam_unix2.so*
    -rwxr-xr-x 1 root root 45386 Jun 3 13:46 pam_unix_acct.so*
    -rwxr-xr-x 1 root root 45386 Jun 3 13:46 pam_unix_auth.so*
    -rwxr-xr-x 1 root root 45386 Jun 3 13:46 pam_unix_passwd.so*
    -rwxr-xr-x 1 root root 45386 Jun 3 13:46 pam_unix_session.so*
    -rwxr-xr-x 1 root root 9726 Jun 3 13:46 pam_userdb.so*
    -rwxr-xr-x 1 root root 6424 Jun 3 13:46 pam_warn.so*
    -rwxr-xr-x 1 root root 7460 Jun 3 13:46 pam_wheel.so*
    ./sbin:
    total 3132
    drwxr-xr-x 2 root root 4096 Jun 4 12:35 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    -rwxr-xr-x 1 root root 178256 Jun 3 13:46 choptest*
    -rwxr-xr-x 1 root root 184032 Jun 3 13:46 cqtest*
    -rwxr-xr-x 1 root root 81096 Jun 3 13:46 dialtest*
    -rwxr-xr-x 1 root root 1142128 Jun 4 11:28 ldconfig*
    -rwxr-xr-x 1 root root 2868 Jun 3 13:46 lockname*
    -rwxr-xr-x 1 root root 3340 Jun 3 13:46 ondelay*
    -rwxr-xr-x 1 root root 376796 Jun 3 13:46 pagesend*
    -rwxr-xr-x 1 root root 13950 Jun 3 13:46 probemodem*
    -rwxr-xr-x 1 root root 9234 Jun 3 13:46 recvstats*
    -rwxr-xr-x 1 root root 64480 Jun 3 13:46 sftp-server*
    -rwxr-xr-x 1 root root 744412 Jun 3 13:46 sshd*
    -rwxr-xr-x 1 root root 30750 Jun 4 11:46 su*
    -rwxr-xr-x 1 root root 194632 Jun 3 13:46 tagtest*
    -rwxr-xr-x 1 root root 69892 Jun 3 13:46 tsitest*
    -rwxr-xr-x 1 root root 43792 Jun 3 13:46 typetest*
    ./tmp:
    total 8
    drwxr-xr-x 2 root root 4096 Jun 4 12:32 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    ./usr:
    total 8
    drwxr-xr-x 2 root root 4096 Jun 4 12:16 ./
    drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
    lrwxrwxrwx 1 root root 7 Jun 4 12:14 bin -> ../bin//
    lrwxrwxrwx 1 root root 7 Jun 4 11:33 lib -> ../lib//
    lrwxrwxrwx 1 root root 8 Jun 4 12:13 sbin -> ../sbin//

en: Chroot environment for <application>Apache</application>
de: Chroot-Umgebung für <application>Apache</application>

en: Introduction
de: Einleitung

en: The <command>chroot</command> utility is often used to jail a daemon in a restricted tree. You can use it to insulate services from one another, so that security issues in a software package do not jeopardize the whole server. When using the <command>makejail</command> script, setting up and updating the chrooted tree is much easier.
de: Das Programm <command>chroot</command> wird häufig dazu benutzt, einen Daemon in einen beschränkten Verzeichnisbaum einzusperren. Sie können es dazu verwenden, um Dienste von anderen abzuschirmen, so dass Sicherheitsprobleme mit einem Softwarepaket nicht den ganzen Server gefährden können. Durch die Verwendung des Skripts <command>makejail</command> wird es viel leichter, einen Verzeichnisbaum in einer <command>chroot</command>-Umgebung einzurichten und zu aktualisieren.

en: FIXME: Apache can also be chrooted using <ulink url="http://www.modsecurity.org" /> which is available in <package>libapache-mod-security</package> (for Apache 1.x) and <package>libapache2-mod-security</package> (for Apache 2.x).
de: FIXME: Apache can also be chrooted using <ulink url="http://www.modsecurity.org" /> which is available in <application>libapache-mod-security</application> (for Apache 1.x) and <application>libapache2-mod-security</application> (for Apache 2.x).

en: Licensing
de: Lizenz

en: Installing the server
de: Installation des Servers

en: This procedure was tested on Debian GNU/Linux 3.0 (Woody) with <command>makejail</command> 0.0.4-1 (in Debian/testing).
de: Diese Vorgehensweise wurde auf Debian GNU/Linux&nbsp;3.0 (Woody) mit <command>makejail</command> 0.0.4-1 (in Debian/Testing) getestet.

en: Log in as <command>root</command> and create a new jail directory:
de: Melden Sie sich als <command>Root</command> an und erstellen Sie ein neues Verzeichnis für das Gefängnis:

en: Create a new user and a new group. The chrooted Apache server will run as this user/group, which isn't used for anything else on the system. In this example, both user and group are called <command>chrapach</command>.
de: Erstellen Sie einen neuen Benutzer und eine neue Gruppe. Der Apache in der <command>chroot</command>-Umgebung wird als diese Benutzer und Gruppe laufen, die für nichts anderes auf dem System verwendet werden. In dem Beispiel heißen sowohl Benutzer als auch Gruppe <command>chrapach</command>.

en: Install Apache as usual on Debian: <literal>apt-get install apache</literal>
de: Installieren Sie ganz normal Apache auf Debian: <literal>apt-get install apache</literal>.

en: Set up Apache (e.g. define your subdomains, etc.). In the <filename>/etc/apache/httpd.conf</filename> configuration file, set the <emphasis>Group</emphasis> and <emphasis>User</emphasis> options to <literal>chrapach</literal>. Restart Apache and make sure the server is working correctly. Now, stop the Apache daemon.
de: Richten Sie Apache ein (z.B. definieren Sie Ihrer Subdomains usw.). Weisen Sie in der Konfigurationsdatei <filename>/etc/apache/httpd.conf</filename> den Optionen <emphasis>Group</emphasis> und <emphasis>User</emphasis> <literal>chrapach</literal> zu. Starten Sie Apache neu und stellen Sie sicher, dass der Server korrekt funktioniert. Danach halten Sie den Server wieder an.

en: Install <command>makejail</command> (available in Debian/testing for now). You should also install <command>wget</command> and <command>lynx</command> as they will be used by <command>makejail</command> to test the chrooted server: <literal>apt-get install makejail wget lynx</literal>
de: Installieren Sie <command>makejail</command> (ist derzeit in Debian/Testing vorhanden). Sie sollten auch <command>wget</command> und <command>lynx</command> installieren, da sie von <command>makejail</command> benutzt werden, um den Server in der <command>chroot</command>-Umgebung zu testen: <literal>apt-get install makejail wget lynx</literal>.

en: Copy the sample configuration file for Apache to the <filename>/etc/makejail</filename> directory:
de: Kopieren Sie die Beispielkonfigurationsdatei für Apache ins Verzeichnis <filename>/etc/makejail</filename>:

en: Edit <filename>/etc/makejail/apache.py</filename>. You need to change the <emphasis>chroot</emphasis>, <emphasis>users</emphasis> and <emphasis>groups</emphasis> options. To run this version of <command>makejail</command>, you can also add a <command>packages</command> option. See the <ulink name="makejail documentation" url="http://www.floc.net/makejail/current/doc/" />. A sample is shown here:
de: Bearbeiten Sie <filename>/etc/makejail/apache.py</filename>. Sie müssen die Optionen <emphasis>chroot</emphasis>, <emphasis>users</emphasis> und <emphasis>groups</emphasis> verändern. Um diese Version von <command>makejail</command> laufen zu lassen, können Sie auch die Option <command>packages</command> hinzufügen. Vergleichen Sie die <ulink url="http://www.floc.net/makejail/current/doc/" name="Makejail-DoKumentation" />. Die Konfigurationsdatei könnte beispielsweise so aussehen:

en: Create the chroot tree: <literal>makejail /etc/makejail/apache.py</literal>
de: Erstellen Sie den Verzeichnisbaum für chroot: <literal>makejail /etc/makejail/apache.py</literal>.

en: If <filename>/etc/password</filename> and <filename>/etc/group</filename> were fully copied, type:
de: Falls <filename>/etc/password</filename> und <filename>/etc/group</filename> vollständig kopiert wurden, geben Sie Folgendes ein:

en: to replace them with filtered copies.
de: Damit werden <filename>/etc/password</filename> und <filename>/etc/group</filename> mit gefilterten Fassungen ersetzt.

en: Copy the Web site pages and the logs into the jail. These files are not copied automatically (see the <emphasis>preserve</emphasis> option in <command>makejail</command>'s configuration file).
de: Kopieren Sie die Webseiten und die Protokolle ins Gefängnis. Diese Dateien werden nicht automatisch mitkopiert (sehen Sie sich dazu die Option <emphasis>preserve</emphasis> in der Konfigurationsdatei von <command>makejail</command> an).

en: Edit the startup script for the system logging daemon so that it also listen to the <filename>/var/chroot/apache/dev/log</filename> socket. In <filename>/etc/default/syslogd</filename>, replace: <literal>SYSLOGD=""</literal> with <literal>SYSLOGD=" -a /var/chroot/apache/dev/log"</literal> and restart the daemon (<literal>/etc/init.d/sysklogd restart</literal>).
de: Editieren Sie das Startskript für den Protokoll-Daemon des Systems so, dass er auch den Socket <filename>/var/chroot/apache/dev/log</filename> beobachtet. Ersetzen Sie in <filename>/etc/default/syslogd</filename> <literal>SYSLOGD=&quot;&quot;</literal> mit <literal>SYSLOGD=&quot; -a /var/chroot/apache/dev/log&quot;</literal> und starten Sie den Daemon neu (<literal>/etc/init.d/sysklogd restart</literal>).

en: Edit the Apache startup script (<filename>/etc/init.d/apache</filename>). You might need to make some changes to the default startup script for it to run properly with a chrooted tree. Such as:
de: Editieren Sie das Startskript von Apache (<filename>/etc/init.d/apache</filename>). Sie müssen ein paar Änderung am Standardstartskript vornehmen, damit es richtig in einem Verzeichnisbaum in einer <command>chroot</command>-Umgebung läuft. Da wäre:

en: set a new <emphasis>CHRDIR</emphasis> variable at the top of the file;
de: Legen Sie die Variable <emphasis>CHRDIR</emphasis> am Anfang der Datei neu       fest.

en: edit the <emphasis>start</emphasis>, <emphasis>stop</emphasis>, <emphasis>reload</emphasis>, etc. sections;
de: Bearbeiten Sie die Abschnitte <emphasis>start</emphasis>, <emphasis>stop</emphasis>,       <emphasis>reload</emphasis> etc.

en: add a line to mount and unmount the <filename>/proc</filename> filesystem within the jail.
de: Fügen Sie eine Zeile hinzu, um das <filename>/proc</filename>-Dateisystem       innerhalb des Gefängnisses ein- und auszuhängen.

en: Replace in <filename>/etc/logrotate.d/apache</filename> <literal>/var/log/apache/*.log</literal> with <literal>/var/chroot/apache/var/log/apache/*.log</literal>
de: Ersetzen Sie in <filename>/etc/logrotate.d/apache</filename> <literal>/var/log/apache/*.log</literal> durch <literal>/var/chroot/apache/var/log/apache/*.log</literal>.

en: Start Apache (<command>/etc/init.d/apache start</command>) and check what is it reported in the jail log (<filename>/var/chroot/apache/var/log/apache/error.log</filename>). If your setup is more complex, (e.g. if you also use PHP and MySQL), files will probably be missing. if some files are not copied automatically by <command>makejail</command>, you can list them in the <emphasis>forceCopy</emphasis> (to copy files directly) or <emphasis>packages</emphasis> (to copy full packages and their dependencies) option the <filename>/etc/makejail/apache.py</filename> configuration file.
de: Starten Sie Apache (<command>/etc/init.d/apache start</command>) und überprüfen Sie, was im Protokoll des Gefängnisses gemeldet wird (<filename>/var/chroot/apache/var/log/apache/error.log</filename>). Wenn Ihre Konfiguration komplexer sein sollte (z.B. wenn Sie auch PHP und MySQL einsetzen), werden wahrscheinlich Dateien fehlen. Wenn einige Dateien nicht automatisch von <command>makejail</command> kopiert werden, können Sie diese in den Optionen <emphasis>forceCopy</emphasis> (um Dateien direkt zu kopieren) oder <emphasis>packages</emphasis> (um ganze Pakete mit ihren Abhängigkeiten zu kopieren) in der Konfigurationsdatei <filename>/etc/makejail/apache.py</filename> aufführen.

en: Type <literal>ps aux | grep apache</literal> to make sure Apache is running. You should see something like:
de: Geben Sie <literal>ps aux | grep apache</literal> ein, um sicherzustellen, dass Apache läuft. Sie sollten etwas in dieser Art sehen:

en: Make sure the Apache processes are running chrooted by looking in the <filename>/proc</filename> filesystem: <literal>ls -la /proc/<varname>process_number</varname>/root/.</literal> where <varname>process_number</varname> is one of the PID numbers listed above (2nd column; 189 for instance). The entries for a restricted tree should be listed:
de: Stellen Sie sicher, dass die Apache-Prozesse in einer <command>chroot</command>-Umgebung laufen. Betrachten Sie dazu das <filename>/proc</filename>-Dateisystem: <literal>ls -la /proc/<varname>process_number</varname>/root/.</literal>, wobei <varname>process_number</varname> einer der PID-Nummern ist, die oben aufgeführt wurden (z.B. 189 in der zweiten Reihe). Die Einträge des eingeschränkten Verzeichnisbaums sollten Sie sich auflisten lassen:

en: To automate this test, you can type:<literal>ls -la /proc/`cat /var/chroot/apache/var/run/apache.pid`/root/.</literal>
de: Um diesen Test zu automatisieren, geben Sie <literal>ls -la /proc/`cat /var/chroot/apache/var/run/apache.pid`/root/.</literal> ein.

en: The reason I like this is because setting up the jail is not very difficult and the server can be updated in just two lines:
de: Ich mag das, da es so nicht sehr schwierig ist, das Gefängnis einzurichten, und der Server mit nur zwei Zeilen aktualisiert werden kann:

en: See also
de: Weiterführende Informationen

en: If you are looking for more information you can consider these sources of information in which the information presented is based: <ulink name="makejail homepage" url="http://www.floc.net/makejail/" />, this program was written by Alain Tesio
de: Wenn Sie nach weiteren Informationen suchen, sehen Sie sich die Quellen an, auf denen diese Anleitung beruht: Die <ulink url="http://www.floc.net/makejail/" name="Makejail-Homepage" />. Diese Programm wurde von Alain Tesio geschrieben.
