サーバへ色々なユーザ名でログイン試行してくる攻撃が辞書攻撃です。
辞書攻撃で使用されているユーザ名の中には、自分のサーバには存在していないものもあります。
その中でも特に、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
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
enabled = true
filter = secure_usercheck
action = file-output[name=USERCHECK]
logpath = /var/log/secure
bantime = 604800
findtime = 86400
maxretry = 3
コメント