Ubuntu

Postfix強制smtp/smtpd vs“非強制”區別及配置

  • May 28, 2015

三個問題:

  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

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

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

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

是的。

  1. 如果我將兩者都設置smtpd_tls_security_levelsmtp_tls_security_level可能,那麼只有機會主義設置是相關的,這意味著我在強制性設置中設置了什麼並不重要?

是的。

  1. 如果我想創建一個安全但仍然是公共的郵件伺服器,那麼以下配置(關於使用的加密)可以嗎?

您正在禁用 SSL 並限制密碼,但仍允許未加密的流量。對於與其他郵件伺服器的通信,我認為糟糕的加密總比沒有加密要好。

引用Bettercrypto的論文Applied Crypto Hardening (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

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

引用自:https://serverfault.com/questions/693179