Postfix 強制 smtp/smtpd 與「非強制」區別及配置

Postfix 強制 smtp/smtpd 與「非強制」區別及配置

三個問題:

  1. 如果我錯了,請修正我:
    smtpd_tls_mandatory_ciphers=> 傳入強制 TLS 加密的設定
    smtpd_tls_ciphers=> 傳入機會性 TLS 加密的設定
    smtp_tls_mandatory_ciphers=> 傳出強制 TLS 加密的
    smtp_tls_ciphers設定 => 傳出機會性 TLS 加密的設置
  2. 如果我同時設定smtpd_tls_security_level和 ,smtp_tls_security_level那麼may只有機會主義設定是相關的,這意味著我在強制設定中設定什麼並不重要?
  3. 如果我想建立一個安全但仍然公共的郵件伺服器,以下配置(就所使用的加密技術而言)可以嗎?我不太確定目前有多少伺服器支援 TLS 或一般的安全級別,但我仍然希望能夠與大多數伺服器進行通訊。

    smtpd_tls_mandatory_ciphers = high
    smtp_tls_mandatory_ciphers = high
    smtpd_tls_ciphers = high
    smtp_tls_ciphers = high
    smtp_tls_security_level = may
    smtpd_tls_security_level = may
    
    smtp_tls_protocols = !SSLv2, !SSLv3
    smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
    smtpd_tls_protocols = !SSLv2, !SSLv3
    smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
    
    smtp_tls_exclude_ciphers = aNULL, DES, RC4, MD5
    smtpd_tls_exclude_ciphers = aNULL, DES, RC4, MD5
    #hope this is enough since it is also added to the mandatory exclusions
    smtp_tls_exclude_ciphers = aNULL, DES, RC4, MD5
    smtpd_tls_exclude_ciphers = aNULL, DES, RC4, MD5
    

背景:這是一家以安全為導向的公司,具有相當高的安全標準我也不希望任何電子郵件因此配置而丟失。

附:我已經閱讀了解釋配置參數這也是我大部分知識的來源。

答案1

  1. 關於smtp[d]_tls_[mandatory_]ciphers

是的。

  1. 如果我將smtpd_tls_security_level和都設定smtp_tls_security_level為可能,那麼只有機會主義設定是相關的,這意味著我在強制設定中設定什麼並不重要?

是的。

  1. 如果我想建立一個安全但仍然公共的郵件伺服器,以下配置(就所使用的加密技術而言)可以嗎?

您將停用 SSL 並限制密碼,但仍允許未加密的流量。我認為對於與其他郵件伺服器的通訊來說,糟糕的加密比根本不加密好。

引用論文應用加密強化 (ACH)經過更好的加密

Postfix 有五個內部密碼列表,並且可以在這些密碼之間進行切換smtpd_tls_ciphers。但是,我們將其保留為伺服器到伺服器連接的預設值,因為許多郵件伺服器僅支援過時的協定和密碼。我們認為糟糕的加密仍然比純文字傳輸更好。對於與 MUA 的連接,TLS 是強制性的,並且密碼套件會被修改。

對於與郵件客戶端的連接,限制密碼和協定以及選擇好的密碼和協定非常有用。

MX 和 SMTP 用戶端設定:如第 2.3.1 節所述,由於機會加密,我們不限制與其他郵件伺服器通訊的密碼或協定列表,以避免以純文字傳輸。

推薦配置如下:

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# use 0 for Postfix >= 2.9, and 1 for earlier versions
smtpd_tls_loglevel = 0
# enable opportunistic TLS support in the SMTP server and client
smtpd_tls_security_level = may
smtp_tls_security_level = may
smtp_tls_loglevel = 1
# if you have authentication enabled, only offer it after STARTTLS
smtpd_tls_auth_only = yes
tls_ssl_options = NO_COMPRESSION

smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_ciphers=high
tls_high_cipherlist=EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
smtpd_tls_eecdh_grade=ultra

這對於master.cf

submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o tls_preempt_cipherlist=yes

使用給定的密碼套件,伺服器更喜歡最好的可用密碼,如果可能的話,也選擇完美保密,並且還支援所有相關客戶端,不允許使用錯誤的密碼。有關更多詳細信息,請參閱連結的論文,它提供了有關建議的非常詳細的信息,包括理論。上面引用的後綴部分的解釋是由我貢獻的(並經過許多其他人的審查)。

相關內容