私のサーバーが攻撃を受けています。次のような試みがログに記録されています:
Sep 22 06:39:11 s1574**** sshd[16453]: Failed password for invalid user amber from 64.215.17.4 port 35182 ssh2
Sep 22 04:39:11 s1574**** sshd[16454]: Received disconnect from 64.215.17.4: 11: Bye Bye
Sep 22 06:39:11 s1574**** sshd[16457]: Invalid user amber from 64.215.17.4
Sep 22 04:39:11 s1574**** sshd[16458]: input_userauth_request: invalid user amber
Sep 22 06:39:11 s1574**** sshd[16457]: pam_unix(sshd:auth): check pass; user unknown
Sep 22 06:39:11 s1574**** sshd[16457]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=dns2.rsd.com
Sep 22 06:39:11 s1574**** sshd[16457]: pam_succeed_if(sshd:auth): error retrieving information about user amber
Sep 22 06:39:14 s1574**** sshd[16457]: Failed password for invalid user amber from 64.215.17.4 port 35842 ssh2
Sep 22 04:39:14 s1574**** sshd[16458]: Received disconnect from 64.215.17.4: 11: Bye Bye
このようなアクセス試行をブロックするにはどうすればいいでしょうか。たとえば、3件以上の拒否があった場合にIPをブロックするなどです。
答え1
1分あたりのログイン試行回数を制限することができます
iptables
。このようなルールは、3回のログイン試行後1分間IPをブロックします(オタクの日記 – Netfilter とrecent
モジュールを使用して SSH ブルートフォース攻撃を軽減する):iptables -A 入力 -p tcp --dport 22 -m 状態 --state NEW -m 最近 --set --name SSH iptables -A 入力 -p tcp --dport 22 -m 状態 --state NEW -j SSH_WHITELIST iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_brute_force iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
より詳細な設定が必要な場合は、失敗2バンまたは拒否ホストSSHd ログを分析し、疑わしい IP アドレスをブロックします。
答え2
最も良い方法は、iptablesで不要なポートをすべてブロックし、ログインに秘密鍵を使用するようにsshを設定することです。PuttyとMobaXterm(どちらも無料のsshクライアント)は秘密鍵ログインをサポートしていることは知っています。次に、/etc/ssh/sshd_config内で
PermitRootLogin yes
そして以下を追加します:
PermitRootLogin without-password
これにより、たとえルート パスワードを知っていても、そのパスワードを使用してログインできなくなります。
iptablesルールを使用してそれらを制限し、サーバーが低速にならないようにすることができます。
答え3
Denyhosts ソフトウェアをインストールします。これにより、このようなハッカーの IP が hosts.deny に自動的にリストされます。パッケージは epel リポジトリで入手できます。