GNU/Linux >> Linux の 問題 >  >> Linux

LinuxメールサービスをSSL/TLSで保護する方法

従来、電子メールサービスは保護されていない方法でデータを送信します。SMTP経由で電子メールを送信する場合でも、IMAPまたはPOP経由で受信する場合でも、デフォルトはクリアテキストです。暗号化を実施するオンラインアプリケーションが増え、データを保護するための一般的なコンセンサスが得られるため、Secure Sockets Layer / Transport Layer Security(SSL / TLS)セキュリティ証明書を使用して電子メールサービスを保護するのが最善です。

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

まず、電子メールサービスとプロトコルの簡単なレビュー。電子メールは、TCPポート25を使用してSMTP(Simple Mail Transport Protocol)と呼ばれるサービスを介して送信されます。このプロトコルは、DNSメールエクスチェンジャー(MX)レコードルックアップに基づいてサーバーからサーバーに電子メールを送信します。電子メールが電子メールサーバー上にあると、ポートTCP 143を使用するインターネットメッセージアクセスプロトコル(IMAP)、またはポートTCP 110を使用するポストオフィスプロトコル(POP3)の2つのサービスのいずれかを使用して取得されます。これらのサービスはすべて、デフォルトで、これらのサービスとの間でメールと認証をプレーンテキストで送信します。したがって、保護されていません。

電子メールデータと認証を保護するために、これらのサービスには、SSL/TLS証明書を利用してデータフローと通信を暗号化でラップできるセキュリティ機能が追加されています。 SSL / TLS暗号化が情報を保護する方法はこの記事の範囲を超えていますが、BryantSonのインターネットセキュリティの記事で詳細に説明されています。大まかに言えば、SSL/TLS暗号化はパブリック/プライベート暗号化アルゴリズムです。

これらのセキュリティ機能をサービスに追加することで、新しいTCPポートをリッスンできます。

サービス デフォルトのTCPポート
SSL/TLSポート
SMTP 25 587
IMAP 143 993
POP3 110 995
SSL/TLS証明書を生成する

SSL / TLS証明書は、OpenSSLなどのツールを使用して無料で生成することも、公的認証局(CA)からさまざまな価格で購入することもできます。以前は、独自の証明書を生成するのは簡単で、ほとんどの場合機能していましたが、セキュリティの向上に対する需要が高まるにつれ、ほとんどの電子メールクライアントは、手動の例外なしに自己生成のSSL/TLS証明書を信頼していません。

ユースケースがプライベートまたはテスト用である場合は、自己生成証明書を使用してコストを節約することは理にかなっています。ただし、これを大規模なグループに展開する場合や、有料の顧客がいる場合は、それらを販売する公的で信頼できる会社から証明書を購入する方がよいでしょう。

いずれの場合も、新しい証明書の要求を開始するプロセスは、LinuxシステムでOpenSSLツールを使用して、証明書署名要求(CSR)を作成することです。

 $ openssl req -new -newkey rsa:2048 -nodes -keyout mail.mydomain.key -out mail.mydomain.csr 

このコマンドは、保護しようとしているサービスの新しいCSRと秘密鍵を同時に作成します。このプロセスでは、証明書に関連するいくつかの質問があります。場所の詳細、サーバーの完全修飾ドメイン名(FQDN)、電子メールの連絡先情報などです。情報を入力すると、キーとCSRが生成されます。

独自の証明書を生成する場合

独自の証明書を生成する場合は、上記のCSRコマンドを発行する前に、独自のルートCAを作成する必要があります。次のコマンドで独自のルートCAを作成できます:

 $ openssl genrsa -des3 -out myCA.key 2048 

パスフレーズを追加するように求められます。安全なパスフレーズを付けて、紛失しないでください。これはプライベートルートCAキーであり、名前が示すように、証明書に対するすべての信頼のルートです。

次に、ルートCA証明書を生成します。

 $ openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem 

さらにいくつかの質問に答えた後、5年の寿命を持つルートCA証明書を生成します。

上記の手順のCSRファイルを使用して、作成したルートCAによって生成および署名される新しい証明書を要求できます。

 $ openssl x509 -req -in mail.mydomain.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out mail.mydomain.pem -days 1825 -sha256 

プライベートルートCAキーのパスフレーズを入力して、証明書を作成して署名します。

これで、セキュリティを強化するために電子メールサービスを構成するために必要な2つのファイルがあります。秘密鍵ファイル mail.mydomain.key 、および公開証明書ファイル mail.mydomain.pem

証明書を購入した場合

ベンダーから証明書を購入すると、SSL / TLS証明書を生成するための入力として使用されるため、そのCSRをシステムにアップロードするように求められます。証明書にはファイル( mail.mydomain.pem など)としてアクセスできます。 )。多くのSSLベンダーは、中間証明書のダウンロードも要求しています。この場合、2つの証明書ファイルを1つに結合して、電子メールサービスが両方を組み合わせて処理できるようにする必要があります。証明書をサードパーティの中間証明書と組み合わせることができます:

 $ cat mail.mydomain.pem gd_bundle-g2-g1.crt > mail.mydomain.pem 

