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


8

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

回答:


2

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

[ssh]

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

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

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

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


4
良い情報ですが、ユーザーrootを使用してすべてのログインをブロックする方法を知りたいと思います...それはあなたの答えではわかりません。多分あなたはそれを忘れました。
モーセ

17

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


1
これは実際に質問に答えるので、これは本当に受け入れられる答えに値します。
ピールマン2015年

これは間違いなく正しい答えです。sshd設定でrootログインを無効にし、jail.confでmaxretryを1に設定するのが最善です。
anteatersa 2016

1

デフォルトには/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外部IPからの接続を許可する
  • そして、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

0

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

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


2
私はssh設定ファイルを編集し、yesからnoに/etc/ssh/sshd_config変更PermitRootLoginしました。これが関連するかどうかはわかりませんが、rsshをインストールして、特定のユーザーだけがsftpを使用してログインできるようにしますが、sshは許可しません。
samwell

失敗したユーザーログインが試行された場合、sshログファイルを確認しましたか?
MitziMeow

はい、多くの異なるIPアドレスによるユーザーのログイン試行の失敗がたくさんあることがわかります。
samwell 2011

その後、denyhostsが機能するはずです
MitziMeow
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.