web-dev-qa-db-ja.com

TLSv1.2を使用するようにPostfixを構成する

最初のクラウドサーバーのビルドを開始します。

Webshopからメールを送信するときに、TLSv1.2を使用するようにpostfixを構成するにはどうすればよいですか?

私のwebshopが私のpostfixサーバーにメールを送信するとき、それはTLSv1を使用しますここにログがあります:

postfix/submission/smtpd[19111]: Anonymous TLS connection established from domainname.com[xxx.xxx.xxx.xxx]: TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits) 

私のウェブショップで私は設定で設定しました:使用:TLSポート:587

ありがとうJ


My server info:
Ubuntu 16.04
postfix:
  Installed: 3.1.0-3

openssl:
  Installed: 1.0.2h-1+deb.sury.org~xenial+1

これがpostfixからのログです:TLSv1で入ってくるメールを見ることができます... :(

Sep 19 19:10:56 ubuntu postfix/master[6992]: daemon started -- version 3.1.0, configuration /etc/postfix
Sep 19 19:11:04 ubuntu postfix/submission/smtpd[7126]: connect from domainname.com[xxx.xxx.xxx.xxx]
Sep 19 19:11:04 ubuntu postfix/submission/smtpd[7126]: Anonymous TLS connection established from domainname.com[xxx.xxx.xxx.xxx]: TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)
Sep 19 19:11:04 ubuntu postfix/submission/smtpd[7126]: 803AB41C0A: client=domainname.com[xxx.xxx.xxx.xxx], sasl_method=LOGIN, sasl_username=raitis
Sep 19 19:11:04 ubuntu postfix/cleanup[7131]: 803AB41C0A: message-id=<[email protected]>
Sep 19 19:11:04 ubuntu postfix/qmgr[7010]: 803AB41C0A: from=<[email protected]>, size=694, nrcpt=1 (queue active)
Sep 19 19:11:04 ubuntu postfix/submission/smtpd[7126]: disconnect from domainname.com[xxx.xxx.xxx.xxx] ehlo=2 starttls=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=8
Sep 19 19:11:04 ubuntu postfix/smtp[7133]: Trusted TLS connection established to gmail-smtp-in.l.google.com[66.102.1.26]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Sep 19 19:11:04 ubuntu postfix/smtp[7133]: 803AB41C0A: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[66.102.1.26]:25, delay=0.43, delays=0.06/0.04/0.2/0.14, dsn=2.0.0, status=sent (250 2.0.0 OK 1474305064 14si1756669wmn.119 - gsmtp)
Sep 19 19:11:04 ubuntu postfix/qmgr[7010]: 803AB41C0A: removed

master.cf

smtp        inet  n       -       -       -       -       smtpd
smtpd       pass  n       -       -       -       -       smtpd
submission  inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
  -o smtp_tls_mandatory_protocols=TLSv1

#628        inet  n       -       y       -       -       qmqpd
pickup      unix  n       -       y       60      1       pickup
cleanup     unix  n       -       y       -       0       cleanup
qmgr        unix  n       -       n       300     1       qmgr
#qmgr       unix  n       -       n       300     1       oqmgr
tlsmgr      unix  -       -       y       1000?   1       tlsmgr
rewrite     unix  -       -       y       -       -       trivial-rewrite
bounce      unix  -       -       y       -       0       bounce
defer       unix  -       -       y       -       0       bounce
trace       unix  -       -       y       -       0       bounce
verify      unix  -       -       y       -       1       verify
flush       unix  n       -       y       1000?   0       flush
proxymap    unix  -       -       n       -       -       proxymap
proxywrite  unix -       -       n       -       1       proxymap
smtp        unix  -       -       y       -       -       smtp
relay       unix  -       -       y       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq       unix  n       -       y       -       -       showq
error       unix  -       -       y       -       -       error
retry       unix  -       -       y       -       -       error
discard     unix  -       -       y       -       -       discard
local       unix  -       n       n       -       -       local
virtual     unix  -       n       n       -       -       virtual
lmtp        unix  -       -       y       -       -       lmtp
anvil       unix  -       -       y       -       1       anvil
scache      unix  -       -       y       -       1       scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
#   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
#  mailbox_transport = lmtp:inet:localhost
#  virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix  -       n       n       -       -       pipe
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -   n   n   -   2   pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
5
John Steave

