Privater Mailserver? Aber sicher!

Mit & 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 - - - Postfix Mail Delivery Agents

- Stellt die E-Mails an die Nutzerkonten zu - POP3 oder IMAP Protokoll - Software - Cyrus IMAP Server - Postdrop - 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 - - (Fork von ) 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 - - 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 : “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