web-dev-qa-db-ja.com

Fail2Banはiptablesルールを追加していません

Fail2Banは、攻撃者をブロックするためのiptablesルールを追加していません。 CentOS 6.5(32ビット)を実行しています

これが私がしたことです:

  • fail2banは、EPELリポジトリを使用してyum経由でインストールされました。
  • jail.confjail.localにコピーしました。
  • Jail.localの禁止時間を3600に変更しました

    bantime  = 3600
    

Iptablesの場合、SSHに関してこれらのルールを定義しました

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state ESTABLISHED 
3    fail2ban-SSH  tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 

SSHのjail.local構成:

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 5

最新のログエントリ:

2014-08-13 10:11:04,481 fail2ban.server : INFO   Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.11
2014-08-13 10:11:04,482 fail2ban.jail   : INFO   Creating new jail 'ssh-iptables'
2014-08-13 10:11:04,514 fail2ban.jail   : INFO   Jail 'ssh-iptables' uses pyinotify
2014-08-13 10:11:04,533 fail2ban.jail   : INFO   Initiated 'pyinotify' backend
2014-08-13 10:11:04,536 fail2ban.filter : INFO   Added logfile = /var/log/secure
2014-08-13 10:11:04,537 fail2ban.filter : INFO   Set maxRetry = 5
2014-08-13 10:11:04,540 fail2ban.filter : INFO   Set findtime = 600
2014-08-13 10:11:04,540 fail2ban.actions: INFO   Set banTime = 3600
2014-08-13 10:11:04,727 fail2ban.jail   : INFO   Jail 'ssh-iptables' started

次にfail2banを開始しますが、しばらくして(1時間ほど)/var/log/secureを確認しても、ブルートフォース攻撃を受けています。

Aug 13 10:31:35 webhost sshd[15619]: Invalid user china from 128.199.147.79
Aug 13 10:31:35 webhost sshd[15620]: input_userauth_request: invalid user china
Aug 13 10:31:36 webhost sshd[15620]: Connection closed by 128.199.147.79
Aug 13 10:35:04 webhost sshd[15661]: Invalid user klaudia from 106.187.90.33
Aug 13 10:35:04 webhost sshd[15662]: input_userauth_request: invalid user klaudia
Aug 13 10:35:05 webhost sshd[15662]: Connection closed by 106.187.90.33
Aug 13 10:41:56 webhost sshd[15772]: Invalid user cassandra from 106.187.90.33
Aug 13 10:41:56 webhost sshd[15773]: input_userauth_request: invalid user cassandra
Aug 13 10:41:57 webhost sshd[15773]: Connection closed by 106.187.90.33
Aug 13 10:44:10 webhost sshd[15807]: Invalid user knight from 106.187.90.33
Aug 13 10:44:10 webhost sshd[15808]: input_userauth_request: invalid user knight
Aug 13 10:44:12 webhost sshd[15808]: Connection closed by 106.187.90.33

新しいルールはiptablesに追加されていません...

Chain fail2ban-SSH (1 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0 

fail2ban-regexで問題をデバッグしようとすると:

fail2ban-regex  /var/log/secure /etc/fail2ban/filter.d/sshd.conf

Running tests

Use   failregex file : /etc/fail2ban/filter.d/sshd.conf
Use         log file : /var/log/secure

Results

Failregex: 1374 total
|-  #) [# of hits] regular expression
|   5) [1374] ^\s*(<[^.]+\.[^.]+>)?\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?(?:\[\d+\])?:?)?\s(?:\[ID \d+ \S+\])?\s*[iI](?:llegal|nvalid) user .* from <Host>\s*$
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [4615] MONTH Day Hour:Minute:Second
`-

Lines: 4615 lines, 0 ignored, 1374 matched, 3241 missed
Missed line(s):: too many to print.  Use --print-all-missed to print all 3241 lines
</code>

The missed lines are:

Lines: 4621 lines, 0 ignored, 1376 matched, 3245 missed
|- Missed line(s):
|  Aug 10 03:46:30 webhost sshd[12340]: input_userauth_request: invalid user simulator
|  Aug 10 03:46:30 webhost sshd[12340]: Connection closed by 106.187.90.33
|  Aug 10 03:55:01 webhost sshd[12430]: input_userauth_request: invalid user simulation
|  Aug 10 03:55:02 webhost sshd[12430]: Connection closed by 106.187.90.33
|  Aug 10 04:01:33 webhost sshd[12505]: Connection closed by 128.199.147.79
|  Aug 10 04:02:46 webhost sshd[12539]: reverse mapping checking getaddrinfo for new.jerl.im [128.199.254.179] failed - POSSIBLE BREAK-IN ATTEMPT!

Fail2banについて、sshdフィルターの何が問題なのかを十分に知りません。デフォルトの設定で十分だと思いましたか?どうすれば修正できますか?

6
Aditya K

IPTABLES jailおよびSSHフィルターを有効にしたことを確認します。また、f2bログを確認してください-f2bは誰かを禁止しようとしていますか?

1
Paul Rudnitskiy

/ var/log/secureまたは/var/log/auth.logを使用して何をログに記録するかはわかりませんが、fail2banにどのファイルから読み取る必要があるかを伝える必要があります。デフォルトを変更した場合も同様です次に、ssh(22)のポートを指定し、fail2banに通知してファイアウォール(iptablesなど)で開く必要があります。正規表現IS意図したとおりに機能し、それはISログの重要な行と一致します。つまり

Aug 13 10:31:35 webhost sshd[15619]: Invalid user china from 128.199.147.79

欠落としてリストされている他のものは、提供されていないため、fail2banにとって重要ではありません<Host>または<IP>どのfail2banがクライアントの禁止を有効にする必要があります。したがって、fail2banはsshに対して正しく設定されているため、すべての定義がシステム設定と一致する場合は禁止する必要があります。禁止するには、 'findtime'と 'maxretry'の値をトリガーする必要があることに注意してください。変更後は必ず「$ fail2ban-client reload」を実行してください。

0
devatnull

刑務所の名前が長すぎると、iptablesに追加されないことに気付きました。

/var/log/fail2ban.logに名前が長すぎるという警告が含まれていることを確認して、iptablesルールの作成中にエラーを作成できます。

これにより、fail2banが検出および禁止できますが、iptables構成(iptables -v -x -n -L)にルールが存在しないため、実際には禁止されません。

0
Miguel

私のSysAdminエクスペリエンスから、systemdforバックエンドを試してください。CentOSを使用している場合は、banactionではなくactionを使用してください。

例えば、

あなたのjail.local

[デフォルト]

bantime = 4640000

banaction = firewalld-custom

バックエンド= systemd

これが機能するかどうか教えてください。

0
Mark

この問題に遭遇したのは、「iptables」コマンドが機能していなかったためです。行を変更することでこれを修正できたと思います

iptables = iptables <lockingopt>

iptables = /sbin/iptables <lockingopt>

ただし、念のため、iptables-allports.confのみを使用していたため、そのファイル内のすべての出現箇所を/ sbin/iptablesに置き換えただけです。

0
davidgo