不正アクセス対策

不正アクセス撲滅委員会 fail2ban dovecot postfix

不正アクセス対策

不正アクセスってなんだろう

不正アクセス禁止

fail2ban

これはメールサーバー(dovecot)への辞書攻撃のログです。
ログとはサーバーへの足跡や動作記録の事です。

サーバーは常に不正アクセス攻撃にさらされています。
あの手この手で悪い人たちがサーバーを乗っ取ろうとしてきます。
user=<>の中をいろいろ変えて辞書攻撃を行ってますね。
これがユーザー名やパスワードを固有名詞にしてはいけない理由です。

そのような事前の攻撃の予兆をいち早く察知する為にも日頃のログ管理が
大切になってきます。

自動化のすすめ

ルーティンワークからの解放

ログをチェックするのはサーバー管理者としての仕事の1つですが
出来る限りルーティンワークとなるもので自動化できるものは
特にサーバー/PCまわりは自動化したほうがいいです。

毎日たった5分の作業だったとしても自動化を。

新しい事やひらめきに集中できるだけでなく、精神的な負担が減り時間の節約以上の効果があるからです。

不正アクセス撲滅ツール fail2ban

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 = true
filter = 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)のアクセスを禁止する設定を行いました。

ホワイトリストの設定がポイントです。
社内で設置する(オンプレミス)事を想定して作っておきます。
規制を行うなら抜け道をあけたり、解除する方法も把握しておかないと
大変な事になります。

[bash]# service fail2ban restart[/bash]

/etc/fail2ban/filter.d/dovecot.conf
にフィルターがあり

[bash] failregex = .*(?:pop3-login|imap-login):.*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P\S*),.*
[/bash]

という正規表現で規制するログメッセージを定義しています。
このように倣って規制したいログを追加していけば柔軟にフィルターが作成できます。
フィルターを指定したりオリジナルのものも作れますので
ログさえ取得できていればメールサーバーだけでなく、WebサーバーやFTPなどさまざまなものに対して設定できます。

チェインが追加されたか確認する。

[bash]# iptables -L[/bash]

フィルター確認コマンドです。

[bash] fail2ban-regex /var/log/maillog /etc/fail2ban/filter.d/dovecot.conf
[/bash]

試しにわざと5回連続でログイン失敗させてみます。

fail2banGmail通知
メール通知がきましたね。
解除するには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 = true
filter = 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]


※ 弊社ではメールサーバーシステムの構築も承っています。
お気軽にご相談ください。

不正アクセス対策
最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG