\subsection{SSH-Server}
\label{sub:ssh_server}

Wir haben uns für \emph{OpenSSH} als SSH-Server entschieden. Diesen haben wir mit folgenden Shell-Befehl installiert:

\shellcmd{pacman -S openssh}

Desweiteren wurden in \emph{/etc/ssh/sshd\_config} (siehe \emph{aufgabe2.3/sshd\_config}) folgende Zeilen verändert, um den ''root-Account'' zu deaktivieren und den passwortlosen Zugriff zu aktivieren:

\begin{lstlisting}
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
\end{lstlisting}

\subsubsection{iptables}

Um den Zugriff auf das universitätsinterne Netz zu beschränken wurde ein
Filter-Chain \emph{uni} zur \emph{iptables.rules} unter \emph{/etc/iptables}
(siehe \emph{aufgabe2.3/iptables.rules}) hinzugefügt, der nur IP-Adressen aus
den Bereichen 141.30.0.0/16 und 141.76.0.0/16 akzeptiert und die Zugriffe auf
den SSH-Port 22 beschränkt.

\subsubsection{Absicherung für externen Zugriff}

Um den Zugriff aus einem externen Netz abzusichern, gibt es verschiedene
Möglichkeiten

\begin{enumerate}
  \item den externen SSH-Port auf einen anderen Port als 22 legen, so dass
    dieser nicht zu leicht erraten werden kann
  \item per \emph{Fail2ban} IPs, die z.B. per
Bruteforce zu häufig versuchen sich einzuloggen, aussperren
  \item den externen SSH-Port erst per Port-Knocking freischalten, bei dem
    der Client z.B. mit einem Script erst an mehrere Ports »klopfen« muss, bevor
    er sich verbinden kann
  \item den Login auf bestimmte Benutzer begrenzen
\end{enumerate}

\subsubsection{Automatisierung für neue Nutzer}

Das automatisierte Hinzufügen neuer Nutzer haben wir über ein Script
\texttt{newuser} (siehe \emph{aufgabe2.3/newuser}) gelöst. Dieses Script legt
einen neuen Benutzer an, erstellt dessen  Home-Verzeichnis, generiert ein neues
Public-Private-Key-Paar für SSH und trägt den eigenen Public-Key in die
\emph{authorized\_keys} ein und ermöglich den Zugriff auf das git-Repository.
