不正アクセスってなんだろう
これはメールサーバー(dovecot)への辞書攻撃のログです。
ログとはサーバーへの足跡や動作記録の事です。
サーバーは常に不正アクセス攻撃にさらされています。
あの手この手で悪い人たちがサーバーを乗っ取ろうとしてきます。
user=<>の中をいろいろ変えて辞書攻撃を行ってますね。
これがユーザー名やパスワードを固有名詞にしてはいけない理由です。
そのような事前の攻撃の予兆をいち早く察知する為にも日頃のログ管理が
大切になってきます。
自動化のすすめ
ログをチェックするのはサーバー管理者としての仕事の1つですが
出来る限りルーティンワークとなるもので自動化できるものは
特にサーバー/PCまわりは自動化したほうがいいです。
毎日たった5分の作業だったとしても自動化を。
新しい事やひらめきに集中できるだけでなく、精神的な負担が減り時間の節約以上の効果があるからです。
不正アクセス撲滅ツール fail2ban
そんなわけで『fail2ban』のおすすめです。
※fail2banでのフィルターの設定はインデントが必要です。
フィルターの設定ではブログの都合上折り返し表記になっているものは1行に納める。
2行目以降はインデントを打って中央よりになるように修正して設定してください。
[bash]
# yum install fail2ban
Installed:
fail2ban.noarch 0:0.8.7.1-1.el6.rf
Dependency Installed:
gamin-python.x86_64 0:0.1.10-9.el6
[/bash]
[bash] # service fail2ban start
fail2ban を起動中: [ OK ] [/bash]
dovecotフィルターの作成。
[bash]
# vi /etc/fail2ban/filter.d/dovecot.conf
failregex = .*(?:pop3-login|imap-login):.*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
※以下を追加します。
auth: pam\(.*,<HOST>\): unknown user
auth: Debug: pam\(.*,<HOST>\): lookup service=dovecot
imap-login: Disconnected \(auth failed, 1 attempts\): user=\<.*\>, method=.*, rip=<HOST>, lip=.*
auth: Debug: client in: AUTH\#.*\#011PLAIN\#.*service=imap\#.*\#011rip=<HOST>\#.*port=143\#.*rport=.*\#.*resp=<hidden>
※ここまで
[/bash]
正規表現を少し学べばfail2banのフィルターは比較的簡単に作れるのでチャレンジしてみてください。
[bash] # vi /etc/fail2ban/jail.conf※末尾に追加します。
[dovecot] enabled = truefilter = dovecot
action = iptables-multiport[name=dovecot, port=”smtp,smtps,submission,pop3,pop3s,imap,imaps”, protocol=tcp] sendmail-whois[name=dovecot, dest=kanrisha@gmail.com] logpath = /var/log/maillog
maxretry = 5
findtime = 1200
bantime = 1200
#ホワイトリスト設定
ignoreip = 127.0.0.1 10.0.0.0/8 192.168.0.0/16 172.16.0.0/16
[/bash]
filter /etc/fail2ban/filter.d/配下のdovecot.confを使用
action = filter規制されたホストがどうなるかを設定
dest=の後に通知したいアドレスを設定しましょう。
logpath フィルターが検索する対象のログの場所
bantime 規制されたホストのアクセス不能時間
ignoreip 規制除外IP(ホワイトリスト)
5回失敗で20分間メール関係(dovecot)のアクセスを禁止する設定を行いました。
ホワイトリストの設定がポイントです。
社内で設置する(オンプレミス)事を想定して作っておきます。
規制を行うなら抜け道をあけたり、解除する方法も把握しておかないと
大変な事になります。
/etc/fail2ban/filter.d/dovecot.conf
にフィルターがあり
[/bash]
という正規表現で規制するログメッセージを定義しています。
このように倣って規制したいログを追加していけば柔軟にフィルターが作成できます。
フィルターを指定したりオリジナルのものも作れますので
ログさえ取得できていればメールサーバーだけでなく、WebサーバーやFTPなどさまざまなものに対して設定できます。
チェインが追加されたか確認する。
[bash]# iptables -L[/bash]フィルター確認コマンドです。
[bash] fail2ban-regex /var/log/maillog /etc/fail2ban/filter.d/dovecot.conf[/bash]
試しにわざと5回連続でログイン失敗させてみます。
メール通知がきましたね。
解除するには20分待つか、ホワイトリストに規制されたIPを追加して
[bash]
# service fail2ban restart
[/bash]
で再起動させればすぐに規制解除されます。
/etc/fail2ban/filter.d/
に各種フィルターがあるのでそれぞれに正規表現を変更していって
対応出来ますね。fail2ban便利☆
実際にfail2banがメールサーバに不正アクセスした者をフィルターした際の通知。
大概はやる気をなくして諦めてくれますが
あまりにしつこいIPに対してはTCP Wrapperで永久に全アクセス禁止にしちゃいましょう。
番外編 postfixの不正アクセス対策は
ついでなのでpostfixのフィルターの設定方法もご紹介します。
[bash] # vi /etc/fail2ban/filter.d/postfix.conf# Values: TEXT
#
failregex = reject: RCPT from (.*)\[<HOST>\]: 554
(?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed
※以下を追加します
warning: Connection rate limit exceeded: .*\[<HOST>\].*
statistics: max connection count .* \(smtp:<HOST>\) .*
NOQUEUE: reject: RCPT from unknown\[<HOST>\]: .*
warning: <HOST>: address not listed for hostname .*
statistics: max recipient rate .*\/.*s for \(smtp:<HOST>\) at .*
warning: <HOST>\: address not listed for hostname .*
lost connection after RCPT from unknown\[<HOST>\]
[/bash]
[bash]
# vi /etc/fail2ban/jail.conf
※以下を末尾に追加します。
[postfix] enabled = truefilter = postfix
action = iptables-multiport[name=postfix, port=”smtp,smtps,submission,pop3,pop3s,imap,imaps”, protocol=tcp] sendmail-whois[name=postfix, dest=kanrisha@gmail.com] logpath = /var/log/maillog
maxretry = 5
findtime = 1200
bantime = 1200
#ホワイトリスト設定
ignoreip = 127.0.0.1 10.0.0.0/8 192.168.0.0/16 172.16.0.0/16
[/bash] [bash] # service fail2ban restart
[/bash]
※ 弊社ではメールサーバーシステムの構築も承っています。
お気軽にご相談ください。