さくら VPS メ-ル サ-バ

さくら VPS メ-ルサ-バ セキュリティ強化

メ-ルサ-バのセキュリティ強化をします。
メ-ルサ-バを立ち上げるとすぐに悪い輩が集まってきます。
彼らはメ-ルサ-バ検索ソフトを有し、セキュリティの弱いメ-ルサ-バを探しています。
見つけるとこのメ-ルサ-バを悪用して、迷惑メ-ルやフィシングメ-ルを送信します。
基本 25 番ポ-トはセキュリティの弱いメ-ルサ-バはほぼ無防備なので、踏み台にされやすいのです。
私の場合、Postfix をインスト-ルしたとたん、悪い輩が集まってきました。
この状況は、/var/log/mail.log を見ればわかります。
シリアルコンソ-ル(β版)を開き、
yamada@ik*-***-*****:~$ cat /var/log/mail.log
とすれば、大量のログファイルを閲覧することができます。
余りに多くて表示画面が滝のように流れます。
一部を抜粋すると以下のようになります。


  Sep  4 16:59:45 ik*-***-***** postfix/smtpd[28414]
   : warning: unknown[212.70.149.83]
   : SASL LOGIN authentication failed: UGFzc3dvcmQ6
  Sep  4 16:59:46 ik*-***-***** postfix/smtpd[28414]
   : disconnect from unknown[212.70.149.83]
     ehlo=1 auth=0/1 rset=1 quit=1 commands=3/4
  Sep  4 16:59:49 ik*-***-***** postfix/smtpd[28410]
   : warning: unknown[212.70.149.52]
   : SASL LOGIN authentication failed: UGFzc3dvcmQ6
  Sep  4 16:59:49 ik*-***-***** postfix/smtpd[28435]
   : warning: unknown[212.70.149.20]
   : SASL LOGIN authentication failed: UGFzc3dvcmQ6
  Sep  4 16:59:50 ik*-***-***** postfix/smtpd[28410]
   : disconnect from unknown[212.70.149.52]
     ehlo=1 auth=0/1 rset=1 quit=1 commands=3/4
  Sep  4 16:59:50 ik*-***-***** postfix/smtpd[28435]
   : disconnect from unknown[212.70.149.20]
     ehlo=1 auth=0/1 rset=1 quit=1 commands=3/4
  Sep  4 17:00:02 ik*-***-***** postfix/smtpd[28397]
   : connect from unknown[212.70.149.83]
  Sep  4 17:00:05 ik*-***-***** postfix/smtpd[28414]
   : connect from unknown[212.70.149.52]
  Sep  4 17:00:06 ik*-***-***** postfix/smtpd[28410]
   : connect from unknown[212.70.149.20]
  Sep  4 17:00:12 ik*-***-***** postfix/smtpd[28397]
   : warning: unknown[212.70.149.83]
   : SASL LOGIN authentication failed: UGFzc3dvcmQ6
  Sep  4 17:00:14 ik*-***-***** postfix/smtpd[28397]
   : disconnect from unknown[212.70.149.83]
     ehlo=1 auth=0/1 rset=1 quit=1 commands=3/4
  Sep  4 17:00:15 ik*-***-***** postfix/smtpd[28410]
   : warning: unknown[212.70.149.20]
   : SASL LOGIN authentication failed: UGFzc3dvcmQ6
  Sep  4 17:00:16 ik*-***-***** postfix/smtpd[28414]
   : warning: unknown[212.70.149.52]
   : SASL LOGIN authentication failed: UGFzc3dvcmQ6
  Sep  4 17:00:16 ik*-***-***** postfix/smtpd[28410]
   : disconnect from unknown[212.70.149.20]
     ehlo=1 auth=0/1 rset=1 quit=1 commands=3/4

一旦 connect するものの、その後 disconnect され auth=0/1 になっているところを見ると どうも Auth 認証ではねられてメ-ルサ-バには入れていないようです。
悪さをしている IP アドレスは集団を組んで攻めているようです。
それは
212.70.149.83
212.70.149.52
212.70.149.20
の三つです。
もっと古いログを解析するとこのほかにも
212.70.149.4
212.70.149.36
も同じく仲間とわかりました。
よって、これらの IP アドレスは私のサ-バに一歩足りとも入れないようにします。
すべてのポ-トにおいて門前払いすることにします。


指定 IP アドレス門前払い

Linuxカーネルには Netfilter というパケットフィルタリング機能が備わっていて、 通信経路を流れるパケットを検査しています。
主な通信経路には、外部から Linux へ入ってくる「入力」、Linux から外部へ出ていく「出力」、 別のホストへ転送する「転送」があり、これら3つの通信経路に対してパケットフィルタリング のルールを適用します。
例えば、外部から入ってくるパケット(Ubuntu Server へ向かうパケット)は「入力」に設定されたルール と照合され、ルールにマッチすれば許可、または拒否されます。
すべてのルールにマッチしなかったパケットは、デフォルトの設定(ポリシー)に従って処理されるため、 ポリシーが「破棄」であれば、パケットが破棄されます。
パケットフィルタリングには iptables コマンドを使うのが一般的ですが、 Ubuntu Serverではより簡単にファイアウォールを設定できる ufw が用意されています。
基本的にはファイアウォールは
パケットフィルタ設定
におまかせですが、開いているポ-トには誰でも入ることができる設定になっています。
今回は ufw で特定の IP アドレスは拒絶できるようにします。
すなわち、さくら VPS パケットフィルタ と ufw の連携で、指定 IP アドレスを門前払いします。
ufw の使い方は
Ubuntuのファイアウォール設定について詳しく調べてみた
に行くと詳細が書かれています。

