Mailserver beveiligingen, hoe precies?

Volgens internet.nl is mijn emailserver onvoldoende beveiligd:
TLS_email

Voor Ciphers:
TLS_email_sub1

Voor Sleuteluitwisselingsparameters
TLS_email_sub2

En ook nog:
renog_email

Ik heb een email server op een raspberry pi met oa. postfix en dovecot.
Twee vragen:

  • In welke file(s) stel ik de juiste parameters in?
  • Wat moeten die parameters dan zijn?

Dus voor:

  • Juiste ciphers
  • Cipher volgorde
  • Sleuteluitwisselingsparameters (veiligheidsniveau DH-2048 onvoldoende)
  • Uit zetten client-initiated renegotiation

Via google kom ik er niet uit.

Ik heb allemaal groene vinkjes en ik heb dit in /etc/postfix/main.cf staan, ik geloof dat ik dit ergens van SIDN heb geplukt:

tls_preempt_cipherlist = yes

# TLS hardening
tls_ssl_options = NO_COMPRESSION, 0x40000000

# SMTP from other servers to yours
smtpd_tls_protocols =           !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
  # disable SSLv2, SSLv3, TLSv1, TLSv1.1, leaving only TLSv1.2 and TLSv1.3 enabled
smtpd_tls_ciphers = high
smtpd_tls_mandatory_ciphers = high
smtpd_tls_exclude_ciphers =
    EXP, LOW, MEDIUM,
    aNULL, eNULL, SRP, PSK, kDH, DH, kRSA, DHE, DSS, RC4, DES, IDEA, SEED, ARIA, CAMELLIA, AESCCM8, 3DES,
    ECDHE-ECDSA-AES256-SHA384, ECDHE-ECDSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES128-SHA256,
    MD5, SHA
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_session_cache

# SMTP from your server to others
smtp_tls_note_starttls_offer = yes
smtp_tls_protocols =           !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
  # disable SSLv2, SSLv3, TLSv1, TLSv1.1, leaving only TLSv1.2 and TLSv1.3 enabled
smtp_tls_ciphers = high
smtp_tls_mandatory_ciphers = high
smtp_tls_exclude_ciphers =
    EXP, LOW, MEDIUM,
    aNULL, eNULL, SRP, PSK, kDH, DH, kRSA, DHE, DSS, RC4, DES, IDEA, SEED, ARIA, CAMELLIA, AESCCM8, 3DES,
    ECDHE-ECDSA-AES256-SHA384, ECDHE-ECDSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES128-SHA256,
    MD5, SHA
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_tls_session_cache

# LMTP from your server to others
lmtp_tls_note_starttls_offer = yes
lmtp_tls_protocols =           !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
lmtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
  # disable SSLv2, SSLv3, TLSv1, TLSv1.1, leaving only TLSv1.2 and TLSv1.3 enabled
lmtp_tls_ciphers = high
lmtp_tls_mandatory_ciphers = high
lmtp_tls_exclude_ciphers =
    EXP, LOW, MEDIUM,
    aNULL, eNULL, SRP, PSK, kDH, DH, kRSA, DHE, DSS, RC4, DES, IDEA, SEED, ARIA, CAMELLIA, AESCCM8, 3DES,
    ECDHE-ECDSA-AES256-SHA384, ECDHE-ECDSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES128-SHA256,
    MD5, SHA
  # NCSC: good
lmtp_tls_loglevel = 1
lmtp_tls_session_cache_database = btree:/var/lib/postfix/lmtp_tls_session_cache

Hier is Ciphers ook niet goed:
Tenminste één van je mailservers ondersteunt een of meer ciphers die de status uit te faseren hebben, omdat bekend is dat deze fragiel zijn en het risico lopen in de toekomst onvoldoende veilig te worden.

Hier staat bij Ciphers een onveilige cipier van Soverin

En bij TLS-versie:
TLS 1.1 en TLS 1.0 staan beide op uit te faseren

Ik heb allemaal groene vinkjes:

# ----------------------------------------------
# TLS
# ----------------------------------------------

smtp_tls_CAfile =       /usr/local/share/certs/ca-root-nss.crt
smtp_tls_cert_file =    /postfix/certs/nlned.nl.crt
smtp_tls_key_file =     /postfix/certs/nlned.nl.key
smtp_tls_session_cache_database = btree:/var/db/postfix/smtp_cache
smtp_tls_security_level = may
smtp_tls_loglevel =     1
smtp_tls_mandatory_protocols = >=TLSv1.2
smtp_tls_mandatory_ciphers = high
smtp_tls_ciphers =high
smtp_tls_protocols = >=TLSv1.2
smtp_tls_exclude_ciphers =
      EXP, LOW, MEDIUM,
      aNULL, eNULL, SRP, PSK, kDH, DH, kRSA, DHE, DSS, RC4, DES, IDEA, SEED, ARIA, CAMELLIA, AESCCM8, 3DES,
      ECDHE-ECDSA-AES256-SHA384, ECDHE-ECDSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES128-SHA256,
      MD5, SHA
                                                                      
