このユーザへのログイン試行はアウト!fail2banで明らかな辞書攻撃をブロックするルール

ALL
スポンサーリンク

サーバへ色々なユーザ名でログイン試行してくる攻撃が辞書攻撃です。
辞書攻撃で使用されているユーザ名の中には、自分のサーバには存在していないものもあります。
その中でも特に、admin や test というユーザ、これらへの試行があったら、明らかに辞書攻撃です。

ここでは、fail2ban でそのようなユーザ名へのログイン試行をしてくる接続元を、ブロックするルールを紹介します。
サーバのユーザが時々パスワードミスするのと違い、明らかな攻撃なので、検出は厳しく、ブロック期間は長くします。
fail2ban については、以下で説明しているので参照してみてください。

しつこい攻撃を fail2ban でブロックする パソコン鳥のブログ
Fail2banのルールの書き方 パソコン鳥のブログ

以下の secure_usercheck.conf を新規作成、jail.conf は末尾に追加します。
secure_usercheck.conf の __ngusers には、ブロックするユーザ名を記述して下さい。|で区切って複数記述できます。
ここで記述したユーザ名でログイン試行が対象となります。

下記例では、1日に3回、admin、backup、mysql、test へのログイン試行があると、その接続元を1週間ブロックします。

作業後、fail2ban を再起動します。
CentOS6の場合は /etc/init.d/fail2ban restart、CenOS7 の場合は service fail2ban restart してください。

これで、admin や test といったユーザでログインしようとする、明らかに辞書攻撃をしてきている接続元をブロックできます。

/etc/fail2ban/filter.d/secure_usercheck.conf

[INCLUDES]

before = common.conf

[Definition]
__ngusers = (admin|backup|mysql|test)

failregex = Failed password for invalid user %(__ngusers)s from .*$
            authentication failure; .+ruser=%(__ngusers)s rhost=.*$
            Invalid user %(__ngusers)s from .*$

ignoreregex =

/etc/fail2ban/jail.conf

[secure-usercheck]

enabled  = true
filter   = secure_usercheck
action   = file-output[name=USERCHECK]
logpath  = /var/log/secure
bantime  = 604800
findtime = 86400
maxretry = 3

コメント