% !TEX root = LiTerm.tex
% !TeX encoding = UTF-8
% !TeX spellcheck = de_DE
\chapter{Durchführung}
Ich habe das Image der Netzwerkinstallations-\acs{CD} von der Seite des Debianprojektes\cite{web:debian} heruntergeladen und auf eine DVD-RW gebrannt.
Während des Brennvorgangs habe ich 3 Minipcs aufgebaut. Da die Routen vom FiSiNetz in das Projektnetz noch nicht installiert waren, hatte ich sie für die Dauer der Installation mit dem FiSiNetz verbunden.
Als der Brennvorgang fertig war habe ich von der DVD mittels EFI gebootet und die Fragen wie in Tabelle \ref{tab:einstserver} beantwortet.
Ich habe nur die Standardwerkzeuge und den \acs{SSH}-Server installiert, da die Server nur Remote administriert werden müssen.
Nachdem die Installation durchgeführt wurde, habe ich mich als User \texttt{administrator} auf allen Rechnern mittels \acs{SSH} angemeldet, das Programm \texttt{sudo} installiert und den user \texttt{administrator} der Gruppe \texttt{sudo} hinzugefügt.
Hiernach habe ich die \texttt{/etc/network/interfaces} bearbeitet und die vorhandenen Einstellungen durch die entsprechenden Einstellungen aus den Listings \ref{list:interfacesz}, \ref{list:interfacesp} und \ref{list:interfacesh} ersetzt.
Hiernach habe ich den \texttt{isc-dhcp-server} und \texttt{bind9} installiert und konfiguriert.
die \texttt{/etc/resolv.conf} habe ich auf allen Servern durch den folgenden Inhalt ersetzt.
\begin{minted}{text}
domain literm.local
search literm.local
nameserver 10.0.0.1
\end{minted}
Danach habe ich auf \master{} das folgende Kommando ausgeführt.
\mint{text}{sudo apt install slapd postgresql-server}
Das Packet \texttt{slapd} stellt den OpenLDAP-Server bereit. Dieser wird der Nutzerverwaltung und anderen Programmen später als Nutzerdatenbank dienen.
Die Frage nach dem Administratorpasswort für \texttt{slapd} habe ich mit dem Passwort aus Tabelle \ref{tab:passwort} beantwortet.
Um für die Nutzerverwaltung, dem Projektmanagement und die Mailumgebung einfach zugreifen zu können, ohne eine Hauptseite zu erstellen, die Nutzer unötig verwirrt, habe ich den \acs{DNS}-Server so konfiguriert das die Domains \texttt{mail.literm.local}, \texttt{management.literm.local}, \texttt{projekt.literm.local} auf die \acs{IP}-Adresse von \management{} zeigen\footnote{Siehe Listing \ref{list:bindzone} und \ref{list:namedconf}}.
Hiernach habe ich Postfix auf allen Servern Installiert und konfiguriert.
Die folgende Tabelle zeigt die Optionen die ich eingestellt habe.
\begin{table}
    \centering
    \begin{tabular}{|l|l|}
        \hline
        \textbf{Einstellung}&\textbf{Wert}\\\hline
        System-Email-Name&literm.local\\\hline
        Empfänger von E-Mails an Root&administrator\\\hline
        Weitere Rechner für die Mails akzeptiert werden&zeus.literm.local,\\
        &poseidon.literm.local,\\
        &hades.literm.local,\\
        &localhost\\
        &literm.local\\\hline
        Synchrone Aktualisierung& Nein\\
        Lokale Netze&127.0.0.0/8,\\
        &[::ffff:127.0.0.0]/104,\\
        &[::1]/128,\\
        &10.0.0.0/30\\\hline
        Maximale Postfachgröße&1073741824\footnote{Dies entspricht 1 GiB oder 1,073GB}\\\hline
        Zeichen für lokale Adresserweiterung&+\\\hline
        Internetprotokolle&ipv4\\\hline
    \end{tabular}
    \caption{Einstellungen Postfix auf \master{}}
    \label{tab:postfixconf}
\end{table}
\section{Installation Nutzerverwaltung}
Für die Nutzerverwaltung habe ich mich für Fusiondirectory\cite{www:fusiondirectory} entschieden, da ich keine Gleichwertige Konkurrenz fand.
Auf \master{} und \management{} habe ich die Quellen für Fusiondirectory(Listing \ref{list:fussourcelist}) gespeichert und den \acs{GPG}-Schlüssel \texttt{0xD744D55EACDA69FF} dem Schlüsselbund beider Rechner hinzugefügt.
Hiernach habe ich ein Update der Pakete und Quellen durchgeführt und auf \master{} die Befehle aus Listing \ref{list:fusschemainstall} als root ausgeführt.
Auf \management{} habe ich die entsprechenden Pakete(Listing \ref{list:fusapainstall}) installiert.
Hiernach habe ich auf \management{} einen \texttt{VirtualHost} für Fusiondirectory erstellt(Listing \ref{list:virthostfus}).