smtpd_tls_CAfile =      /usr/local/share/certs/ca-root-nss.crt
smtpd_tls_cert_file =   /postfix/certs/nlned.nl.crt
smtpd_tls_key_file =    /postfix/certs/nlned.nl.key
smtpd_tls_session_cache_database = btree:/var/db/postfix/smtpd_cache
smtpd_tls_security_level = may
smtpd_tls_loglevel =    1
smtpd_tls_mandatory_protocols = >=TLSv1.2
smtpd_tls_mandatory_ciphers = high
smtpd_tls_ciphers = high
smtpd_tls_protocols = >=TLSv1.2
smtpd_tls_exclude_ciphers =
      EXP, LOW, MEDIUM,
      aNULL, eNULL, SRP, PSK, kDH, DH, kRSA, DHE, DSS, RC4, DES, IDEA, SEED, ARIA, CAMELLIA, AESCCM8, 3DES,
      ECDHE-ECDSA-AES256-SHA384, ECDHE-ECDSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES128-SHA256,
      MD5, SHA

Ja, dat is leuk, maar wat moeten mensen doen die dan geen groen vinkje hebben? :slight_smile:

Volgens internet.nl volgende versie:

  • Goed: TLS 1.3
  • Voldoende: TLS 1.2
  • Uit te faseren: TLS 1.1 en 1.0
  • Onvoldoende: SSL 3.0, 2.0 en 1.0

Hier staat dus TLS 1.0 en 1.1 dat lijkt mij dan niet goed?!?

Volgens de IETF is TLS 1.0 en TLS 1.1 al sinds maart 2021 depreciated…

IETF doc

Dit is mij allemaal te ingewikkeld :slight_smile:
Wat te doen bij rode vinkjes? Als iemand een rood vinkje heeft?
Lijkt me toch dat dat niet goed is. Bij wie het groen is, is mooi en goed :slight_smile:

Lijkt me dus geen vreemde vraag, wat moet je doen als je rode vinkjes hebt bij Freedom? Moet je dat melden, gewoon lekker laten gaan of iets anders? Moeilijke verwijzingen met informatie waar een leek niets van snapt, dat lijkt me niet zo handig. Beetje Jip en Janneke taal is misschien iets beter :slight_smile:

Het gaat me dus niet om het @freedom.nl adres maar om de email server die ik heb draaien op een raspberry pi met de eigen domein naam via freedom.
Ik ga op een avond eens aan de gang met de hierboven genoemde files. In mijn ogen is de client-initiated renegotiation de belangrijkste als ik daar de uitleg van lees waarom dat uit moet staan. Maar welke regel(s) in bovenstaande file(s) dat nu precies uit zet is me nog niet duidelijk.

Ja, ook hier heb ik het over een eigen domeinnaam, die ik via Freedom heb aangevraagd :slight_smile:

Als ik kijk naar Postfix Configuration Parameters
Zou dat wel eens de regel

tls_ssl_options = NO_COMPRESSION, 0x40000000

uit de file van GraveR kunnen zijn

Maar als ik de tekst in de uitleg lees dan zou dat ook kunnen als:

tls_ssl_options = NO_COMPRESSION, NO_RENEGOTIATION, NO_SESSION_RESUMPTION_ON_RENEGOTIATION

Klopt dat?

0x40000000 is inderdaad een compatibility ding for NO_RENEGOTIATION

use OpenSSL option value ‘0x40000000’ for older versions

Bron:
https://www.sidn.nl/en/news-and-blogs/hands-on-implementing-dane-in-postfix

Het volgende geeft allemaal groene vinkjes, nu alleen DKIM nog:

smtpd_tls_cert_file = /etc/letsencrypt/live/INVULLEN/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/INVULLEN/privkey.pem

# TLS hardening
tls_ssl_options = NO_COMPRESSION, 0x40000000

smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtp_tls_mandatory_protocols  = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_protocols           = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtp_tls_protocols            = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1

smtp_tls_ciphers = high
smtp_tls_mandatory_ciphers = high
smtp_tls_exclude_ciphers =
    EXP, LOW, MEDIUM,
    aNULL, eNULL, SRP, PSK, kDH, DH, kRSA, DHE, DSS, RC4, DES, IDEA, SEED, ARIA, CAMELLIA, AESCCM8, 3DES,
    ECDHE-ECDSA-AES256-SHA384, ECDHE-ECDSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES128-SHA256,
    MD5, SHA

smtpd_tls_ciphers = high
smtpd_tls_mandatory_ciphers = high
smtpd_tls_exclude_ciphers =
    EXP, LOW, MEDIUM,
    aNULL, eNULL, SRP, PSK, kDH, DH, kRSA, DHE, DSS, RC4, DES, IDEA, SEED, ARIA, CAMELLIA, AESCCM8, 3DES,
    ECDHE-ECDSA-AES256-SHA384, ECDHE-ECDSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES128-SHA256,
    MD5, SHA

Hoe weet een leek nu wat die moet doen?
Snap er niets van. Nou ja, dan laat ik het zoals het is :slight_smile:

