さくら 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 設定を行ないます。
- $ ufw status
設定と動作状況を表示します。
$ sudo ufw status
ufw ファイアウォールが
動作中であれば「アクティブ」
動作していなければ「非アクティブ」
が表示されます。
また、ルールが設定されている場合は適用中のルール一覧が表示されます。
最初は「非アクティブ」が表示されるはずです。
- $ ufw enable/disable
ファイアウォールを
有効にするには「ufw enable」
無効にするには「ufw disable」
を実行します。
最初は「非アクティブ」になっていますので、
$ sudo ufw enable
でファイアウォールを有効にします。
最初にファイアウォールを有効にすると設定が完了するまで SSH で再度入れなくなります。
SSH で入っているときは SSHを切断しないでください。
要注意です。
入力したまま作業を続行してください。 - $ ufw default
ポリシー(基本方針)を設定します。
・「allow」
ルールにマッチした通信を破棄します。
ルールにマッチしなかった通信を許可します。
・「deny」
ルールにマッチした通信を許可します。
ルールにマッチしなかった通信を破棄します。
最初の設定はこの「deny」に設定されています。
よって、何のル-ル設定もなくufw をアクティブにすると SSH パケットも破棄され再度入れなくなります。
・「reject」
ルールにマッチした通信を許可します
ルールにマッチしなかった通信を拒否してエラーを返します。
今回は、指定 IP アドレスの通信を破棄or拒絶、その他の通信は許可したいのですから、 ポリシーは「allow」に設定します。
エラ-すら返したくありませんので無言で破棄します。
よって
$ sudo ufw default allow
とします。 - 拒否 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
のように指定します。 - さくら VPS メ-ルサ-バ DKIM 追加 に進む
- メ-ルクライアントの設定 に戻る
- POP/IMAP over SSL に戻る
- Postfix 接続再テスト に戻る
- SMTP over SSL/TLS に戻る
- OP25B 問題の対応 に戻る
- Dovecot インスト-ル に戻る
- SMTP 認証 に戻る
- Postfix インスト-ル確認 に戻る
- メ-ルユ-ザ追加 に戻る
- SSL 証明書の取得準備 に戻る
- DNS 逆引き SPF 設定 に戻る
- さくら VPS メ-ル サ-バ作成準備 に戻る
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 を追加していきたいと思います。