Privater Mailserver? Aber sicher!
Mit Postfix & Co zum sicheren privaten Mailserver
Patrick Lesky, Wolfgang Berger Grazer Linuxtage 2018 Die Vortragenden
Patrick Lesky Wolfgang Berger [email protected] [email protected] Agenda
- Motivation und grundsätzliche Überlegungen - Das klassische E-Mail-Konzept - Die moderne Groupware-Lösung - Sicherheit und Spam-Schutz Motivation
CC0 by geralt @ pixabay.com
CC BY 3.0 by Electronic Frontier Foundation (EFF) Grundsätzliche Überlegungen
||
CC0 by Finmiki @ pixabay.com CC BY-NC-ND 2.0 by CommScope @ flickr.com Hosting at Home
- Habe ich eine statische IP Adresse? - Stimmt mein Reverse DNS (PTR) Record mit dem A-Record überein? - Welche Zuverlässigkeit kann ich gewährleisten? - Welche Hardware möchte ich einsetzen? - Daten bleiben in meiner Hoheit!
CC BY 3.0 by Ersay Zesen Hosting in der Cloud
- VPS kostet monatlich Geld - In der Regel eine statische IP vorhanden - Reverse DNS Record kann einfach gesetzt werden - Hohe Zuverlässigkeit - Keine Hardware-Investition nötig - Datensicherheit ist Vertrauenssache Klassisch oder Groupware
|| Das klassische E-Mail-Konzept
CC BY-SA 1.0 by George Shuklin @ wikipedia.com Mail Transfer Agents
- Nimmt die E-Mails entgegen und leitet sie weiter - SMTP Protokoll - Herzstück des Mail-Setups - Software - Sendmail - Exim - Postfix Mail Delivery Agents
- Stellt die E-Mails an die Nutzerkonten zu - POP3 oder IMAP Protokoll - Software - Cyrus IMAP Server - Postdrop - Dovecot ISPConfig
- Multi Tenant Open Source Administrationsoberfläche für - Mail - Web - Datenbank - DNS - OpenVZ Virtualisierung https://ispconfig.org
- Veröffentlicht unter BSD-2-Clause Roundcube Weboberfläche Die moderne Groupware-Lösung
- E-Mails, Kalender, Kontakte, Aufgaben, Notizen - Einfache Zusammenarbeit mit mehreren Benutzern - Synchronisation mit mobilen Geräten - Umfangreiche Webmail-Oberfläche - Software - Zimbra - Kopano (Fork von Zarafa) Kopano
- Community-Variante ist kostenlos (nightly builds) - Open Source Alternative zu Microsoft Exchange - Modularer Aufbau und gute Skalierbarkeit - Moderne Weboberfläche - ActiveSync mit Z-Push - IMAP und POP3 Funktionalität integriert - S/MIME Support https://kopano.com Kopano WebApp Photo by Jason Blackeye on Unsplash Sicherheitsmaßnahmen
- Sichere Infrastruktur - Spamfilter und Virenscanner - Nutzen der Sicherheits-Frameworks - SPF - DKIM - DMARC - Sichere Konfiguration des Mail-Servers Postfix absichern / Postscreen
- “First layer of defense” - Vor dem smtpd (SMTP Daemon) - Abwehr von Spam-Zombies - Prüfung auf SMTP-Protokoll Ebene - B: Pregreet test - B: DNSBL checks (besser Rspamd überlassen), ... - A: Command pipelining test - A: Non-SMTP command test, ...
Referenz: http://www.postfix.org/POSTSCREEN_README.html Postfix absichern / Postscreen Config
# master.cf
# ======# service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (no) (never) (100) # ======#smtp inet n - y - - smtpd smtp inet n - y - 1 postscreen # main.cf smtpd pass - - y - - smtpd #dnsblog unix - - y - 0 dnsblog ... tlsproxy unix - - y - 0 tlsproxy #submission inet n - y - - smtpd # BEFORE 220 GREETING TESTS #
... # Time to wait for an client talking first. postscreen_greet_wait = ${stress?{2}:{4}}s
# Reject if greeting tests fail. postscreen_greet_action = enforce
... Postfix absichern / Access Control
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client_hostname, - smtpd_client_restrictions #reject_unknown_reverse_client_hostname, reject_unauth_pipelining
- smtpd_helo_restrictions smtpd_helo_restrictions = permit_mynetworks, reject_unknown_helo_hostname, - smtpd_sender_restrictions reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname
smtpd_sender_restrictions = - smtpd_relay_restrictions reject_non_fqdn_sender, reject_unknown_sender_domain
- smtpd_recipient_restrictions smtpd_relay_restrictions = permit_mynetworks, reject_unauth_destination
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, reject_non_fqdn_recipient, #reject_unknown_recipient_domain, Referenz: http://www.postfix.org/SMTPD_ACCESS_README.html reject_unlisted_recipient, reject_unverified_recipient Postfix absichern / TLS
# main.cf
...
TLS anbieten, aber # TLS security level # may = Opportunistic TLS nicht “enforcen” smtpd_tls_security_level = may smtp_tls_security_level = may
smtpd_tls_protocols = !SSLv2,!SSLv3 smtp_tls_protocols = !SSLv2,!SSLv3
smtpd_tls_ciphers = High smtp_tls_ciphers = High
smtpd_tls_dh1024_param_file = /etc/postfix/dh.pem smtpd_tls_eecdh_grade = ultra
... Postfix absichern / Connection Limits
# main.cf
...
# Connection Limits smtpd_error_sleep_time = 1s smtpd_soft_error_limit = 10 smtpd_hard_error_limit = ${stress?{1}:{20}} smtpd_client_connection_count_limit = 10 smtpd_client_connection_rate_limit = 60
... Absicherung Webmail
- HTTPS (Pro-Tipp: Let’s Encrypt) - TLS Settings und Ciphers - Reverse Proxy WAF (mod_security) - HTTP Security Headers - Starke Passwörter - Webmail fail2ban Regex schreiben Sicherheits-Frameworks
- SPF - Spoofing verhindern - Validierung, ob der Absender (Host) für die Domain berechtigt ist - DKIM - Kryptographische Signaturen - Validierung mittels Public Key im DNS - DMARC - Policies für den Umgang mit DKIM/SPF-Verstößen und Reporting Sicherheits-Frameworks / DNS Records
- SPF DNSSEC - @ TXT “v=spf1 ip4:1.2.3.4 mx -all” - DKIM
- _xyz._domainkey TXT “v=DKIM1; k=rsa; h=sha256; p=MIIBIjAN...; t=s” - DMARC
- _dmarc TXT “v=DMARC1; p=reject; pct=100; rua=mailto:[email protected]; ruf=mailto:[email protected]; adkim=r; aspf=r; fo=1” Spamfilter
- AMaViS (amavisd-new) und SpamAssassin - “Der Klassiker” - Einfache Integration von Virenscannern - Pyzor und Razor - Rspamd - Moderner Ansatz - Fokus auf Performance - Web Interface Rspamd
- Einfache Integration in Postfix (milter) - Weboberfläche - SPF, DKIM, DMARC, ARC - DNSBL checks - Greylisting - Fuzzy hashes CC-BY-4.0 by Vsevolod Stakhov (vstakhov) - https://rspamd.com - Phishing checks, ...
Alle Features: https://rspamd.com/features.html Rspamd / Postfix Integration
# main.cf
...
# Default action when a Milter (mail filter) # application is unavailable or mis-configured milter_default_action = tempfail milter_protocol = 6
# Use rspamd via milter protocol smtpd_milters = inet:localhost:11332 milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}
... Rspamd Weboberfläche Virenscanner
https://www.sophos.com Sophos AV for Linux: “Free as in free beer” https://www.clamav.net/
Sophos und ClamAV sind in AMaViS und Rspamd integrierbar. Rspamd benötigt für Sophos AV SAVDI als Daemon! Hilfreiche Tools
- https://mxtoolbox.com/ - http://dkimvalidator.com/ - https://emailsecuritygrader.com/ - https://www.mail-tester.com/spf-dkim-check Fragen?
All Circle Icons licensed under GNU GPL - © Elegant Themes Feedbackmöglichkeit
https://glt18-programm.linuxtage.at