TLSバージョン1.0は安全でないと見なされることが多いため、これをオフにするように求められます。 TLS v1.0に影響を与えた潜在的なバグは2つあります:BEASTとPOODLEです。 TLS 1.0の問題は少し後で発見され、SSL v3とは多少異なります( この説明 を参照)。しかし、それらは同じものと見なされることがよくあります。

Postfixに準拠させるために私が最後に行ったのは、SSL v2/3およびTLS v1.0をmain.cfで次のように使用できないようにすることです。

smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1
smtp_tls_mandatory_protocols  = !SSLv2,!SSLv3,!TLSv1
smtpd_tls_protocols           = !SSLv2,!SSLv3,!TLSv1
smtp_tls_protocols            = !SSLv2,!SSLv3,!TLSv1

master.cfでは何も変更していません。

また、basic暗号化プロトコルを次のように防止します。

smtpd_tls_exclude_ciphers = RC4, aNULL

以下のコメントに従って、除外の完全なリストを次のように長いリストに更新する必要があります。

smtpd_tls_exclude_ciphers = aNULL, LOW, EXP, MEDIUM, ADH, AECDH, MD5,
                            DSS, ECDSA, CAMELLIA128, 3DES, CAMELLIA256,
                            RSA+AES, eNULL

補足として、次の2行で何らかの形式の暗号化を強制する必要もあります。

smtpd_tls_security_level = encrypt
smtp_tls_security_level  = encrypt

これにはあらゆる種類の副作用がある可能性があるため、変更を永続的なものにする前に、そのような変更をテストすることをお勧めします。たとえば、mailmanは暗号化をまったくサポートしていないようです。

5
Alexis Wilke

man 5 postconf:

smtp_tls_mandatory_protocols (default: !SSLv2)
   List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption.  In main.cf the values are separated by whitespace, commas or colons. In the policy table "protocols" attribute (see smtp_tls_policy_maps) the only  valid
   separator is colon. An empty value means allow all protocols. The valid protocol names, (see \fBfBSSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1".

   Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" and "TLSv1.2". If an older Postfix version is linked against OpenSSL 1.0.1 or later, these, or any other new protocol versions, are unconditionally enabled.

   With Postfix >= 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtp_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtp_tls_mandatory_protocols = !SSLv2,
   !SSLv3". Listing the protocols to include, rather than protocols to exclude, is supported, but not recommended. The exclusion form more closely matches the behaviour when the OpenSSL library is newer than Postfix.

   Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2".  This means that by default, SSL version 2 will not be used at the "encrypt" security level and higher.

   See the documentation of the smtp_tls_policy_maps parameter and TLS_README for more information about security levels.

   Example:

   # Preferred form with Postfix >= 2.5:
   smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
   # Alternative form.
   smtp_tls_mandatory_protocols = TLSv1

   This feature is available in Postfix 2.3 and later.
1
rudimeier

まず、OpenSSL 1.0.1以降と少なくともPostfix 2.3以降があることを確認してください(この組み合わせのみがTLSv1.1とTLSv1.2をサポートできるため)。古いOpenSSLはTLSv1.2をサポートしません。古いPostfixバージョンは非常に基本的なものか、SSL/TLSをまったくサポートしません。

2.5より古いPostfixとOpenSSL 1.0.1以降がある場合、@ rudimeierが言及したように、TLSv1.1およびTLSv1.2プロトコルは無条件に有効になります。この場合、何もする必要はありません。Postfixは自動的に接続を検出します。これが期待に合わない場合は、Postfixを新しいバージョンにアップグレードすることを検討してください(この問題のためだけでなく、Postfixが2.11になり、2.5がかなり古いため)。

Postfix 2.5.0以降を使用している場合は、/etc/postfix/master.cfで次の変更が必要になります。

submission inet n - - - - smtpd
  -o smtp_tls_mandatory_protocols=TLSv1

覚えておいてください:submission行の下に他のオプションが定義されている場合は、not削除する必要があります。addそれらの下にあるこの新しいオプションを削除してください。 smtp_tls_mandatory_protocolsオプションがオプションリストに既に存在する場合は、再度追加せずに、代わりにmodify値を上記のTLSv1に追加します。また、submission行を複製しないでください。Postfixが開始を拒否する可能性があります。

0
Gabor Garami