メールサーバーへの攻撃を防ぐ方法(Plesk編)

pleskのfail2ban管理画面

普段サーバーのログを見ていない人には分からないかもしれませんが、WEBサイトへの攻撃よりも、より頻繁に攻撃されるのがメールサーバーへの攻撃です。

とはいえ、メールサーバーが攻撃されているような気がするものの、どうしていいのか分からず不安でここを見に来た人もいらっしゃるかと思います。

今回は契約しているサーバーにPleskを導入しているものの、サーバーの事がよく分からない人(あるいは担当者が失踪してしまった人)向けに有用な情報としてfail2banを使ったメールサーバー攻撃への防御方法を公開します。

メールサーバーへの攻撃で起こる実害とは?

以下にあるように、ある意味WEBサイトへの攻撃よりも被害が深刻です。

  • 送信メールサーバー(SMTP)へ自分のアカウントで侵入されると、ウィルスメールやスパムメールを大量送信され、取引先や知人、その他大勢の人に迷惑をかけてしまう(犯罪に加担してしまう)
  • 受信メールサーバー(IMAP/POP3)へ侵入されると、メール内容が盗み見られ、パスワードや機密情報、プライベートな情報が知られて大きな被害を被る。
  • 辞書攻撃による執拗な接続により、サーバー同時接続数の上限に達してしまい、正当なユーザー(自分や社員など)がメールの送受信ができなくなってしまう。

とにかく、メールの送信簿や受信簿、アドレス帳は機密情報の宝庫なので、その被害の範囲は想像がつきません。絶対にアカウントを乗っ取られないようにしましょう。

まずはメールサーバーの種類を調べよう

Pleskでは、採用されているメールサーバーに大きく2つの構成があります。

構成 送信サーバー 受信サーバー
タイプ1 Qmail Courier-IMAP/POP3
タイプ2 Postfix Dovecot

自分のサーバーがどちらで運用されているかは「ツールと管理」の「サービス管理」から確認することができます。

メールサーバー構成タイプ1の場合

タイプ1の場合は、以下のように「Courier IMAP サーバ」「SMTP サーバ(QMail)」といったサービスが起動されています。

メールサーバー構成タイプ1

メールサーバー構成タイプ2の場合

タイプ2の場合は、以下のように「Dovecot IMAP および POP3 サーバ」「SMTP サーバ(Postfix)」といったサービスが起動されています。

メールサーバー構成タイプ2

この情報をみて、タイプ1の場合は「qmail + courier 」、タイプ2の場合は「postfix + dovecot」とメモしておくと良いでしょう。この後の防御方法のところで利用します。

「IPアドレスによるアクセス制限(Fail2ban)」を使う

「ツールと設定」から「IPアドレスによるアクセス制限(Fail2ban)

Pleskにはサーバーコンソール(コマンド操作)にアクセスしなくても、設定画面でさまざまな事ができるようになっています。
メールサーバーの攻撃を防ぐ場合、「ツールと設定」にある「IPアドレスによるアクセス制限(Fail2ban)」を利用します。

Fail2banというのは、メールサーバーを含む、色々なサーバーのアクセスログをリアルタイムに解析して、特定のフィルターに書かれた不正アクセスルールに一致した接続元のIPアドレスを檻(Jail)に入れてアクセスを一定期間禁止にするという、便利なサーバーアプリケーションです。

これがPleskには標準で備わっているのです、すばらしいですね。

メールサーバー用のjailを登録

というわけで、Fail2banでは檻(Jail)を登録しなければ始まらないので、まず「jail」タブで確認します。

fail2banのjailを確認(タイプ1)

タイプ別に以下のjailが必要なので、なければ「jailを追加」で追加する必要があります。

構成 必要なjail
タイプ1 plesk-qmail, plesk-courierlogin
タイプ2 postfix-sasl, plesk-dovecot

そこで「タイプ2」なのに「postfix-sasl」が入っていなかったと仮定して、追加方法を説明していきます。

fail2banでpostfix-saslのjailを登録

  1. 2の「フィルタ」で選択した「postfix-sasl」の名前をそのまま入力します(別名でも登録はできますが、ややこしくなるので)
  2. フィルタの一覧から「postfix-sasl…」を選択します。
  3. アクションで「iptables-allports」を選択し「追加」を押します。
  4. 3で追加された禁止ルールが表示されます(よく分からなくても大丈夫です)
  5. メールサーバーのログ(/var/log/maillog)を入力してください。
  6. 接続元(攻撃者)のIPアドレスをどれくらいの秒数アクセス禁止にするかを入力します。(86400だと1日、604800だと1週間、2592000だと1ヶ月)
  7. 何回攻撃してきたら禁止ルールを発動するかを決めます。1回であれば正しいユーザーが間違えてアクセスする可能性もありますが、メールサーバーの場合は不正アクセスでほぼ間違いないので1回、あるいは2回で良いでしょう。

問題なさそうであれば「OK」を押して登録します。

fail2banのjailをアクティブにする方法

jail「postfix-sasl」が登録できたので、チェックした状態で「オンにする」をクリックし「アクティブ」にします。

もし、アクセス禁止秒数や、攻撃回数の値を変更する場合は「postfix-sasl」の部分をクリックすると再度変更できます。

postfix-sasl設定変更

攻撃監視時間を設定する

Fail2banのjail設定で攻撃特定の回数は決まりましたが「どれくらいの時間でその回数攻撃がきたら発動するか」を決める必要があります。

たとえば、1日に2回のログイン試行であれば正当なユーザーの可能性もありますが、2秒で2回であれば明らかに不正ログイン(攻撃)と分かります。

ただ、昨今では接続元のIPアドレスを複数もった攻撃者がバラバラに不正ログイン攻撃をしかけるDDoS攻撃が流行っています。

そこでおすすめとしては、やや長めの時間(10分ちょっと)を設定するようにします。なぜかというと、10分(600秒)はデフォルトの設定になっており、攻撃者はそれを予測して時間を長めに、かつ最短ペースで攻撃をしかけてくるためです。

fail2banの検知する時間設定

「設定」タブをクリックし「攻撃を検知する期間」のところで秒数を設定します。(660秒=10分ちょっと)

「侵入検知を有効化」にチェックが入っていることも確認してください。

問題なければ「OK」を押して完了させます。

拒否されたIPアドレスを確認

うまくいけば以下のように「postfix-sasl」のjailに引っかかった(BANされた)IPアドレスが列挙されていき、メールサーバーが安定してくるはずです。

fail2ban-postfix-sasl-banip

このようにして、タイプ別の送信サーバー、受信サーバーのjailを有効にしてどんどんBANしていきましょう。

fail2banやPleskについてよく分からない方については有料でサポートも承ります。
お問い合わせよりお気軽にご連絡くださいませ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2018-11-15