Xen auf Debian. Teil 2

Nachem wir im ersten Teil den Server aufgesetzt und grundlegend abgesichert haben, folgt jetzt der Mailserver.

Einer der grundlegendsten Dienste auf einem Server ist der Maildienst. Wir haben in der Grundkonfiguration des Servers festgelegt, dass wir über Angriffe auf den Server benachrichtigt werden wollen, aber ohne einen MTA kommt nichts bei uns an. Der Mail-Server besteht aus zwei Teilen, Postfix als MTA und Courier für den Pop3- oder IMAP-Zugriff.

Obwohl Mail so grundlegend ist, geht die Konfiguration nicht ganz so leicht von der Hand. Will man gar auf lokale User verzichten und virtuelle User einrichten und die User von mySQL verwalten lassen, dann sollte man besser auf automatische Tools wie ispconfig wechseln. Bei händischer Konfiguration lauern hier einfach zu viele Fallen.

Wir wollen hier allerdings erst einmal Mail nur für lokale Benutzer einrichten und solange man den Überblick über die Anwender behalten kann (sprich: solange man nicht dutzende von Anwendern hat), ist das der unkomplizierteste Weg.

Wir beginnen mit der Installation des MTA postfix

# apt-get install postfix

In der Abfrage, die darauf folgt, geben wir den Domainnamen ein und wählen Internetserver als den korrekten Modus aus.

Da wir Courier für IMAP verwenden wollen, müssen wir das Mailbox-Format auf maildir festlegen. Dazu öffnen wir /etc/postfix/main.cf und fügen ganz am Ende ein:

home_mailbox = Maildir/

das Abschließende Slash ist unbedingt notwendig.

Nun können wir User und Adressen festlegen.

neue User fügen wir hinzu mit
# useradd -m [username]
# passwd [username]

Das Adressenmapping wird über /etc/postfix/virtual_alias geregelt. So können beliebige Mail-Adressen auf beliebige User gemappt werden. Ich bekomme meine Mail also unter a.topal@abc.de oder atopal@abc.de oder abdulkadir.topal@abc.de
Wobei ich hier auch unterschiedliche Domainnamen eintragen könnte.

Die Syntax der Datei sieht wie folgt aus:

a.topal@abc.de atopal@localhost
atopal@abc.de atopal@localhost
abdulkadir.topal@abc.de atopal@localhost

Also beliebige Adresse links real existierender User rechs.

Es bietet sich hier an, einige Adressen, wie zum Beispiel root oder postmaster, auf einen unprivilegierten User zu mappen.

Nach dem Abspeichern muss die Datei noch in ein Binärformat gebracht werden mit:

# postmap /etc/postfix/virtual_alias

Jetzt müssen wir die Konfiguration noch etwas umstricken. Dazu öffnen wir /etc/postfix/main.cf

Hier entfernen wir unseren Domainnamen aus der Liste “mydestination ” und fügen nach home_Mailbox noch zwei Einträge hinzu:

virtual_alias_domains = abc.de
virtual_alias_maps = hash:/etc/postfix/virtual_alias

Außerdem können wir hier auch festlegen, wie groß die Postfächer und die einzelnen Mails werden dürfen. Ich hab kein Platzproblem und wähle:

mailbox_size_limit = 10240000000
message_size_limit = 204800000

Das ist ein Limit von 10 GB per Postfach und 200 MB pro Mail.

Jetzt abspeichern und den MTA neu starten mit
# /etc/init.d/postfix restart

Um nicht nur lokal, sondern auch per POP3/IMAP auf die Mails zugreifen zu können, installieren wir jetzt noch Courier:

#apt-get install courier-pop courier-imap

Wir verneinen die Frage nach dem Webfrontend und haben einen vollwertigen POP3-/IMAP-Server zur Verfügung.

Leider sind aber POP 3 und auch IMAP recht alte Standards und sehen vor, dass das Passwort im Klartext übertragen wird. Dem kann dadurch abgeholfen werden, dass vorher eine verschlüsselte Sitzung aufgebaut wird. Glücklicherweise ist das mit Debian extrem einfach einzurichten.

Wir intallieren erst courier-imap-ssl
# apt-get install courier-imap-ssl

Jetzt müssen wir die Datei /etc/courier/imapd.cnf anpassen, indem wir die korrekte Server-Adresse unter CN=localhost eintragen.

Dann löschen wir das alte Zertifikat /etc/courier/imapd.pem und erstellen ein neues:
# mkimapdcert

Außerdem wollen wir verhindern, dass sich Clients versehentlich ohne Verschlüsselung anmelden können. Dazu öffnen wir die Datei /etc/courier/imapd-ssl und ändern den Wert für IMAP_TLS_REQUIRED auf 1

Das war’s schon. Die Anleitung gibt es in Ausführlich auch nochmal hier. Man sollte sich allerdings bewusst sein, dass damit nur eine Verschlüsselung hergestellt wird, ohne dass die Authenzität der Gegenseite geklärt wäre. Man in the middle Attacken wären hier also nicht zu verhindern. Dazu müsste man sich ein gültiges Zertifikat von einer autorisierten CA beschaffen. Meines Wissens nach gibt es die aber noch nicht kostenlos.

