「毎日大量の不正ログイン試行が…」 「/var/log/auth.logがエラーだらけ」 「デフォルトの22番ポートって危険?」
実は、SSHポート番号を変更するだけで 不正アクセス試行が99%以上減るんです!
ボットの自動攻撃は22番ポートを狙うので、 ポートを変えるだけで大半を回避できます。
でも、設定を間違えると サーバーに接続できなくなる危険も…
この記事通りに設定すれば、 安全確実にポート変更できます!
【重要】作業前の準備と注意事項

必須の事前準備
絶対にやっておくこと:
- 現在の接続を維持する
- 設定中は今の接続を切らない
- 別ウィンドウで新規接続テスト
- コンソールアクセスの確保
- VPSならコンソール画面を準備
- 物理サーバーなら直接アクセス可能に
- 設定ファイルのバックアップ
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup sudo cp /etc/ssh/sshd_config.d/50-cloud-init.conf /etc/ssh/sshd_config.d/50-cloud-init.conf.backup 2>/dev/null
- 現在の設定確認
# 現在のポート確認 sudo ss -tlnp | grep ssh # SSHサービス状態確認 sudo systemctl status ssh
新しいポート番号の選び方
推奨ポート範囲:
範囲 | 用途 | 推奨度 |
---|---|---|
1-1023 | ウェルノウンポート | ❌ 使用不可 |
1024-49151 | 登録済みポート | ⚠️ 要確認 |
49152-65535 | 動的ポート | ✅ 推奨 |
おすすめポート番号:
2222 - 覚えやすい(注意:狙われやすい)
8022 - 比較的安全
22222 - 覚えやすく安全
52222 - 動的ポート範囲で安全
使用中ポートの確認:
# 使用中のポート一覧
sudo ss -tuln | grep LISTEN
# 特定ポートの確認(例:52222)
sudo ss -tuln | grep :52222
【手順1】SSHデーモンの設定変更
Ubuntu 22.04/24.04 の場合
最新版は設定ファイルが分割されています:
- メイン設定ファイルを編集
sudo nano /etc/ssh/sshd_config
- Port設定を探して変更
# 変更前 #Port 22 # 変更後(例:52222に変更) Port 52222 # 移行期間は両方有効にすることも可能 #Port 22 #Port 52222
- Include設定を確認
# この行があるか確認 Include /etc/ssh/sshd_config.d/*.conf
クラウドサーバーの場合(重要)
AWS、Azure、GCPなどは追加設定が必要:
# cloud-init設定を確認
ls /etc/ssh/sshd_config.d/
# cloud-init設定がある場合
sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf
# Port設定があれば変更
Port 52222
設定の文法チェック
必ず実行!エラーがあると起動しません:
# 設定ファイルのテスト
sudo sshd -t
# エラーがなければ何も表示されない
# エラーがある場合は詳細が表示される
【手順2】ファイアウォールの設定(超重要)
UFW(Ubuntu標準)の設定
新しいポートを開く:
# UFWの状態確認
sudo ufw status verbose
# 新しいポートを許可(例:52222)
sudo ufw allow 52222/tcp comment 'SSH new port'
# 特定IPからのみ許可する場合(より安全)
sudo ufw allow from 192.168.1.0/24 to any port 52222 comment 'SSH from local network'
# ルールの確認
sudo ufw status numbered
重要:まだ22番ポートは削除しない!
iptablesを使用している場合
# 現在のルール確認
sudo iptables -L -n -v
# 新ポートを許可
sudo iptables -A INPUT -p tcp --dport 52222 -j ACCEPT
# 設定を保存
sudo netfilter-persistent save
# または
sudo iptables-save > /etc/iptables/rules.v4
【手順3】SSHサービスの再起動と確認
安全な再起動方法
接続を維持したまま再起動:
# 設定を再読み込み(接続は切れない)
sudo systemctl reload ssh
# または完全再起動
sudo systemctl restart ssh
# サービス状態確認
sudo systemctl status ssh
新ポートでの接続テスト
別ターミナルで実行:
# ローカルから新ポートで接続テスト
ssh -p 52222 username@server_ip
# 詳細表示でデバッグ
ssh -p 52222 -v username@server_ip
# ポートが開いているか確認
nc -zv server_ip 52222
Windowsから接続する場合:
ssh -p 52222 username@server_ip
【手順4】旧ポートの無効化
接続確認後の最終設定
新ポートで接続できたら:
- 22番ポートを無効化
# sshd_configを編集 sudo nano /etc/ssh/sshd_config # Port 22の行を削除またはコメントアウト #Port 22 Port 52222
- ファイアウォールから22番を削除
# UFWのルール番号を確認 sudo ufw status numbered # 22番ポートのルールを削除(番号は環境により異なる) sudo ufw delete [番号] # または sudo ufw delete allow 22/tcp
- 最終確認
# SSHサービス再起動 sudo systemctl restart ssh # 22番ポートが閉じているか確認 sudo ss -tlnp | grep :22
SELinuxが有効な場合の追加設定
Ubuntu with SELinux
# SELinuxの状態確認
getenforce
# SELinuxが有効な場合
sudo semanage port -a -t ssh_port_t -p tcp 52222
# 設定確認
sudo semanage port -l | grep ssh
クライアント側の設定
SSH設定ファイルで簡単接続
~/.ssh/config を作成/編集:
# クライアント側の設定
nano ~/.ssh/config
# 以下を追加
Host myserver
HostName server_ip_address
Port 52222
User username
IdentityFile ~/.ssh/id_rsa
# これで簡単接続
ssh myserver
各種ツールの設定変更
scp/sftpコマンド:
# SCPでファイル転送
scp -P 52222 file.txt user@server:/path/
# SFTP接続
sftp -P 52222 user@server
rsyncコマンド:
rsync -avz -e "ssh -p 52222" source/ user@server:/destination/
トラブルシューティング
問題1:新ポートで接続できない
チェックリスト:
# 1. SSHサービスが新ポートでリッスンしているか
sudo ss -tlnp | grep :52222
# 2. ファイアウォール設定確認
sudo ufw status | grep 52222
# 3. 設定ファイルの文法チェック
sudo sshd -t
# 4. SSHサービスのログ確認
sudo journalctl -xe | grep ssh
問題2:接続が拒否される
# ポートの疎通確認
telnet server_ip 52222
# ファイアウォールログ確認
sudo tail -f /var/log/ufw.log
# SSH詳細ログ有効化
sudo nano /etc/ssh/sshd_config
# LogLevel DEBUG
sudo systemctl restart ssh
問題3:古いポートがまだ使える
# プロセス確認
sudo lsof -i :22
# 全SSHDプロセス確認
ps aux | grep sshd
# 強制的に古いプロセスを終了
sudo killall sshd
sudo systemctl start ssh
緊急時の復旧方法
コンソールアクセスから:
# バックアップから復元
sudo mv /etc/ssh/sshd_config.backup /etc/ssh/sshd_config
# SSHサービス再起動
sudo systemctl restart ssh
# ファイアウォール全開放(一時的)
sudo ufw disable
セキュリティを更に強化する設定
追加の推奨設定
# /etc/ssh/sshd_config に追加
# rootログイン禁止
PermitRootLogin no
# パスワード認証無効化(鍵認証のみ)
PasswordAuthentication no
# 空パスワード禁止
PermitEmptyPasswords no
# ログインユーザー制限
AllowUsers username1 username2
# 接続試行回数制限
MaxAuthTries 3
# 同時接続数制限
MaxSessions 2
fail2banで自動ブロック
# fail2banインストール
sudo apt update
sudo apt install fail2ban
# SSH用設定
sudo nano /etc/fail2ban/jail.local
[sshd]
enabled = true port = 52222 filter = sshd logpath = /var/log/auth.log maxretry = 3 findtime = 3600 bantime = 86400
ポート変更後のメンテナンス
定期的な確認項目
# 毎週確認すべきこと
# 1. 不正アクセス試行
sudo grep "Failed password" /var/log/auth.log | tail -20
# 2. 開いているポート
sudo ss -tlnp
# 3. ファイアウォール状態
sudo ufw status verbose
# 4. fail2banでブロック中のIP
sudo fail2ban-client status sshd
ログ監視スクリプト
#!/bin/bash
# ssh_monitor.sh
echo "=== SSH接続試行 (過去24時間) ==="
grep "sshd" /var/log/auth.log | grep "$(date '+%b %d')" | wc -l
echo "=== 失敗した接続試行 ==="
grep "Failed password" /var/log/auth.log | tail -10
echo "=== 現在の接続 ==="
who
まとめ:ポート変更チェックリスト
設定前: ✅ 現在の接続を維持 ✅ コンソールアクセス確保 ✅ 設定ファイルバックアップ
設定中: ✅ sshd_config編集 ✅ 文法チェック(sshd -t) ✅ ファイアウォール新ポート開放 ✅ SSH再起動 ✅ 新ポートで接続テスト
設定後: ✅ 旧ポート無効化 ✅ ファイアウォールから旧ポート削除 ✅ fail2ban設定更新 ✅ クライアント設定更新
ポート番号を変更するだけで、 セキュリティが劇的に向上します!
ただし、これだけでは不十分。 鍵認証やfail2banと組み合わせて、 多層防御を構築しましょう。
安全なサーバー運用を!
ポート変更後の効果はどうでしたか?不正アクセスの減少率など、ぜひ教えてください!
コメント