%% LyX 1.1 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[german,dvips]{slides}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\geometry{verbose,landscape,letterpaper}
\usepackage{babel}
\IfFileExists{url.sty}{\usepackage{url}}
                      {\newcommand{\url}{\texttt}}

\makeatletter

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
\providecommand{\LyX}{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands.
 \newcounter{slidetype}
 \setcounter{slidetype}{0}
 \newif\ifLyXsNoCenter
 \LyXsNoCenterfalse
 \newcommand{\noslidecentering}{
    \LyXsNoCentertrue%
 }
 \newcommand{\slidecentering}{
    \LyXsNoCenterfalse%
 }
 \newcommand{\lyxendslide}[1]{
    \ifLyXsNoCenter%
         \vfill%
    \fi%
    \ifcase \value{slidetype}%
         \or % no action for 0
         \end{slide} \or%
         \end{overlay} \or%
         \end{note}%
    \fi%
    \setcounter{slidetype}{0}
\visible
 }
 \AtEndDocument{\lyxendslide{.}}
 \newcommand{\lyxnewslide}[1]{
    \lyxendslide{.}
    \setcounter{slidetype}{1}
    \begin{slide}
 }

\makeatother
\begin{document}
\vspace{20pt}

{\centering Systemdienste und Betriebssystemadministration\par}

\vspace{20pt}

{\centering \textbf{\large BSD Jails}\large \par}

\vspace{20pt}

{\centering Stephan Uhlmann <su@su2.info>\\
05.07.2002\par}

\vfill

{\tiny Copyright 2002 Stephan Uhlmann}{\tiny \par}

{\tiny Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version
1.1 or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts and no Back-Cover
Texts. A copy of the license can be obtained from \url{http://www.gnu.org/licenses/fdl.html}.}{\tiny \par}


\lyxnewslide{TOC}

\begin{itemize}
\item Einführung
\item Funktionsweise
\item Einrichten
\item Starten
\item Administration
\item Ausbruch
\item Literatur
\end{itemize}

\lyxnewslide{Einführung (1)}

Einführung

\begin{itemize}
\item Seit FreeBSD 4.0
\item Poul-Henning Kamp, R\&D Associates\\
Robert Watson
\item {}``God, root, what difference?''
\item gefahrlose Weitergabe des root-Accounts für ein Subsystem (FTP, HTTP,
Mail, ...)
\end{itemize}

\lyxnewslide{Einführung (2)}

Einführung

\begin{itemize}
\item Erweiterung des chroot() Systemaufrufs
\item Einschränkung eines Prozesses und seiner childs auf:

\begin{itemize}
\item einen Unterbaum der Verzeichnishierarchie
\item eine IP-Adresse zur Netzwerkkommunikation
\item ungefährliche Systemaufrufe
\end{itemize}
\end{itemize}

\lyxnewslide{Einführung (3)}

Einführung

\begin{itemize}
\item keine komplette virtuelle Maschine
\item weiterhin systemweit: (Host System)

\begin{itemize}
\item Kernel
\item ein init Prozess
\item Mounts
\item Quotas
\item Paketfilter Regeln
\end{itemize}
\end{itemize}

\lyxnewslide{Funktionsweise (1)}

Funktionsweise

\begin{itemize}
\item chroot
\item Beschränkung der IP Kommunikation auf eine Adresse
\item eigenes {}``Userland''

\begin{itemize}
\item Daemons, binaries
\item Usernamen/Passwörter
\item Konfigurationen
\item Logfiles
\item ...
\end{itemize}
\end{itemize}

\lyxnewslide{Funktionsweise (2)}

Funktionsweise

\begin{itemize}
\item Verbot bestimmter Systemaufrufe

\begin{itemize}
\item mount
\item Änderung der Netzwerkeinstellungen (Hostname, IP, Routing, ...)
\item RAW IP Sockets (ping!)
\item Anlegen von Devices
\item Laden/Entfernen von Kernelmodulen
\item System V IPC (Semaphoren, Message queues, Shared Memory)%
\footnote{kann via sysctl erlaubt/verboten werden
}
\end{itemize}
\end{itemize}

\lyxnewslide{Einrichten (1)}

Einrichten

\begin{itemize}
\item empfohlen (laut jail(8)) :\texttt{}~\\
\texttt{cd /usr/src; make world DESTDIR=/jail}
\item benötigt src Distribution, alles muss kompiliert werden
\item eleganter: \texttt{/stand/sysinstall}:

\begin{itemize}
\item Options -> Install Root: /jail
\item Configure -> Distributions

\begin{itemize}
\item bin - komplettes Userland inkl. /etc und /dev
\item crypto - sshd zur Administration
\end{itemize}
\end{itemize}
\end{itemize}

\lyxnewslide{Einrichten (2)}

Einrichten

\begin{itemize}
\item \texttt{cd /jail; ln -s dev/null kernel}
\item \texttt{cp /stand/sysinstall /jail/stand/}
\item \texttt{touch /jail/etc/fstab}
\item \texttt{cp /var/run/dev.db /jail/var/run/}
\item \texttt{mount -t procfs proc /jail/proc}
\item \texttt{ifconfig xl0 add 10.1.1.1}
\item /jail/etc/rc.conf anpassen
\end{itemize}

\lyxnewslide{Starten}

Starten

\begin{itemize}
\item \texttt{jail /jail testjail 10.1.1.1 /bin/csh}

\begin{itemize}
\item neue Shell im Jail
\item Jail wird beendet wenn Shell beendet wird (letzter Prozess)
\end{itemize}
\item \texttt{jail /jail testjail 10.1.1.1 /bin/sh /etc/rc}

\begin{itemize}
\item startet normalen Multiuser-Bootvorgang
\end{itemize}
\end{itemize}

\lyxnewslide{Administration}

Administration

\begin{itemize}
\item einloggen via SSH, danach wie jedes andere System
\item Jail-Prozesse erkennbar am {}``J''-Flag (ausserhalb des Jails)
\item Beenden: \texttt{kill -TERM -1} (im Jail!)
\end{itemize}

\lyxnewslide{Ausbruch}

Ausbruch

\begin{itemize}
\item bis FreeBSD 4.2: Buffer-Overflow im procfs Code des Kernels
\item kann unter anderem genutzt werden um

\begin{itemize}
\item Jail-Flag eines Jail-Prozesses zu löschen
\item Root-Verzeichnis auf / zu setzen um chroot zu umgehen
\item Security-Level des Kernels auf 0 (insecure) zu setzen
\end{itemize}
\end{itemize}

\lyxnewslide{Literatur}

Literatur

\begin{itemize}
\item man jail
\item Artikel iX 3/2002: \url{http://www.heise.de/ix/artikel/2002/03/138/}
\item Paper FreeBSD Project: \url{http://docs.freebsd.org/44doc/papers/jail/jail.html}
\item procfs Bug: \url{http://www.securitybugware.org/BSD/140.html}\end{itemize}

\end{document}

