SSHは、特にキーペアベースの認証を要求するなどの合理的な予防策を講じている場合は、かなり安全です。ただし、root / rootやadmin / adminなどの一般的な侵害されたユーザー名とパスワードを使用してログインしようとすることで、脆弱なホストを見つけようとするボットはまだたくさんあります。成功する可能性は低いですが、それでも帯域幅を使用し、大量のログを生成します。
ブルートフォースログインの試行を最小限に抑える1つの方法は、SSHがリッスンするデフォルトのポートを変更することです。ただし、これはグッドプラクティスとは見なされません。まず、サーバーに接続するたびに、デフォルト以外の正しいポートを設定する必要があることに注意してください。さらに、選択したポートが1024より大きい場合、別のセキュリティの脆弱性が発生する可能性があります。通常、ルートのみが1024未満のポート番号にバインドできます。ただし、SSHに大きいポート番号を使用すると、特定の状況下で、ルートアクセス権のないユーザーが置き換えることができます。別の悪意のあるサービスとのSSHデーモン。
この問題を解決する最善の方法は、攻撃者がSSHサーバーにアクセスするのをブロックするツールを使用することです。そのような広く使用されているツールの1つは、fail2ban( www.fail2ban.org)です。ログを分析することにより、fail2banは繰り返し失敗した認証試行を検出し、攻撃者のIPアドレスから発信されたトラフィックを破棄するファイアウォールルールを自動的に設定します。
Ubuntuにfail2banをインストールする
手動インストール
Ubuntu(および他のDebianベースのディストリビューション)へのfail2banのインストールは非常に簡単です。
$ sudo apt install fail2ban
動作の確認
次のコマンドを使用して、サービスが実行されているかどうかを確認できます。
$ sudo systemctl status fail2ban
出力は次のようになります-サービスステータスはアクティブである必要があります:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-05-18 12:36:36 ***; ** min ago
Docs: man:fail2ban(1)
Process: 723*** ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
Main PID: 723*** (f2b/server)
Tasks: 5 (limit: 38293)
Memory: 18.0M
CGroup: /system.slice/fail2ban.service
└─723488 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
fail2banがiptablesルールをどのように変更したかを見てみましょう。
$ sudo iptables -L -n -v
また、INPUTチェーンルールによって参照されるiptables構成に新しいf2b-sshdチェーンがあることも確認する必要があります。
Chain INPUT (policy ACCEPT 73411 packets, 6622K bytes)
pkts bytes target prot opt in out source destination
1019 65297 f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
Chain f2b-sshd (1 references)
pkts bytes target prot opt in out source destination
8 480 REJECT all -- * * 94.191.93.46 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- * * 77.50.75.162 0.0.0.0/0 reject-with icmp-port-unreachable
10 600 REJECT all -- * * 51.254.143.190 0.0.0.0/0 reject-with icmp-port-unreachable
10 600 REJECT all -- * * 46.101.97.5 0.0.0.0/0 reject-with icmp-port-unreachable
9 540 REJECT all -- * * 43.129.28.88 0.0.0.0/0 reject-with icmp-port-unreachable
9 540 REJECT all -- * * 41.221.168.167 0.0.0.0/0 reject-with icmp-port-unreachable
9 540 REJECT all -- * * 35.247.219.12 0.0.0.0/0 reject-with icmp-port-unreachable
12 720 REJECT all -- * * 220.180.119.192 0.0.0.0/0 reject-with icmp-port-unreachable
10 600 REJECT all -- * * 218.75.121.75 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- * * 213.87.101.176 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- * * 192.139.15.34 0.0.0.0/0 reject-with icmp-port-unreachable
21 1260 REJECT all -- * * 187.104.145.210 0.0.0.0/0 reject-with icmp-port-unreachable
8 480 REJECT all -- * * 177.191.189.13 0.0.0.0/0 reject-with icmp-port-unreachable
10 600 REJECT all -- * * 159.89.82.134 0.0.0.0/0 reject-with icmp-port-unreachable
10 600 REJECT all -- * * 159.75.140.97 0.0.0.0/0 reject-with icmp-port-unreachable
8 480 REJECT all -- * * 157.92.13.105 0.0.0.0/0 reject-with icmp-port-unreachable
11 660 REJECT all -- * * 117.80.225.245 0.0.0.0/0 reject-with icmp-port-unreachable
9 540 REJECT all -- * * 106.53.121.179 0.0.0.0/0 reject-with icmp-port-unreachable
865 56057 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
fail2banパッケージには、fail2ban-clientというツールが含まれています。これにより、サービスのステータスを確認して操作することができます(たとえば、IPアドレスを手動でブロックおよびブロック解除したり、jailを有効または無効にしたりできます)。
アクティブなjailを確認しましょう。
$ sudo fail2ban-client status
Status |- Number of jail: 1 `- Jail list: sshd
刑務所は1つだけです-sshd-sqは、SSHサーバーログのログイン失敗を監視し、ファイアウォールルールを構成してそれ以上の試行をブロックします。
これで、sshdjailの統計を確認できます。
$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 8
| |- Total failed: 26
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 22
|- Total banned: 25
`- Banned IP list: 106.53.121.179 117.80.225.245 157.92.13.105 159.75.140.97 159.89.82.134 177.191.189.13 187.104.145.210 213.87.101.176 218.75.121.75 220.180.119.192 35.247.219.12 41.221.168.167 43.129.28.88 46.101.97.5 51.254.143.190 77.50.75.162 94.191.93.46 1.55.165.141 120.53.245.68 104.131.178.145 106.56.102.83 152.32.146.21
fail2banの構成
ほとんどの場合、デフォルトの構成で十分です。ただし、これらのデフォルトとは何か、およびニーズに合わせてデフォルトを変更する方法を理解しておくと役立ちます。
標準構成では、fail2banはSSHサーバーを保護し、10分以内に5回のログイン試行が失敗した後、攻撃者を10分間ブロックします。デフォルトの設定ファイルは/etc/fail2ban/jail.confにあります。このファイルは十分に文書化されており、ほとんどが自明です。このファイルはfail2banの更新中に上書きされる可能性があるため、変更しないでください。
構成を変更した後、サービスを再起動することを忘れないでください。
$ sudo systemctl restart fail2ban
この場合、構成パラメーターを変更し、攻撃戦略を理解し、攻撃しているホストの毎日のリストを受け取り、それをブロックしたことに注意してください。
しかし、これが誰かにとって有用で興味深いものである場合は、後で別のメモでこれについて説明します。