ユーザーが無効なユーザー名としてログインしようとしたときにIPアドレスを自動的にブロックする方法はありますか?私は既に持っています:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 31536000
/etc/fail2ban/jail.conf
Fail2banを支援することはできませんが、まさにこの目的のためにdenyhostsを使用しています。非常に多くのパラメーターを調整でき、他の不良ホストを送受信できる分散データベースもあります。
詳細なハウツーは次のとおりです。
denyhosts
パッケージをインストール(Sudo apt-get install denyhosts
)
/etc/denyhosts.conf
のデフォルト設定を見てください。DENY_TRESHOLD_INVALID
、DENY_TRESHOLD_VALID
、およびDENY_TRESHOLD_ROOT
オプションに興味があるかもしれません。
同期サーバーについては、デフォルトで無効になっているため、SYNC_SERVER
オプションのコメントを外して有効にする必要があります。
また、PURGE_DENY
オプションを1wに設定することも悪くありません。自分でブロックアウトする場合は、1週間後にエントリが削除され、再度ログインできるようになります。
これは fail2ban
では意図的にサポートされていません :
つまり、無効なユーザーは2回試行され、有効なユーザーの無効なパスワードは5回試行されます。 fail2banではどのようにできますか?
これに反対する説得力のある主張は、攻撃者がユーザー名が有効かどうかを知ることができるため、ブルートフォース攻撃の検索スペースが劇的に減少するということです。
同じことをしようとしているときにあなたの質問を見つけましたが、今では気が変わりました。秘密の利益とは別に、攻撃者を早期に遮断して時間を節約するのはなぜですか?
Fail2Banなどを使用するのではなく、すべてのルートログインをSSHで完全に拒否しないのはなぜですか?そうすることで、rootログインの使用を拒否することで、block全員の問題を取り除くことができます。なぜなら、rootパスワードを推測してもログインを拒否するからです。試行回数に関係なく。
/etc/ssh/sshd_config
で、PermitRootLogin
を含む行を見つけます。任意のテキストエディターで編集しますが、必ずSudo
/gksudo
(GUIテキストエディターを使用している場合のみgksudo)を使用してください。私が言及したその行をPermitRootLogin no
と言ってから保存し、Sudo service ssh restart
を実行します。
(この回答は、誤って記述された最初の質問のために書かれました。この回答は、回答する能力を超えているため、修正された質問と一致するように変更されません。
まず、filter.d/sshd-invaliduser.conf
で無効なユーザーのフィルターを定義します。
[INCLUDES]
before = common.conf
[Definition]
_daemon = sshd
failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user .*? from <Host>(?: port \d+)?\s*$
ignoreregex =
[Init]
journalmatch = _SYSTEMD_UNIT=sshd.service + _COMM=sshd
次に、jail.local
で有効にします。
[sshd-invaliduser]
enabled = true
maxretry = 1
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
これは、Debian 9のfail2ban 0.9.6-2で機能します。