Ubuntu 24.04で再構築したさくらVPSの、初期セキュリティ設定の記録。 ポート22のまま放置すると数時間後にはbotnetからのSSHログイン試行ログが流れ始めるので、 最初にやっておきたい範囲をまとめた。

ゴール

01root直ログイン禁止
02SSHポート変更
03ufwで絞る
04fail2ban導入
05鍵認証のみ

1. rootログインの禁止

まずは作業用ユーザー(ubuntu)でログインしている状態で、 /etc/ssh/sshd_config を編集する。

sudo vi /etc/ssh/sshd_config

以下の行を確認・追加する:

PermitRootLogin no

これでrootでの直接ログインは不可になる。 作業はあくまで ubuntu ユーザー+sudo で行う前提。

2. SSHポートを 51022 に変更

デフォルトの22番ポートはbotからのスキャンが激しいので、ハイポートに移す。 完全な防御にはならないが、ログ汚染は劇的に減る。

# /etc/ssh/sshd_config
Port 51022

Ubuntu 24.04 の ssh.socket 問題

ここで Ubuntu 24.04 特有のハマりどころ がある。 24.04ではSSHが ssh.service ではなく ssh.socket 経由で起動するようになっており、 sshd_configPort ディレクティブだけでは反映されないケースがある。

手っ取り早いのは、socketを無効化してserviceに戻す方法:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service
sudo systemctl restart ssh

あるいは、ssh.socketListenStream 側を 51022 に書き換える方法でもよい。 どちらにしても、変更後に必ず 別のターミナルで新しいポートからログインできるか を確認してから、 既存セッションを閉じること。これを忘れると締め出されて再インストールに戻る。

3. ufwで必要なポートだけ開ける

Ubuntuの簡易ファイアウォール ufw で、必要なポートだけ許可する。

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 51022/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

ポイントは 22 を許可しないこと。 古い感覚で ufw allow OpenSSH をやると22が開いてしまうので注意。

4. fail2banの導入

ポートを変えても、ハイポートをスキャンしてくるbotは存在する。 失敗ログインが続くIPを一定期間BANする fail2ban を入れる。

sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

/etc/fail2ban/jail.local を編集して、SSHのjailを有効化&ポートを合わせる:

[sshd]
enabled = true
port    = 51022
maxretry = 5
bantime  = 1h
findtime = 10m
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

しばらく運用していると、自動BANされたIPが fail2ban-client status sshd で確認できるようになる。 どの国からのアクセスが多いかは見ていて少し面白い。

5. パスワードログインの禁止

最後に、パスワードログイン自体を禁止 して鍵認証のみにする。 これは公開鍵が ~/.ssh/authorized_keys に登録され、 そこからログインできることを 必ず先に確認してから 行う。

# /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
sudo systemctl restart ssh

ここまでやって初めて、ようやく「人類のSSHは入れて、bot系のSSHはほぼ門前払い」という状態になる。

動作確認チェックリスト

この状態にできたら、ようやく Nginxによる静的サイト配信 に進める。