Nachdem die Installation abschlossen war habe ich einen Webbrowser geöffnet und die Domain für ich im vorigen Teil angelegt habe aufgerufen habe.
Um zu verifizieren das ich Zugriff auf den Server habe, habe ich die angezeigte Session-ID in die angegebene Datei geschrieben.
Hiernach habe ich die Sprache auf Deutsch gestellt und fehlende Einstellungen in der \texttt{php.ini} ergänzt.
Den Verbindungs-Namen habe ich belassen, die URI habe ich auf \texttt{ldap://zeus.literm.local:389/} gesetzt.
Die Basis habe ich auf \texttt{dc=literm,dc=local} gesetzt und das Administratorpasswort in das Feld eingesetzt.

Im eigentlichen Konfigurationschritt habe ich die Zeitzone auf \texttt{Europa/Berlin}, die minimale Passwortlänge auf 8 und die Warnung wegen unverschlüsselter Verbindungen ausgeschaltet.
Das CN-Pattern habe ich auf \texttt{\%als[0,5]|sn\%\%als[0,3]|fn\%} gesetzt.

Im letzten Konfigurationsschritt habe ich die Objektklassen migriert, den Superuser angelegt\footnote{Benutzername und Passwort siehe Tabelle \ref{tab:passwort}} und die Standard \acs{ACL} Gruppen und Rollen angelegt.
Hiernach habe ich die Konfiguration heruntergeladen, den Inhalt der Konfiguration in die \\\texttt{/etc/fusiondirectory/fusiondirectory.conf}\footnote{Für den Inhalt siehe Listing \ref{list:fusiondirectoryconf}} geschrieben und den Befehl \mint{bash}{fusiondirectory-setup --check-config} ausgeführt und die Nachfrage mit Ja bestätigt.
Hiernach habe ich mich angemeldet und habe die Abteilung \texttt{/kfm}(Kaufmännischer Bereich) und \texttt{/test} angelegt, in \texttt{/kfm} habe ich die Unterabteilung \texttt{it} hinzugefügt.
Für die Benutzer habe ich die Unixgruppe \texttt{users} angelegt und deren \ac{gid} auf den Debian Standardwert 100 gesetzt.
Um die Administration zu vereinfachen habe ich die Gruppen \texttt{administratoren} und \texttt{ausbilder} geschaffen.

Hiernach habe ich unter \texttt{/kfm/it} die Server mit ihren Diensten angelegt.
Als nächstes habe ich die ACL-Rolle für Benutzer angelegt und allen Benutzern zugewiesen.

Als nächstes habe ich eine Benutzervorlage angelegt, dort habe ich die Unix, Quota und Maileinstellungen aktiviert.
Die Einstellungen für die Vorlage selber habe ich anhand der Tabelle \ref{tab:setbenvor} vorgenommen.

Hiernach habe ich die \ac{ACL} für alle Benutzer angelegt.
Die Einstellungen kann man in Abbildung \ref{bild:benutzeracl} sehen.
\section{Installation Monitoring}
Für die Monitoring Lösung habe ich mich für Icinga\cite{www:icinga} entschieden
Ich habe den \acs{GPG}-Schlüssel des Icinga-Projektes in den Keyring importiert, das Repository für APT hinzugefügt und die Quellen aktualisiert.
Hiernach habe ich die Pakete \texttt{icinga2}, \texttt{icinga2-ido-pgsql} und \texttt{icingaweb2} installiert.
Die Nachfrage ob das icinga-pgsql Paket genutzt werden soll habe ich mit Ja beantwortet.
Bei der Nachkonfiguration der Pakete habe ich die Autokonfiguration für die Datenbank nicht benutzt.
Hiernach habe ich den Datenbankbenutzer angelegt und die Daten in die Konfiguration eingetragen und die Features \texttt{command} und \texttt{ido-pgsql} aktiviert.
Für das Webbasierte Setup habe ich mit dem Kommando \mint{bash}/icingacli setup token create/ einen Token generiert.
Diesen habe ich im Webbrowser im Setup\footnote{zu finden unter \url{http://icinga.literm.local/setup}} eingegeben.
Bei der Modulauswahl habe ich nur das Monitoringmodul ausgewählt.
Hiernach wurde angezeigt, dass das PHP-Modul PDO-PostgreSQL fehlte, dies behob ich indem ich das Paket php-pgsql installierte, und dass die \texttt{php.ini}-Einstellung \texttt{date.timezone} fehlte.
Dies habe ich durch das Einstellen der Betreffenden Option behoben.
Die Authentifizierung habe ich auf LDAP und habe die entsprechenden Einstellungen gesetzt.
Für die Gruppen habe ich die Einstellung für die Objektklasse auf groupOfNames gesetzt.
Für die Datenbank habe ich die gleichen Zugangsdaten wie für Icinga selber genutzt.
Um Befehle an Icinga zu senden habe ich den Transporttyp auf \texttt{Lokale Befehlsdatei} und den Pfad auf \texttt{/run/icinga2/cmd/icinga2.cmd} gesetzt.
Hiernach habe ich den Inhalt der \texttt{/etc/icinga2/conf.d/hosts.conf} durch den Inhalt des Listings \ref{list:icihosts} ersetzt und den Dienst \texttt{icinga2} neu gestartet.
\section{Installation Projektmanagementprogramm}
Ich habe mich für das Projektmanagementsystem für Openproject\cite{www:openproject} entschieden, da es eine Einfache Konfiguration bietet und Nutzerfreundlich ist.
Auf \management{} habe ich den \acs{GPG}-Schlüssel \texttt{0xBD33EEB8} in den Schlüsselbund von \acs{APT} importiert, das Repository aus Listing \ref{list:opsourcelist} in die \texttt{/etc/apt/sources.list} eingetragen und die Quellen aktualisiert.
Hiernach habe ich das Paket \texttt{openproject} installiert.
Zur Konfiguration habe ich den Befehl \texttt{openproject configure} ausgeführt.
Bei der Frage ob ich denn eine MySQL Datenbank benutzen möchte habe ich die Option "`skip"' gewählt.
Danach habe ich die Nachfrage ob apache2 konfiguriert werden soll mit "`install"' beantwortet und bei der Vollqualifizierten Domain \texttt{projekt.literm.local} eingegeben.
Die Pfadpräfix habe ich leer gelassen.
Die \acs{SSL} Unterstützung habe ich in der nachfolgenden Frage ausgeschaltet.
In den folgenden Fragen habe ich die Subversion Unterstützung ausgelassen, aber die Git Unterstützung eingeschaltet.
Die Standardoptionen für Git habe ich belassen.
Bei der SMTP-Option habe ich sendmail ausgewählt da ich Postfix bereits entsprechend konfiguriert habe.
Als Administrator E-Mail Adresse habe ich \texttt{admin@literm.local} angegeben.
Dies ist eine Weiteterleitung auf alle Administratoren.
Memcache habe ich nicht installiert.
Hiernach habe ich mich im Browser an der Openproject Instanz mit dem Benutzernamen und Kennwort admin angemeldet und habe das Passwort auf das entsprechende aus Tabelle \ref{tab:passwort} geändert.
Hiernach habe ich die \ac{LDAP} Authentifikation in den Einstellungen Eingeschaltet indem ich die entsprechenden Einstellungen eingetragen habe(Abbildung \ref{bild:benutzeracl}).
\section{Installation Mailumgebung}
Für die Mailumgebung habe ich mich für SOGo\cite{www:sogo} entschieden da es LDAP implementiert und man Kontakte, Kalendereinträge und Aufgaben managen kann.
Bevor ich das Repository hinzufügen konnte, habe ich das Paket \texttt{apt-transport-https} hinzugefügt.
In die Datei \texttt{/etc/apt/sources.list.d/sogo.list} den Eintrag \mint{sources.list}{deb https://packages.inverse.ca/SOGo/nightly/4/debian/ stretch stretch} und den \acs{GPG}-Schlüssel \texttt{0x810273C4} hinzugefügt.
Für SOGo selber habe ich die Pakete \texttt{sogo} und \texttt{sope4.9-gdl1-postgresql} installiert.
Hiernach habe ich den Inhalt der \texttt{/etc/sogo/sogo.conf} durch den Inhalt des Listings \ref{list:sogoconf} ersetzt.
Hiernach habe ich der Konfigurationsdatei \texttt{/etc/dovecot/conf.d/10-mail.conf} im Namespace \texttt{Inbox} die Option \texttt{location} auf \texttt{mbox:\~{}/mail:INBOX=/var/mail/\%u} gesetzt.
Dies habe ich gemacht, da Dovecot so die Inbox für den Benutzer anlegt, ohne wirft der Dienst Fehler wenn man versucht auf die Inbox zuzugreifen.
Des weiteren habe ich in der Datei die Option \texttt{mail\_gid} auf den Wert \texttt{mail} gesetzt.
So haben die angelegten Mailboxen die Gruppe \texttt{mail}, Postfix benötigt das um E-Mails in die Dateien schreiben zu können.