GNU/Linux >> Linux の 問題 >  >> Cent OS

電子メールのなりすましをブロックするためにCentOS/RHELでPostfixを使用してOpenDMARCを設定する

以前の記事では、電子メールスパムをブロックするためのいくつかの効果的なヒントについて説明しました。このチュートリアルでは、CentOS /RHELでPostfixSMTPサーバーを使用してOpenDMARCをセットアップし、電子メールのなりすましやスパムをブロックする方法を示します。 OpenDMARCは、MTA(Message Transport Agent、別名SMTPサーバー)用のオープンソースDMARC電子メールポリシーフィルターです。

DMARCとは

DMARC(Domain-based Message Authentication、Reporting and Conformance)は、ドメイン所有者が自分のドメイン名が電子メールスプーファによって使用されるのを防ぐことを可能にするインターネット標準(RFC 7489)です。 DMARCが発明される前は、悪意のある人物が差出人アドレスで他の人のドメイン名を使用するのは非常に簡単です。

ドメイン所有者が自分のドメイン名のDMARCDNSレコードを作成し、受信メールサーバーがDMARC検証を実装した場合、悪意のあるユーザーはDMARC検証に合格するためにSPFアライメントまたはDKIMアライメントに合格する必要があります。 DMARCチェックが失敗した場合、なりすましメールが拒否される可能性があります。エンドユーザーに見られることはありません。ドメイン所有者のメールサーバーが危険にさらされない限り、悪意のある人物がSPFまたはDKIMを渡すことは困難です。

電子メールのなりすましの例

スパマーがwinsaaluminyumankara.comを使用して身代金のメールを送ってくれました 差出人アドレス。 winsaaluminyumankara.comのwhois情報 公開されています。明らかに、スパマーはこのドメイン名の責任者ではありません。

winsaaluminyumankara.com DMARCレコードがあります。

次に、SPFが失敗したことを示す電子メールヘッダーを確認しました。 DKIM署名はありません。したがって、DMARCチェックは失敗します。これはなりすましメールです。

これは、大手ブランドが電子メールスプーファによって使用されているだけでなく、インターネット上のドメイン名が悪意のある人物によって偽装されている可能性があることを示しています。残念ながら、このドメイン名のDMARCポリシーは p =noneです。 、DMARCチェックが失敗した場合に受信メールサーバーに特別なことを何もしないように指示します。ポリシーがp=requireの場合 、その後、私のPostfixSMTPサーバーはOpenDMARCでこのメールを拒否します。

PaypalとFacebookはrejectを作成しました ドメイン名のDMARCポリシー。

したがって、悪意のある攻撃者がPaypalまたはFacebookをスプーフィングしようとすると、私の電子メールサーバーはOpenDMARCを使用してスプーフィングされた電子メールを拒否できます。 rejectをデプロイした他の多くのよく知られたドメイン名があります 下の表に示されているように、DMARCポリシー。

  • bankofamerica.com
  • yahoo.com
  • chase.com
  • wellsfargo.com
  • facebook.com
  • google.com
  • youtube.com
  • twitter.com
  • reddit.com
  • instagram.com
  • LinkedIn.com
  • medium.com
  • pinterest.com
  • dropbox.com
  • microsoft.com
  • whatsapp.com

安全なメールボックスプロバイダーであるProtonmailは、PostfixとOpenDMARCを使用して受信メールのDMARCチェックを実行しています。自分のPostfixSMTPサーバーで同じことを行う方法を紹介します。

前提条件

このチュートリアルは、メールボックスプロバイダーおよび独自のメールサーバーを実行するすべてのユーザーを対象としており、ユーザーが電子メールのなりすましに詐欺されるのを防ぎます。ドメイン名の所有者であり、ドメイン名が電子メールスプーファによって使用されないようにしたい場合は、この記事を読んでDMARCレコードを作成し、DMARCレポートを分析してください。 DMARCを完全に理解していない場合は、その記事を読むこともお勧めします。

OpenDMARCを設定する前に、メールサーバーでDKIM検証サービスを実行する必要があります。 OpenDMARCは、OpenDKIMと組み合わせて使用​​する必要があります。 Amavisを使用してDKIMの署名と検証を行う場合は、AmavisからOpenDKIMに切り替えることをお勧めします。これは、OpenDMARCがAmavisからのDKIM検証結果を読み取ることができないためです。 Amavisを完全にアンインストールする必要はありません。 AmavisでDKIMを無効にしてから、OpenDKIMをインストールして構成するだけです。

