[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: debian bullseye, exim4 und TLS



debian-mailing-lists@thomas.freit.ag <debian-mailing-lists@thomas.freit.ag> (Sa 18 Dez 2021 18:05:21 CET):
> Hi Lars,
> 
> On 18.12.21 12:19, Lars Schimmer wrote:
> > Client ist default debian setup, kein Zertifikat, smarthost server 1 eingetragen.
> > 
> > Server ist public reachable, nur wenig Änderungen zur Standard Config, unter anderem Limits an Receipients, Size,...
> > 
> > Und für TLS wichtig: MAIN_TLS_ENABLE = true
> > 
> > Zertifikat habe ich ein wildcard von AlphaSSL und/oder ein mit dem debian exim cert gen (aus den Dokus) erstelltes probiert.
> > 
> > #Ports to listen on
> >  daemon_smtp_ports = 25 : 465
> >  tls_on_connect_ports = 465
> 
> Damit sollte der Exim-Client mMn. über Port 25 seine Mails am Smarthost abgeben, typischerweise mit opportunistic TLS, also
> verschlüsselt wenn es passt (es sei denn Du erzwingst TLS per "tls_try_verify_hosts" (oder entsprechendem Macro).

tls_try_verify_hosts *erzwingt* kein TLS. Es erzwingt nicht mal eine
Überprüfung des Zertifikats (wie ja auch der Name der Option schon
andeutet.)

Wenn Du vom Server sprichst:

Überhaupt möchtest Du für Port 25 und 587 erst in einer späteren Phase prüfen,
ob TLS verwendet wird. Nachdem Du es natürlich am Anfang angeboten hast.

        tls_advertise_hosts = *

ist mittlerweise Default, Exim zeigt jedem Client seine Bereitschaft zu
STARTTLS.

        tls_on_connect_ports = ….

wäre wichtig für die Submission-Clients, die sich am TLS-before-SMTP
(oder wie Options sagt „tls-on-connect“ versuchen.)

Beim Client möchstest Du TLS erzwingen mit der Transport-Option

        hosts_require_tls = …

*Möglicherweise* möchtest Du noch etwas das Zertifikat der Gegenseite
prüfen, dann wäre das mit dem tls_verify_hosts oder tls_try_verify_hosts
die Option, ja. *ABER*, die überprüft nur, ob das Zertifikat gültig ist
(von einer bekannten CA ausgestellt wurde, nicht abgelaufen, …), aber
*nicht*, ob es etwas mit dem Host auf der Gegenseite zu tun hat!

Dafür müsstest Du festlegen, *wie* die „Policy“ für die Prüfung sein
soll, also muss das Zertifikat zum Hostnamen passen, muss es von einer
*bestimmten* CA ausgestellt worden sein, muss es zu einem TLSA-Datensatz
passen, etcpp.

> Willst Du nur TLS testen geht auch openssl s_client --connect localhost:465 (oder mit korrektem Hostnamen, dass das Zertifikat auch validiert werden kann.

Und für Port 25 oder 587 (oder sonst einen Port, wo kein tls-on-connect
gemacht wird:

        openssl s_client -connect <host>:<port> -starttls smtp

(Ja, auch ein Minus genügt.)

> 465 bzw 587 nutzen typischerweise TLS komplett (das heißt kein Upgrade der zunächst unverschlüsselten Verbindung auf TLS), das vermeidet Probleme mit
> STARTTLS (siehe zB. https://www.feistyduck.com/bulletproof-tls-newsletter/issue_80_vulnerabilities_show_fragility_of_starttls).

Das ist nicht ganz richtig. 465 nutzt typischerweise tls-on-connect und
ist damit nicht anfällig für diese Downgrade-Angriffe. 587 nutzt
STARTTLS.

    Best regards from Dresden/Germany
    Viele Grüße aus Dresden
    Heiko Schlittermann
--
 SCHLITTERMANN.de ---------------------------- internet & unix support -
 Heiko Schlittermann, Dipl.-Ing. (TU) - {fon,fax}: +49.351.802998{1,3} -
 gnupg encrypted messages are welcome --------------- key ID: F69376CE -

Attachment: signature.asc
Description: PGP signature


Reply to: