カーネルが禁止されているIPを確認しようとしている理由を理解しようとしています(Debian 10 VPS)。

カーネルが禁止されているIPを確認しようとしている理由を理解しようとしています(Debian 10 VPS)。

VPS上で動作するDebian 10サーバーがあります。私がインストールした唯一のソフトウェアはtinyproxy(httpプロキシ)とfail2banです。

私は以下を含んでいました:

  • nmapを使用したポートスキャン結果
  • Fail2ban jam.local ファイルの特定の設定です。
  • failure2ban failure2ban.local ファイルの特定の設定です。
  • 確認ログでサンプルを完成させます。
  • Fail2banログの完全なサンプル。
  • 私のIpTablesサンプルスキャン結果。

問題の結論:

  • auth.log には、192.241.141.43 がほぼ 1 分ごとに入力しようとしていることが示されます。
  • failure2ban.logに192.241.141.43が禁止されていることを示します。
  • iptablesは、192.241.141.43が禁止されていることを示しています。

IPがブロックされているため、悪意のあるユーザーがログインしようとすることはできません。しかし、カーネルは(pam_unix(sshd:auth))ログイン試行を許可しているようです。

私の2つの質問:

  1. 悪意のあるユーザーが禁止されているにもかかわらず、カーネルでログイン試行を許可するのはなぜですか?
  2. Iptablesエントリに「tcp」の代わりに「icmp」が表示されるのはなぜですか?はい、「ping」はicmpパケットであることを知っていますが、tcpログイン試行をブロックしたいと思います。

とても感謝しています!

nmapスキャン結果

# Nmap 7.80 scan initiated Sat Jan 27 15:25:04 2024 as: nmap -sS -oG out.txt 

107.174.156.124

Host: 107.174.156.124 (107-174-156-124-host.colocrossing.com)   
Status: 
Up
Host: 107.174.156.124 (107-174-156-124-host.colocrossing.com)   
Ports: 
139/filtered/tcp//netbios-ssn///, 
445/filtered/tcp//microsoft-ds///, 
8888/open/tcp//sun-answerbook///    
Ignored State: closed (997)

# Nmap done at Sat Jan 27 15:25:06 2024 
-- 1 IP address (1 host up) scanned in 2.20 seconds

これはjam.localの私のエントリです。

SSHDポートを63xxxの範囲に移動しました。最後の3桁をxxxで隠しました。

#
# JAILS
#

#
# SSH servers
#

[sshd]

# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode   = normal
enabled = true
mode = aggressive
port = 63xxx
filter = sshd
logpath = /var/log/auth.log
bantime = 2000000
findtime = 7200
maxretry = 2
backend = %(sshd_backend)s
action = iptables-multiport[name=sshd, port="ssh", protocol=tcp]

fail2ban.local

# Options: dbpurgeage
# Notes.: Sets age at which bans should be purged from the database
# Values: [ SECONDS ] Default: 86400 (24hours)
dbpurgeage = 2100000

サンプル認証ログ

たとえば、192.241.141.43は何度も試みられ、ほぼ1分ごとに繰り返しました!

Jan 27 15:54:55 racknerd-64d010 sshd[2232]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.241.141.43  user=root
Jan 27 15:54:57 racknerd-64d010 sshd[2232]: Failed password for root from 192.241.141.43 port 54798 ssh2
Jan 27 15:54:57 racknerd-64d010 sshd[2232]: Received disconnect from 192.241.141.43 port 54798:11: Bye Bye [preauth]
Jan 27 15:54:57 racknerd-64d010 sshd[2232]: Disconnected from authenticating user root 192.241.141.43 port 54798 [preauth]

Fail2banの例

たとえば、fall2ban は 192.241.141.43 が禁止されていることを意味します。

2024-01-27 15:55:50,928 fail2ban.actions        [29992]: WARNING [sshd] 82.102.12.130 already banned
2024-01-27 15:55:50,929 fail2ban.actions        [29992]: WARNING [sshd] 192.241.141.43 already banned
2024-01-27 15:55:50,929 fail2ban.actions        [29992]: WARNING [sshd] 159.75.161.40 already banned

Iptablesスキャン結果

IP 192.241.141.43は禁止されています。

    0     0 REJECT     all  --  *      *       61.231.64.170        0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       192.241.141.43       0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       104.250.34.177       0.0.0.0/0            reject-with icmp-port-unreachable

追加情報 1+2、完全なルールセット

以下は、ルールセットファイル全体へのリンクです。

===追加情報の概要

ここでChris Davisの主なコメントを要約しました。私はこの記事を読む将来の読者がjail.localファイルのSSHD Jailセクションに何を追加するべきかについて明確なアイデアを持つようにします。

また、Fail2ban.localファイルに変更された1行のテキストを含めました。クリスにもよろしくお願いします。

=== これはjail.localです。

#
#刑務所
#

#
#SSHサーバー
#

[sshd]

#より積極的なsshdモードを使用するには、Jail.localでフィルタパラメータ「mode」を設定します。
#一般(デフォルト)、DDoS、追加、または積極的(すべての組み合わせ)。
#使用例と詳細については、「tests/files/logs/sshd」または「filter.d/sshd.conf」を参照してください。
#モード=一般
有効=事実
モード=攻撃的
ポート = 22
フィルタ=sshd
ログパス = /var/log/auth.log
シフト時間 = 2000000
検索時間 = 7200
最大再試行 = 2
バックエンド = %(sshd_backend)s
banaction_allports = iptables-allports
action_ap = %(banaction_allports)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", プロトコル="%(protocol)s", chain="% (チェーン)"]
アクション = %(action_ap)s

=== これは Fail2ban.local です。

#オプション:dburgege
#注:データベースからブロックを削除する年齢を設定してください。
#値:[SECONDS]デフォルト:86400(24時間)
データベースの消去 = 2100000

答え1

答えはそれに非常に似ています私はそれをあなたに与えたこれ先日

この場合、サービスのカスタムインバウンドポートではsshなく、そのポートのみをブロックします。ssh

action = iptables-multiport[name=sshd, port="ssh", protocol=tcp]

個人的には、問題のあるIPアドレスからのすべての接続要求をブロックすることをお勧めします。あなたのバージョンで次の定義を使用するか、あなたjail.localのバージョンで同等の定義を使用してこれを実行してくださいfail2ban

banaction_allports = iptables-allports
action_ap = %(banaction_allports)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
action = %(action_ap)s

これには定義された階層があります。動詞はaction各部分のデフォルト値です[jail-name]。私はそれをからに変更しましたaction = %(action_)s。これは再びusingとして定義された定義を使用します。それ以上の定義があるので、私はそれを考えるためにこの定義セットを見直しました。以下で見つけることができますjail.confaction_ = %(banaction)s[port="%(port)s", protocol="%(protocol)s"banactioniptables-multiportbanaction_allports = iptables-allportsaction_apiptables-allportsaction.d/


iptables-multiportDebian 10(buster)の場合、以下で禁止されているタスクを変更するには、この設定のみが必要ですiptables-allports

banaction = iptables-allports

なぜなら、あなたはすでにこれを持っている必要があるからです:

action_ = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
action = %(action_)s

関連情報