ufw 設定

指定 IP アドレス門前払いのための ufw 設定を行ないます。

  1. $ ufw status

    設定と動作状況を表示します。
    $ sudo ufw status
    ufw ファイアウォールが
    動作中であれば「アクティブ」
    動作していなければ「非アクティブ」
    が表示されます。
    また、ルールが設定されている場合は適用中のルール一覧が表示されます。
    最初は「非アクティブ」が表示されるはずです。

  2. $ ufw enable/disable

    ファイアウォールを
    有効にするには「ufw enable」
    無効にするには「ufw disable」
    を実行します。
    最初は「非アクティブ」になっていますので、
    $ sudo ufw enable
    でファイアウォールを有効にします。
    最初にファイアウォールを有効にすると設定が完了するまで SSH で再度入れなくなります。
    SSH で入っているときは SSHを切断しないでください。
    要注意です。
    入力したまま作業を続行してください。

  3. $ ufw default

    ポリシー(基本方針)を設定します。
    ・「allow」
     ルールにマッチした通信を破棄します。
     ルールにマッチしなかった通信を許可します。
    ・「deny」
     ルールにマッチした通信を許可します。
     ルールにマッチしなかった通信を破棄します。
     最初の設定はこの「deny」に設定されています。
     よって、何のル-ル設定もなくufw をアクティブにすると SSH パケットも破棄され再度入れなくなります。
    ・「reject」
     ルールにマッチした通信を許可します
     ルールにマッチしなかった通信を拒否してエラーを返します。

    今回は、指定 IP アドレスの通信を破棄or拒絶、その他の通信は許可したいのですから、 ポリシーは「allow」に設定します。
    エラ-すら返したくありませんので無言で破棄します。
    よって
    $ sudo ufw default allow
    とします。

  4. 拒否 IP アドレス指定

    ポリシー(allow)にマッチする、拒否する IP アドレスを指定します。
    $ sudo ufw deny from XXX.XXX.XXX.XXX to any port ****
    to 以下は省略するとすべてのポ-トが対象。
    $ sudo ufw deny from XXX.XXX.XXX.0/24
    とすると
    XXX.XXX.XXX.0 ~ XXX.XXX.XXX.255
    が対象。
    今回は、
    $ sudo ufw deny from 212.70.149.0/24
    としました。
    まれには、IPv6 の場合もあります。
    そんなときは、
    $ sudo ufw deny from 240e:d9:d800:200::d4
    のように指定します。 

  5. ufw 設定確認

    設定を確認します。
    $ sudo ufw status verbose
    とすると

       
      yamada@ik*-***-*****:~$ sudo ufw status verbose
      [sudo] ****** のパスワード:
      状態: アクティブ
      ロギング: on (low)
      Default: allow (incoming), allow (outgoing), disabled (routed)
      新しいプロファイル: skip
    
      To                         Action      From
      --                         ------      ----
      Anywhere                   DENY IN     212.70.149.0/24
    

    となります。

    ufw ログ確認

    ログの場所は
    /var/log/syslog と /var/log/ufw.log
    の両方に吐き出されます。
    syslog は他のシステムログと混じるので、 ufw.log の方を見るのがわかりやすいと思います。
    ログの読み方は
    ufw のログの読み方
    に行くと詳しく書かれています。
    SRC が source 送信元の IP アドレスを指しますので、 頻繁にアクセスしてくるなら ufw で拒否する IP アドレスとして指定しましょう。
    DPT は Destination Port、送信先のポート番号を示します。
    例えば DPT=8088 とすれば
    相手側は 8088番ポートにアクセスしようとして ufw にブロックされたことがわかります。

    ここまでで何とかメ-ルサ-バとして動作するようになりました。
    やっと完成となりました。
    引き続き、メ-ルサ-バに DKIM を追加していきたいと思います。


  6. さくら VPS メ-ルサ-バ DKIM 追加 に進む
  7. メ-ルクライアントの設定 に戻る
  8. POP/IMAP over SSL に戻る
  9. Postfix 接続再テスト に戻る
  10. SMTP over SSL/TLS に戻る
  11. OP25B 問題の対応 に戻る
  12. Dovecot インスト-ル に戻る
  13. SMTP 認証 に戻る
  14. Postfix インスト-ル確認 に戻る
  15. メ-ルユ-ザ追加 に戻る
  16. SSL 証明書の取得準備 に戻る
  17. DNS 逆引き SPF 設定 に戻る
  18. さくら VPS メ-ル サ-バ作成準備 に戻る
  19. 70VPS に戻る