Dat hangt er van af hoe leek je precies bent :slight_smile: (ik beschouw mezelf als behoorlijke leek op dit gebied.)

Als je mijn tekst uit antwoord 11 overneemt in /etc/postfix/main.cf dan werkt het goed.
Wel natuurlijke oude zaken met dezelfde parameters er uit halen/commentaar van maken. En naar het juiste certificaat wijzen natuurlijk.

Mogelijk moet ik ook het volgende nog toevoegen:

smtp_tls_cert_file = /etc/letsencrypt/live/INVULLEN/fullchain.pem
smtp_tls_key_file = /etc/letsencrypt/live/INVULLEN/privkey.pem

Gekke vraag misschien, waar vul ik die info in?
En moet ik dingen ergens eerst ophalen of is het dan zo gedaan?

Is dit niet iets wat Freedom moet doen, of is het echt aan de mensen zelf die een domeinnaam heeft via Freedom. Of misschien via een andere provider :slight_smile:

Bedankt voor de hulp in ieder geval.

Ok, nu snap ik waar je probleem zit.
In dit geval draai ik dus zelf een mailserver op een Raspberry Pi. Het is dus geen mailserver van Freedom.
Je zet in Freedom DNS alleen wat verwijzingen naar het IPv4 en IPv6 adres van je mailserver.
Verder moet je dus bij de instellingen zijn van je eigen mailserver zijn. Op een Raspberry Pi staan die dan in de file /etc/postfix/main.cf
De tekst moet dus in die file worden toegevoegd.
Maar voordat je zover bent moet je dus ook TLS certificaten op je eigen mailserver activeren, en dat is weer een heel onderwerp op zich.

Even iets concreter:
mailadres_1@<domeinnaam bij freedom>.nl komt aan op een mailserver van Freedom
mailadres_2@home.<domeinnaam bij freedom>.nl komt aan op mijn eigen mailserver op een Rapsberry Pi thuis.

Daartoe heb ik in de DNS instellingen bij Freedom voor <domeinnaam bij freedom>
* MX 10 mx.soverin.net. (voor de mail bij Freedom)
home MX 10 home.<domeinnaam bij freedom>.nl. (voor de mail op mijn eigen mailserver thuis)

Waarbij ik dan voor home de volgende records heb in de DNS instellingen bij Freedom
home A <IPv4 adres van mijn thuisaansluiting>
home AAAA <IPv6 adres van mijn Raspberry Pi thuis>
home TXT v=spf1 mx a ~all
_25._tcp.home TLSA 3 1 1 <hash>
_dmarc TXT v=DMARC1; p=reject; sp=reject; rf=afrf; pct=100; ri=86400; adkim=r; aspf=s

En natuurlijk voor de poorten 25, 465 en 993 e.a.:
IPv4 portforwards in mijn Fritz!Box naar mijn Raspberry Pi
In mijn Fritz!Box op het IPv6 adres van mijn Raspberry Pi zoals die dat van buiten af ge-enabled.

Ook de freedom helpdesk verzocht de reverse DNS in te stellen op de IPv4 en IPv6 adressen van home.<domeinnaam bij freedom>.nl
Dat kan je niet zelf, maar moet je via de helpdesk regelen.

Hopelijk helpt dit wat.

1 like

Super bedankt dat je zoveel tijd steekt in mijn onwetendheid. Het zal niet altijd even makkelijk zijn om een leek hierin te helpen. Ik begrijp nu waar jij het over hebt, je hebt het dus over een eigen mailserver en dat gaat niet via Freedom (gaat wel, maar niet de mail). Het vreemde is dan wel dat mijn Freedom mail wel via de mailserver gaat van Freedom en dat het daar niet op orde is?! Of is dat nu kort door de bocht gedacht?

Dan zou het bij mij toch aangepast moeten worden door Freedom en dat ik er geen omkijken naar heb? Misschien te makkelijk gedacht hoor maar ik vraag het liever om er achter te komen hoe het zit. Liever een hele stomme vraag (al hoewel ik zelf altijd denk dat vragen nooit stom en/of dom zijn), dan denken dat ik altijd maar veilig ben en dat het niet zo blijkt te zijn.

Maar ik begrijp nu jou info en laat ik zeggen, het helpt me ook wel weer een beetje verder.

Inderdaad bij de test op internet.nl voor

  • home.<domeinnaam bij freedom>.nl heb ik allemaal groene vinkjes (nog op DKIM na, maar dat komt nog en dus een score van 95%)
  • Maar op <domeinnaam bij freedom>.nl zijn er nog problemen met TLS versie, Ciphers en Client-initiated renegotiation.
    Dit laatste zal dus echt door Freedom/Soverin moeten worden opgelost.
    Hoewel internet.nl het nou ook weer niet zo erg vindt, want het geeft wel een 100% score.
  • Mijn mailadres op @freedom.nl heeft nog twee extra problemen: DMARC policy en DANE vervangingsschema, op te lossen door Freedom.
    Maar ook hier een 100% score.
1 like