web-dev-qa-db-ja.com

denyhostsまたはfail2banを使用してすべてのrootログイン試行をブロックする方法は?

現在、ルートを使用してすべてのsshログインをブロックしています。しかし、私はさらに一歩進んで、ルートとしてログインしようとしたクライアントのIPアドレスをブロックしたいと思いました。現在、denyhostsとfail2banを設定して動作していますが、denyhostsとfail2banを使用して、rootとしてログインしようとするユーザーのIPアドレスをブロックできますか?

8
samwell

ディストリビューションに応じて、/etc/fail2ban/jail.confを編集して[ssh]セクションを更新し、次のように表示します

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
bantime = 3600
maxretry = 3

必要に応じてパラメーターを変更します。特にルートをブロックするわけではありませんが、失敗したすべての試みはブロックされます。 maxretrybantimeには注意してください。自分のパスワードで失敗した場合、maxtretryを低に設定すると、bantimeのためにブロックされます。 fail2banを再起動します。

多くの試みは、一部の正当なユーザーを後でブロックする可能性がある動的IPから行われるため、IPを永久にブロックしようとはしません。

(一部のディストリビューションでは、変更用のjail.optionsファイルを提供しています。これは、confを上書きする更新の影響を受けないため、変更を配置するのに適した場所です。)

2
Chris

このコードを新しいファイル/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が解放されます。

17
ChrisG

デフォルトの/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*$
...

以下は:

  • 外部IPからの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
1
jmunsch

Sshログインをどのようにブロックしましたか?/bin/falseまたはsshd_config DenyUsersオプション?

頭の中で答えを考えることはできませんが、IIRC denyhostsはログファイルを解析します。誰かが無効にしてrootにログインしようとした後で、ログファイルに失敗したエントリが表示されるかどうかを確認してください。

0
MitziMeow