Wenn es nur darum ging, Mails zu empfangen und vom Server lokal zu verschicken, dann sind wir jetzt fertig. Allerdings werden die meisten wohl lieber einen eigenen Mailclient auf ihrem eigenen Rechner benutzen. Dazu müssen wir uns authentifizieren, wenn wir über SMTP Mails versenden wollen. Hier muss man besonders vorsichtig sein. Bei einem Fehler kann man leicht zum offenen Relay werden und der Server soll ja nur unsere Mails abschicken, nicht aber fremde weiterleiten.

Bevor wir mit der Integration von Cyrus-SASL (simple authentication and security layer) beginnen können, müssen wir sicherstellen, dass einige Pakete installiert sind:

# apt-get install libsasl2 libsasl2-modules sasl2-bin

Nach der Installation müssen wir 2 Parameter einstellen in der Datei /etc/default/saslauthd

Der erste Parameter wird auf yes gesetzt, also START=yes. Außerdem verwenden wir lokale Benutzer und können auch die lokale Authentifizierung benutzen, indem wir MECHANISMS=”shadow” setzen.

Jetzt müssen wir smtpd aus dem chroot lassen. Dazu öffnen wir /etc/postfix/master.cf
Die Zeile:
smtp inet n – – – – smtpd
wird geändert in
smtp inet n – n – – smtpd

In der Spalte chroot wird also ein n gesetzt.

Damit SASL auch mit Postfix zusammenarbeitet, müssen wir die Datei /etc/postfix/sasl/smtpd.conf erstellen und ihr folgenden Inhalt geben:

pwcheckmethod: saslauthd
mech_list: PLAIN LOGIN
log_level: 3

Jetzt müssen wir noch den Benutzer postfix zur Gruppe sasl hinzufügen. Dazu einfach die Datei /etc/group öffnen und postfix hinzufügen (die ID wird sich wahrscheinlich unterscheiden):
sasl:x:45:postfix

Als letzten Schritt müssen wir noch die Postfix-Konfiguration abändern, um SASL zu berücksichtigen. Dazu öffnen wir /etc/postfix/main.cf und fügen am Ende der Datei folgendes hinzu:

smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destina$
smtpd_sasl_security_options = noanonymous

Beim Einrichten der Verbindung muss man nur darauf achten dass SSL aktiviert ist.

Solange man nur lokale User verwendet, ist das Einrichten eines Mailsservers gar nicht so schwierig. Wobei ich zugeben muss, dass ich hier Spam- und Virenabwehr nicht eingebunden habe. Einerseits ist das schon recht aufwendig, andererseits bin ich nicht so der Freund von Filtern auf dem Server. Bei False negatives hab ich lokal noch eine Chance die Mails zu retten, auf dem Server ist das ausgeschlossen.

Falls man den Server aus einem Image lädt, muss man ein paar Dinge anpassen, bevor man den Mailserver nutzen kann. Zunächst sollte man den Domainnamen anpassen mit

# dpkg-reconfigure postfix

Außerdem muss in der Datei /etc/postfix/main.cf unter virtual_alias_domains die Domain eingetragen werden, für die Mails angenommen werden sollen. Dnach die Konfguration neu laden:
# /etc/init.d/postfix reload

Schließlich sollte man auch die Mappings der Mailadressen korrigieren unter /etc/postfix/virtual_alias und danach aktualisieren mit
# postmap /etc/postfix/virtual_alias

Für TLS muss zudem ein neues Zertifikat für die neue Serveradresser erzeugt werden. Dazu wechseln wir ins Verzeichenis /etc/ssl und löschen die vorhandenen Dateien in /certs und /private und legen mit folgendem Befehl die neuen Dateien an:

# openssl req -new -x509 -extensions v3_ca -keyout private/ssl-cert-snakeoil.key  -out certs/ssl-cert-snakeoil.pem -days 3650

Die Datei private/ssl-cert-snakeoil.key  muss dann noch der Gruppe ssl-cert zugeordner werden mit:

# chown :ssl-cert ssl-cert-snakeoil.key

Das war der zweite Teil. Im dritten Teil folgt das Aufsetzen eines Webservers. Verglichen mit dem Mailserver ist das aber ein Kinderspiel.

7 thoughts on “Xen auf Debian. Teil 2”

  1. Denk bitte auch an POP3-SSL, IMAP-SSL und ebenfalls die SSL-Konfiguration für Postfix. Ich glaub nicht, dass du deine Zugangsdaten gern unverschlüsselt übertragen möchtest. Für die ersten beiden gibt es fertige Pakete und ein Script, das die Zertifikate erstellen kann. Letzteres musst du m.W. selbst machen.

  2. Ja, da hast du recht. Hier geht es aber eher um Verwaltungsmails von Snort und Syslog-Events. Da sehe ich das nicht so tragisch. Wer eien Mailserver für seine privaten Mails einrichtet, sollte natürlich darauf achten, auch IMAP verschlüsselt zu verwenden. Wobei man sich natürlich fragt, wer auf die unendlich dämliche Idee kommt, ein Protokoll zu entwickeln, bei dem das Passwort im Klartext übertragen wird (egal, von wann der RFC ist).

Leave a Reply

Your email address will not be published. Required fields are marked *