出力のファイル拡張子が.pemであることに注意してください 、Privacy-EnhancedMailの略です。

これで、セキュリティを強化するために電子メールサービスを構成するために必要な2つのファイルがあります。秘密鍵ファイル mail.mydomain.key 、および公開結合証明書ファイル、 mail.mydomain.pem

ファイル用の安全なディレクトリを作成します

独自のキーを作成した場合でも、ベンダーから購入した場合でも、上記で作成した2つのファイル用にルート所有の安全なディレクトリを作成します。安全なプレイを作成するためのワークフローの例は次のとおりです。

 $ mkdir / etc / pki / tls 
$ chown root:root / etc / pki / tls
$ chmod 700 / etc / pki / tls

ファイルを/etc / pki / tls にコピーした後、必ずファイルにアクセス許可を設定してください と:

 $ chmod 600 /etc/pki/tls/* 

SMTPおよびIMAPサービスを構成します

次に、新しいセキュリティ証明書を使用するようにSMTPサービスとIMAPサービスの両方を構成します。この例でSMTPとIMAPに使用されているプログラムは、 postfixです。 およびdovecot

/を編集します など / postfix / main.cf お好みのテキストエディタで。次の行を追加します:

 smtpd_use_tls =yes 
smtpd_tls_cert_file =/etc/pki/tls/mail.mydomain.pem
smtpd_tls_key_file =/etc/pki/tls/mail.mydomain.key
設定をカスタマイズする

次のオプションを使用すると、さまざまな暗号、プロトコルなどを無効/有効にできます。

 smtpd_tls_eecdh_grade =strong 
smtpd_tls_protocols =!SSLv2、!SSLv3、!TLSv1、!TLSv1.1
smtpd_tls_mandatory_protocols =!SSLv2、!SSLv3、!TLSv1、!TLSv1.1
smtpd high
smtpd_tls_security_level =may
smtpd_tls_ciphers =high
tls_preempt_cipherlist =yes
smtpd_tls_mandatory_exclude_ciphers =aNULL、MD5、DES、ADH、RC4、PSD、SRP、3DES_ eNULL =aNULL、MD5、DES、ADH、RC4、PSD、SRP、3DES、eNULL
smtp_tls_mandatory_protocols =!SSLv2、!SSLv3、!TLSv1、!TLSv1.1
smtp_tls_protocols =!SSLv2、!SSLv3 、! TLSv1、!TLSv1.1

/etc/dovecot/dovecot.confを編集します 次の3行を追加します:

ssl=必須
ssl_cert= ssl_key =

次のオプションを追加して、さまざまな暗号やプロトコルなどを無効/有効にします(これらの理解と検討はあなたに任せます):

 ssl_cipher_list =EECDH + ECDSA + AESGCM:EECDH + aRSA + AESGCM:EECDH + ECDSA + SHA384:EECDH + ECDSA + SHA256:EECDH + aRSA + SHA384:EECDH + aRSA + SHA256:EECDH + aRSA + RC4:EEH + aRSA:ALL:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SSLv2 
ssl_prefer_server_ciphers =yes
ssl_protocols =!SSLv2!SSLv3!TLSv1!TLSv1.1
ssl_min_protocol =TLSv1.2

SELinuxのコンテキストを設定する

LinuxディストリビューションでSELinuxが有効になっている場合は、新しい証明書ファイルに正しいSELinuxコンテキストを設定します。

Postfix SELinuxの場合:

 $ chcon -u system_u -t cert_t mail.mydomain.* 

Dovecot SELinuxの場合:

 $ chcon -u system_u -t dovecot_cert_t mail.mydomain.* 

両方のサービスを再起動し、更新された電子メールクライアント構成に接続します。一部の電子メールクライアントは、新しいポート番号を自動検出します。他の人はあなたにそれらを更新するように要求するでしょう。

セットアップをテストする

opensslを使用してコマンドラインからすばやくテストする およびs_client プラグイン:

 $ openssl s_client -connect mail.mydomain.com:993 
$ openssl s_client -starttls imap -connect mail.mydomain.com:143
$ openssl s_client -starttls smtp-connectmail.mydomain。 com:587

これらのテストコマンドは、使用している接続、証明書、暗号、セッション、およびプロトコルに関する大量のデータを表示します。これは、新しい構成が機能していることを検証するだけでなく、後置で定義した適切な証明書とセキュリティ設定を使用していることを確認するための良い方法です。 またはdovecot 構成ファイル。

安全を確保してください!


Linux
  1. Lets Encrypt SSL/TLS証明書をcertbotで管理する方法

  2. LinuxでSystemctlを使用してSystemdサービスを管理する方法

  3. SSL証明書を使用してポート8443でPleskホスト名を保護する方法

  1. LetsEncryptSSL証明書を使用してcPanel対応のアカウントを保護する方法

  2. SSL/TLS証明書で接続を保護する方法

  3. SSL/TLSでvsFTPdを保護する方法

  1. SectigoSSL証明書を使用してcPanel対応アカウントを保護する方法

  2. SSL / TLS暗号化接続でVSFTPDを構成する方法は?

  3. Ubuntu 18.04 で Apache との SSL 接続を保護する方法