postfix スパムに踏み台にされて防いだ後2

その後もスパムにあってるかもしれないと、ログを定期的にみています。それにしても世の中には、踏み台にしようとサーバに日々、アタックされているんですね。こういうのってむやみやたらに怖がっている人が多すぎて、実態の掴めない世界と感じているエンジニアは多いはず。メールサーバは使わないにしても、自分で立ててみた方が身にしみるんじゃないだろうか。

 

前回の「フローコントロール、レートコントロール」について、もうちょっとふみこんで実装を記載します。前紹介したサイトは参考になりますが、古いホームページだからかもしれませんが、イマイチこうしろ!っていう記載の仕方が緩いです。要するにどうするの?って読んでて思っちゃいます。

 

ともあれ、記載はmain.cfの最後当たりに追記します。

vi /etc/postfix/main.cf

 

以下は、HELLOとかいうログをみたことあるかもしれませんが、スパムのアタック目的のHelloコマンドの疎通確認で、ある条件の時にNGを返す処理みたいです。

smtpd_helo_restrictions = reject_invalid_hostname,

                          reject_non_fqdn_hostname,

                          reject_unknown_hostname

 記載の意味は以下、

reject_invalid_hostname: 

HELOコマンドで提供されるホスト名が有効なホスト名でない時拒否 拒否応答コード501

reject_non_fqdn_hostname:

HELOコマンドで提供されるホスト名がRFCで必須とされる完全修飾名の形式でない時、要求を拒否。拒否応答コード504

reject_unknown_hostname:

HELOコマンドで提供されるホスト名がAレコードもMXレコードも無い時要求を拒否。拒否応答コード450(unknown_hostname_reject_codeで指定も)

 

だ、そうです。ただ偽装できるし不十分だって、一般人はHelloしないからHello自体ブロックしてもいい気がするけどメールソフトとかが使うのかね??

 

つづいて、非凡なアクセスしてくるヤツをブロックする記載

smtpd_client_connection_rate_limit = 3

anvil_rate_time_unit = 60s

 

smtpd_soft_error_limit = 3

smtpd_hard_error_limit = 5

smtpd_error_sleep_time = 20s

 

smtpd_client_message_rate_limit = 6

smtpd_client_recipient_rate_limit = 6

 自分は上記の様にしました。

smtpd_client_connection_rate_limitと、anvil_rate_time_unit:

同一クライアントが60秒間に、3回接続してきたら接続MAXってことでブロックされます。自分しか見ないし、そんなに接続しないし、それ以外はスパム扱いでいいかなと。実際仕事でメールしてても、そのくらいで十二分なはず。

 

smtpd_soft_error_limit、smtpd_hard_error_limit、smtpd_error_sleep_time:

smtpd_soft_error_limitの設定回数だけエラーを時間内にだしたら、スリープ分アカウント停止します。その後もsmtpd_hard_error_limitの設定回数だけエラーを出したら、接続を解除します。時間内というのは「anvil_rate_time_unit = 60s」です。60s設定でスリープも考慮して、smtpd_hard_error_limitに達するのはスパムだけです。

 

smtpd_client_message_rate_limit、smtpd_client_recipient_rate_limit:

60秒間に6通のメールと6箇所宛先におくれるという設定です。

smtpd_client_connection_count_limitなどで、接続数も絞る事ができます。

但しこれ、通常は数字を制限しまくることは難しいです。なぜなら多数にメールを送信するなど、仕事上であるはずだからです。自分は個人なのでここをキュッと絞れば、被害がでても小さく済ます事ができますが...そのため、上のlimit系の方が有効なはずです。