OpenDKIMに切り替えたくない場合は、milterインターフェースを介してAmavisをPostfixと統合する必要があります。これについては、この記事の最後で説明します。

ステップ1:CentOS/RHELにOpenDMARCをインストールして構成する

OpenDMARCは、DMARCチェックとレポートを実行できるオープンソースソフトウェアです。 EPELリポジトリからCentOS/RHELにインストールできます。

sudo dnf install epel-release

sudo dnf install opendmarc

OpenDMARCを起動します。

sudo systemctl start opendmarc

起動時に自動起動を有効にします。

sudo systemctl enable opendmarc

OpenDMARCは127.0.0.1:8893をリッスンします 。次のコマンドを実行して、ステータスを確認します。

systemctl status opendmarc

出力:

● opendmarc.service - Domain-based Message Authentication, Reporting & Conformance (DMARC) Milter
   Loaded: loaded (/usr/lib/systemd/system/opendmarc.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-03-08 23:52:59 EDT; 1min 4s ago
     Docs: man:opendmarc(8)
           man:opendmarc.conf(5)
           man:opendmarc-import(8)
           man:opendmarc-reports(8)
           http://www.trusteddomain.org/opendmarc/
 Main PID: 19987 (opendmarc)
    Tasks: 3 (limit: 5047)
   Memory: 1.1M
   CGroup: /system.slice/opendmarc.service
           └─19987 /usr/sbin/opendmarc -c /etc/opendmarc.conf -P /var/run/opendmarc/opendmarc.pid

次に、メインの構成ファイルをテキストエディタで編集します。

sudo nano /etc/opendmarc.conf

次の行を見つけます:

# AuthservID name

デフォルトでは、OpenDMARCはMTAホスト名をAuthserveIDとして使用しますが、Amavisd-newはOpenDMARCによって追加された認証結果ヘッダーを上書きするため、認証サービスには別の名前を使用することをお勧めします。次のように変更できます。これにより、どのプログラムがどの認証結果ヘッダーを追加するかを簡単に確認できます。

AuthservID OpenDMARC

次に、次の行を追加します。ホスト名を実際のPostfixホスト名に置き換えます。これにより、OpenDMARCは mail.yourdomain.comで認証結果を信頼するようになります。 IDで。これは、OpenDKIMを実行してDKIM検証を行う場合に必要です。 Postfixホスト名がTrustedAuthservIDsに含まれていない場合 の場合、OpenDMARCはOpenDKIMによって生成されたAuthentication-Resultsヘッダーを無視します。

TrustedAuthservIDs mail.yourdomain.com

次に、次の行を見つけます。

# IgnoreAuthenticatedClients false

値をtrueに変更します SMTP AUTHを介して正常に認証されたSMTPクライアントを無視します。これには、ポート587を介して送信メールを送信するデスクトップ/モバイルメールクライアントが含まれます。

IgnoreAuthenticatedClients true

次に、次の行を見つけます:

# RejectFailures false

デフォルトでは、ドメインのポリシーが p =subject に設定されている場合でも、OpenDMARCはDMARCチェックに失敗したメールを拒否しません。 。ドメインのポリシーがp=receive に設定されているときに、DMARCチェックに失敗したメールを拒否する場合 、次にこの行のコメントを解除し、 falseを変更します trueに 。

RejectFailures true

次の行を見つけます。

# RequiredHeaders  false

次のように変更します:

RequiredHeaders    true

これにより、RFC5322で説明されている電子メールヘッダー標準に準拠していない電子メールが拒否されます。たとえば、受信メールに From:がない場合 ヘッダーまたはdate: ヘッダー、それは拒否されます。 A From:ドメイン名を抽出できなかったフィールドも拒否されます。

デフォルトでは、CentOS / RHEL上のOpenDMARCは、電子メールヘッダー内のSPF結果をすべて無視し、SPFチェック自体を実行します。これは、次の2つのパラメータによって制御されます。

SPFIgnoreResults true

SPFSelfValidate true

メールサーバーで他のSPFチェックサービスを使用する場合は、OpenDMARCにメールヘッダーのSPF結果を信頼し、ヘッダーにSPF結果が見つからない場合にのみSPFチェックを実行するように指示します。

SPFIgnoreResults false

SPFSelfValidate true

ファイルを保存して閉じます。次に、OpenDMARCを再起動して、変更を有効にします。

sudo systemctl restart opendmarc

ステップ2:OpenDMARCをPostfixSMTPサーバーと統合する

OpenDKIMを使用する場合

Postfixのメイン設定ファイルを編集します。

sudo nano /etc/postfix/main.cf

CentOS 8 / RHEL 8で私のDKIMチュートリアルに従った場合、このファイルには次のような行が含まれているはずです。 OpenDKIMは<​​code>127.0.0.1:8891をリッスンしています 。

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters

ここで、PostfixがOpenDMARCと通信できるように、OpenDMARCソケットを追加する必要があります。 (OpenDKIMソケットの後にあることを確認してください。)OpenDMARCは 127.0.0.1:8893をリッスンします 。

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters

ファイルを保存して閉じます。次に、変更を有効にするためにPostfixを再起動します。

sudo systemctl restart postfix

Amavisを使用する場合

iRedMail のように、DKIMの署名と検証にAmavisを使用する場合 、その場合、OpenDMARCはAmavisからのDKIM検証結果を読み取ることができません。 OpenDKIMをインストールして、DKIM署名を検証できます。

EPEL(Enterprise Linux用の追加パッケージ)リポジトリからOpenDKIMをインストールします。

sudo dnf install epel-release

sudo dnf install opendkim

デフォルトでは、 opendkim CentOS / RHELのパッケージは、検証モードでのみ実行されます。送信メールにDKIM署名は追加されません。 AmavisがDKIM署名を追加するため、これが必要です。 OpenDKIM構成ファイルを編集します。

sudo nano /etc/opendkim.conf

次の行を見つけます。

KeyFile   /etc/opendkim/keys/default.private

OpenDKIMに送信メールに署名させたくないので、この行をコメントアウトしてから、ファイルを保存して閉じます。

Postfixのメイン設定ファイルを編集します。

sudo nano /etc/postfix/main.cf

このファイルの最後に次の行を追加して、Postfixがmilterプロトコルを介してOpenDKIMを呼び出すことができるようにします。 127.0.0.1を使用する必要があることに注意してください アドレスとして。 localhostは使用しないでください 。

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters

ファイルを保存して閉じます。次に、 postfixを追加します opendkimへのユーザー グループ。

sudo gpasswd -a postfix opendkim

postfixを再起動します サービス。

sudo systemctl restart postfix

これで、opendkimサービスを開始できます。

sudo systemctl start opendkim

また、起動時に自動起動を有効にします。

sudo systemctl enable opendkim

ステップ3:OpenDMARC検証のテスト

次に、他のメールアドレスからドメインアドレスにメールを送信します。その後、メールヘッダーを確認してください。 OpenDMARCが正しく機能している場合は、以下のようなDMARC検証結果を確認できます。

Authentication-Results: OpenDMARC; dmarc=pass (p=none dis=none) header.from=gmail.com

Gmailアカウントからドメインのメールアドレスにメールを送信しましたが、DMARC検証に合格しました。このメールヘッダーが表示されない場合は、メールログを確認してください。

sudo nano /var/log/maillog

以下のようなものが表示されます。これは、OpenDMARCが機能していることを意味します。

opendmarc[26495]: 61DAA3EA44: gmail.com pass

次のメッセージが表示された場合。

ignoring Authentication-Results at 1 from mail.linuxbabe.com

これは、OpenDMARCがSPFとDKIMの検証結果を無視しているため、OpenDMARCが機能していないことを意味します。 /etc/opendmarc.confに次の行を追加する必要があります ファイルを作成してから、OpenDMARCを再起動します。

TrustedAuthservIDs mail.yourdomain.com

Postfix myhostnameを変更した場合 パラメータ、TrustedAuthservIDsに新しいホスト名を追加することを忘れないでください。複数のホスト名をカンマで区切って追加できます。

TrustedAuthservIDs mail.yourdomain.com,mail2.yourdomain.com

Telnetを使用したOpenDMARCのテスト

telnetを使用して、paypal.comなどの別のドメイン名をスプーフィングできます。まず、次のコマンドを実行して、メールサーバーのポート25に接続します。

telnet mail.yourdomain.com 25

次に、次の手順を使用してなりすましメールを送信します。 (太字のテキストを入力します。)

HELO mail.paypal.com
250 mail.yourdomain.com
MAIL FROM:<[email protected]>
250 2.1.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From:     [email protected]
To:       [email protected]
Subject:  Please update your password.

Click this link to update your password.
.
550 5.7.1 rejected by DMARC policy for paypal.com
quit

ご覧のとおり、私のメールサーバーはDMARCチェックに合格せず、Paypalが p =require を導入したため、このメールを拒否しました。 ポリシー。

注: ドメインのDMARCポリシーがp=quarantineに設定されている場合 、その後、OpenDMARCmilterはなりすましメールをPostifx hold queue に入れます 無期限に。ポストマスターは、 postqueue -p を使用して、キュー内のすべてのメッセージを一覧表示できます。 コマンドを実行し、 postsuperを使用します 保留キュー内のメッセージを解放するコマンドラインユーティリティ。

(オプション)Milterを介してAmavisとPostfixを統合する

前提条件のセクションで説明したように、AmavisからOpenDKIMに切り替えることをお勧めしますが、切り替えたくない場合は、OpenDMARCがAmavisからDKIM検証結果を読み取れるように、ミルターインターフェイスを介してAmavisをPostfixと統合する必要があります。

amavisd-milterをインストールします CentOS/RHELのパッケージ。

sudo dnf install amavisd-milter

サービスを開始します。

sudo systemctl start amavisd-milter

起動時に自動起動を有効にします。

sudo systemctl enable amavisd-milter

Amavisd-milterは、 /run/amavisd/amavisd-milter.sockにあるUnixソケットでリッスンします。 。 Postfixのメイン設定ファイルを編集します。

sudo nano /etc/postfix/main.cf

ファイルの最後に次の行を追加します。 OpenDMARCTCPソケットの前にamavisd-milterUnixソケットを配置する必要があることに注意してください。

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:/run/amavisd/amavisd-milter.sock,inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters

また、次の行をコメントアウトして、Postfixが受信メールをAmavisに2回渡さないようにします。

content_filter = smtp-amavis:[127.0.0.1]:10024

ファイルを保存して閉じます。次に、 postfixを追加します amavisへ グループなので、PostfixはAmavisUnixソケットにアクセスできるようになります。

sudo gpasswd -a postfix amavis

認証されたユーザーから送信された送信メールは、ミルターインターフェイスを介してAmavisに渡されるべきではありません。AmavisはDKIM署名を追加しないためです。 127.0.0.1:10026を使用する必要があります いつものように、DKIM署名が追加されます。 Postfixmaster.cfファイルを編集します。

sudo nano /etc/postfix/master.cf

送信を見つける 成分。 CentOS / RHELに関するAmavisチュートリアルに従った場合、次のようになります。

submission     inet     n    -    y   -    -    smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_tls_wrappermode=no
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_sasl_type=dovecot
 -o smtpd_sasl_path=private/auth
 -o content_filter=smtp-amavis:[127.0.0.1]:10026

最後に次のオプションを追加します。

-o smtpd_milters=

このように:

submission     inet     n    -    y   -    -    smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_tls_wrappermode=no
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_sasl_type=dovecot
 -o smtpd_sasl_path=private/auth
 -o content_filter=smtp-amavis:[127.0.0.1]:10026
 -o smtpd_milters=

これにより、Postfix送信サービスはmilterをまったく使用しないため、認証されたユーザーから送信されたメールがmilterインターフェースを介してAmavisに渡されることはありません。等号(=)の前にスペースを追加しないでください。

この行もsmtpsに追加する必要があります コンポーネント。

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o content_filter=smtp-amavis:[127.0.0.1]:10026
  -o smtpd_milters=

ファイルを保存して閉じます。変更を有効にするには、Postfixを再起動します。

sudo systemctl restart postfix

これで、OpenDMARCはAmavisからDKIM検証結果を読み取ることができるようになり、Amavisは認証されたユーザーのDKIM署名を引き続き追加します。


Cent OS
  1. CentOS 7 /RHEL7でホスト名を設定または変更する方法

  2. CentOS6VPSにDKIMをOpenDKIMおよびPostfixとインストールして統合する方法

  3. CentOS/RHEL 7 で NetworkManager を使用してカスタム インターフェイス名を設定する方法

  1. RHEL 8 /CentOS8にpostfixメールサーバーをインストールする方法

  2. RHEL 8 /CentOS8はfirewalldでFTPポート21を開きます

  3. CentOS7でFirewallDを使用してファイアウォールを設定する方法

  1. CentOS7でNginxサーバーブロックを設定する方法

  2. CentOS7にApacheを使用してWordPressをインストールする方法

  3. CentOS8でNginxサーバーブロックを設定する方法