サーバに日々くる不正アクセス、とても嫌ですよね。
私の場合SMTPサーバへの不正アクセスが大変激しいです。
私の場合SMTPサーバにはPostfix、認証にはSASLを使っていますので、放っておくと以下の様なログが大量発生します。
SASL PLAIN authentication failed: authentication failure
やら、
SASL LOGIN authentication failed: authentication failure
やら・・・。
安易なパスワードだと総当りでそのうち突破されかねないので、気づいたら早く対処しましょう。
使用するソフトはfail2banです。
ログファイルを監視し、不正にログイン試行しているIPを自動でブロックしてくれる優れものです!
fail2banのインストールと設定
まず以下の環境である場合の設定になります。
環境が異なると以下の設定では動かない場合があるので気をつけてください。
・デーモンはsystemd
・SMTP環境はpostfix + sasl認証
・ファイアウォールはfirewalld
OKでしたらお次へどうぞ!
epelリポジトリがなければ導入します。
1 |
yum install epel-release |
続いてfail2banをインストールします。
1 |
yum install fail2ban |
依存関係でfail2ban-systemdもインストールされるかと思います。
続いてfail2banの設定を行います。以下のファイルを新規作成して入力してください。
/etc/fail2ban/jail.local
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[DEFAULT] ignoreip = 127.0.0.1/8 192.168.0.0/24 bantime = 86400 findtime = 3600 maxretry = 5 backend = systemd usedns = yes [postfix-sasl] enabled = true port = smtp,465,submission,imap3,imaps,pop3,pop3s logpath = %(postfix_log)s bantime = 604800 findtime = 86400 maxretry = 4 |
[DEFAULT]以下に書いた内容が、共通の設定になります。
ignoreipには拒否しないIPアドレスを入力します。
findtime秒間のうちにmaxretry回接続に失敗するとbantime秒接続を拒否してくれます。
[postfix-sasl]以下でpostfix+SASL AUTHの認証失敗時の定義を行います。
enabled = true
を指定することで、SASL認証失敗でのブロックを有効にします。
また、このブロック内ではDEFAULTブロックで定義した値を個別に上書きすることができます。
今回の例だと86400秒のうちに4回以上失敗したら604800秒拒否する。ってな設定をしています。
そもこのpostfix-saslというのが何を表しているかというと、
/etc/fail2ban/filter.d/postfix-sasl.conf
の設定ファイルを指しています。
/etc/fail2ban/filter.d/
を見ていただければわかりますが、予め様々なフィルターが用意されており、それをjail.localの中で有効にしていくというのがfail2banの基本的な使い方です。
もちろんこのディレクトリの中にオリジナルの設定ファイルを作成すれば、オリジナルのフィルターを作成していくことができるので応用の幅は広いですね。
もし現在拒否されているリストを知りたければ
1 |
ipset --list fail2ban-postfix-sasl |
とかで確認できます。
とりあえず今日はSASL (PLAIN|LOGIN) authentication failedを一定回数以上したら拒否するエントリでした。
詳しくは公式サイトをご確認くださいましm(_ _m)