Postfix強制smtp/smtpd vs“非強制”區別及配置
三個問題:
- 如果我錯了,請糾正我:
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:**我已經閱讀了配置參數的解釋,這也是我大部分知識的來源。
- 關於
smtp[d]_tls_[mandatory_]ciphers
是的。
- 如果我將兩者都設置
smtpd_tls_security_level
為smtp_tls_security_level
可能,那麼只有機會主義設置是相關的,這意味著我在強制性設置中設置了什麼並不重要?是的。
- 如果我想創建一個安全但仍然是公共的郵件伺服器,那麼以下配置(關於使用的加密)可以嗎?
您正在禁用 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
使用給定的密碼套件,伺服器更喜歡最好的可用密碼,如果可能的話,也更喜歡完美保密,並且還支持所有相關的客戶端,而不允許錯誤的密碼。有關更多詳細資訊,請參閱連結的論文,它提供了有關建議的非常詳細的資訊,包括理論。上面引用的後綴部分的解釋由我貢獻(並由許多其他人審查)。