非常に執拗な人物が、ここ数日、私のシステムへの (不正な) アクセスを継続的に試みています... 次のような膨大な数のエントリがあります/var/log/auth.log
:
Jun 21 03:55:15 cloudy sshd[32487]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.20 user=root
Jun 21 03:55:16 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:19 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:21 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:21 cloudy sshd[32487]: Received disconnect from 116.31.116.20: 11: [preauth]
Jun 21 03:55:21 cloudy sshd[32487]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.20 user=root
この個人がコンピューターのリソースを消費するのをブロックする方法についてアドバイスをお願いします。IP が SSH 接続を開かないように「ハードブロック」することは可能でしょうか? OS として Debian 8 を使用していることに注意してください。
答え1
sshd: 116.31.116.20
に追加/etc/hosts.deny
答え2
使用することもできますiptables
ブロックしたいIPアドレスを記述したファイルを作成します。blocked.ips.txt
次に、次の内容を含むスクリプトを作成して実行します。
blocked=$(egrep -v -E "^#|^$" ./blocked.ips.txt)
for ip in $blocked
do
iptables -I INPUT -s $ip -p tcp --dport ssh -j DROP
done
実行するとiptables -L
ドロップされたパケットの出力が得られる。
答え3
iptables アプローチは最も直接的な方法です。Erik Handriks はこれをスクリプトとして提案しました。
ただし、2 つの問題があります。 - スクリプトは、再起動のたびに起動する必要があります (テーブルが iptables で内部的にバックアップされていない場合)。 - スクリプトをそのまま 2 回以上呼び出すと、エントリが重複します。
次のようにして悪者を捕まえてみましょう:
iptables -I 入力 -s BAD_IP -p tcp --dport ssh -j ドロップ
ほとんどのディストリビューションでは、iptables には独自のルール保存復元メカニズムがあります。 '/var/lib/iptables/rules-save' が存在するかどうかを確認してください。 ディストリビューションによっては、別の場所 (gentoo の場合) にある可能性があります。
すべての BAD IP を追加した後、次の操作を試してください。
iptables-save > /var/lib/iptables/rules-save
再起動後、「iptables -L」で何があるか確認します...
答え4
私のサーバー (Ubuntu 16.04) では、iptables の簡素化レイヤーである UFW (UncomplicatedFireWall) を使用しています。これは、Ubuntu サーバーではほぼ標準的な機能のようです (ただし、他のディストリビューションでも使用できるはずです)。このような場合には、次のものを使用します。
ufw insert 1 deny from nnn.nnn.nnn.nnn
UFWでは接続数を制限することもできます
ufw limit ssh/tcp
これは成功した接続にも適用されるため、複数の ssh コマンドを使用するスクリプトを使用する場合は、次のコマンドを発行して IP のこの制限を無効にする必要があります。
ufw insert 1 allow in from nnn.nnn.nnn.nnn