LoginSignup
8
12

More than 5 years have passed since last update.

Postfixでメールの踏み台対策を行う方法

Posted at

メールサーバをWebサイトを参考にしつつPostfix(メール送信ソフト) Dovecot(メール受信ソフト)を用いて適当に立ててみたものの、踏み台にされているという連絡がさくらVPSのabuse対策チームというところから入ったため対応を入れてみた。

因みにサーバ環境はCentOS6.9であった。

$ cat /etc/redhat-release
CentOS release 6.9 (Final)

初期対策

何はともあれメールサーバを止める。

# /etc/init.d/postfix stop

また、迷惑メールの踏み台にされたときには、大量のメールがメールサーバに対して送り付けられており、送信予備軍としてキューに溜まっているはずである。mailqコマンドで確認できるが、ともあれこのキューを以下のコマンドで一括削除してやる。

# postsuper -d ALL

postsuperはpostfixが管理するキューに対してメンテナンスを行うコマンドであるが、superという名前から分かるようにsuperuserしか使えないようなのでroot権限で処理は行おう。
また、メールログにも大量に溜まっているはずなので/var/log/maillogあたりを確認して削除しておこう。

SMTP認証を設定する

Postfixはデフォルトの状態では認証の仕組みを持っておらず、誰でもメールの送信依頼を出せる状態になっている。(このことをオープンリレー状態と呼ぶらしい)

自分以外からしか送れないようにするにはIPで制限をかけても良いが、常に固定のIPからメールを送信しなければならないので、ID/Passwordで制限を掛けてやるのが一般的な方法である。
そこでSASL(Simple Authentication and Security Layer、サスルと読む)という仕組みを使ってこのセキュリティ施策を実現する。

smtpd_sasl_auth_enable = yes
#匿名認証を許可しない = id/passwordの入力を必須とする。 
smtpd_sasl_security_options = noanonymous
#SMTP認証したときのみメール送信の受付を行う。
smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination

saslの立ち上げ及び、Linuxの再起動時に自動で立ち上がるようにしておく。またpostfixを再起動する。

# /etc/rc.d/init.d/saslauthd start
# chkconfig saslauthd on
# /etc/rc.d/init.d/postfix reload

これでひとまずSASL対応は完了。

しつこいアクセスをiptablesで遮断

これで踏み台にされる事はなくなったものの、特定IPアドレスからしつこくSMTP認証の要求が飛んでくる事が/var/log/mailLogを見ると確認された。こんな感じである。

Oct 14 12:36:04 myhost postfix/smtpd[29066]: connect from unknown[191.96.249.61]
Oct 14 12:36:10 myhost postfix/smtpd[29066]: warning: unknown[191.96.249.61]: SASL LOGIN authentication failed: authentication failure
Oct 14 12:36:10 myhost postfix/smtpd[28874]: connect from unknown[191.96.249.13]
Oct 14 12:36:11 myhost postfix/smtpd[29066]: disconnect from unknown[191.96.249.61]
Oct 14 12:36:16 myhost postfix/smtpd[28874]: warning: unknown[191.96.249.13]: SASL LOGIN authentication failed: authentication failure

まあ遮断できているから良いかと思うかもしれないが、頻繁に来られてはメールログで容量を食われてしまうのでIP tablesでこれらのIPからのアクセスを遮断してやる。次のサイトを参考にして設定してみる。https://www.sakura-vps.net/access_denied_specific_ipaddress/

# iptables -I INPUT -s 191.96.249.13 -j DROP
# iptables -I INPUT -s 191.96.249.61 -j DROP

設定できているかをiptables -Lで確認

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  191.96.249.61        anywhere
DROP       all  --  191.96.249.13        anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

変更を保存してrestart

# /etc/init.d/iptables save
# /etc/init.d/iptables restart

saveすると/etc/sysconfig/以下にiptablesファイルが生成されるので、これを直接編集しても良いかも。

# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Sun Oct 14 12:56:29 2018
*filter
:INPUT ACCEPT [1010:87284]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [573:1125512]
-A INPUT -s 191.96.249.61/32 -j DROP
-A INPUT -s 191.96.249.13/32 -j DROP
COMMIT
# Completed on Sun Oct 14 12:56:29 2018

IPフィルタだけではいたちごっこになってしまう可能性もあるが、ひとまずこれにて。何か良い方法はないものか。。

8
12
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12