現在、ルートを使用してすべてのsshログインをブロックしています。しかし、私はさらに一歩進んで、ルートとしてログインしようとしたクライアントのIPアドレスをブロックしたいと思いました。現在、denyhostsとfail2banを設定して動作していますが、denyhostsとfail2banを使用して、rootとしてログインしようとするユーザーのIPアドレスをブロックできますか?
ディストリビューションに応じて、/etc/fail2ban/jail.conf
を編集して[ssh]
セクションを更新し、次のように表示します
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
bantime = 3600
maxretry = 3
必要に応じてパラメーターを変更します。特にルートをブロックするわけではありませんが、失敗したすべての試みはブロックされます。 maxretry
とbantime
には注意してください。自分のパスワードで失敗した場合、maxtretry
を低に設定すると、bantime
のためにブロックされます。 fail2banを再起動します。
多くの試みは、一部の正当なユーザーを後でブロックする可能性がある動的IPから行われるため、IPを永久にブロックしようとはしません。
(一部のディストリビューションでは、変更用のjail.optionsファイルを提供しています。これは、confを上書きする更新の影響を受けないため、変更を配置するのに適した場所です。)
このコードを新しいファイル/etc/fail2ban/filter.d/sshd-root.confにコピーします。
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf
[Definition]
_daemon = sshd
failregex = ^%(__prefix_line)sFailed (?:password|publickey) for root from <Host>(?: port \d*)?(?: ssh\d*)?$
ignoreregex =
失敗したrootログイン試行を正確に特定するためにfailregexを編集する必要がある場合があることに注意してください-使用:
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd-root.conf
正しいログエントリを識別することをテストします。
次に、jail.localを編集して新しいフィルターを利用する必要があります-以下のようなものを追加します:
[ssh]
enabled = true
port = 1:65535
filter = sshd-root
logpath = /var/log/auth.log
bantime = 604800
maxretry = 3
もちろん、必要に応じてこれらの値を調整する必要があります。上記の設定では、rootとしてログオンを3回試行した後、問題のあるIPアドレスからのすべての着信パケットがドロップされ、1週間後に再びIPが解放されます。
デフォルトの/etc/fail2ban/filter.d/sshd.conf
には、AllowUsersおよびDenyUsersの正規表現がすでにあります...
...
^%(__prefix_line)sUser .+ from <Host> not allowed because not listed in AllowUsers\s*$
^%(__prefix_line)sUser .+ from <Host> not allowed because listed in DenyUsers\s*$
...
以下は:
exampleusername
からの接続を許可するroot
またはローカルネットワーク上の任意の接続(192.168.0。*)`/ etc/ssh/sshd_config 'という行:
AllowUsers exampleusername *@192.168.0.* *@localhost *@127.0.0.1
そして/etc/fail2ban/jail.conf
:
ignoreip = 127.0.0.1/8 192.168.0.2/255
...
...
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 1
findtime = 99999999
bantime = 99999999
Sshログインをどのようにブロックしましたか?/bin/falseまたはsshd_config DenyUsersオプション?
頭の中で答えを考えることはできませんが、IIRC denyhostsはログファイルを解析します。誰かが無効にしてrootにログインしようとした後で、ログファイルに失敗したエントリが表示されるかどうかを確認してください。