👋

【Movementテストノード挑戦記】16章:SSHログイン設定、ポート制限手順

に公開

Chapter 16:SSHログイン設定、ポート制限手順

目的

  • 初めてMovementノード構築を始める人が、安全かつ確実にSSH接続を確立できるようにする
  • 以降のサーバ作業の前提として、鍵認証必須・root禁止・安全なポート運用を整える

前提条件

  • OS:Ubuntu 22.04 LTS
  • VPS:ConoHa等のリモートコンソール(VNC/シリアル)が使えること
  • ユーザ名は例として JapanNomu を使用(実際には適切な名称に置き換えること)
  • この手順は root ユーザで作業開始することを前提(一般ユーザ経由の場合は適宜 sudo を追加)

実施手順(概要+コマンド+注意点)

  1. Teratermで鍵生成(鍵ペアの作成)

    • 公開鍵と秘密鍵を作成し、安全に保管(オフラインでもバックアップ)
    • 目的:パスワードを使わずに安全に接続するための認証方式を準備
  2. VPSへrootユーザでログイン

    • VPS管理画面のVNC/シリアルで接続
    • 目的:初期状態での作業開始と緊急復旧経路の確保
    • 注意:作業中は必ずVNC/コンソールを開いたまま行い、ロックアウト防止
  3. sshd_configのバックアップ

    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)
    
    • 目的:設定を誤った場合にすぐ復元できるようにする
    • 注意:この後のsshd_config編集は既存設定を上書きするため、事前バックアップ必須
  4. VPSへ公開鍵を追加(rootユーザ)

    • 目的:JapanNomuユーザへ移行する前に、rootでも鍵ログインできるようにしておく保険
    • 移行が完了したらroot鍵は削除(最後の手順参照)
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "(公開鍵の中身)" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  5. JapanNomuユーザ追加&管理権限付与

    • 目的:日常作業はrootでなく一般ユーザ+必要な時のみsudoで行う
    adduser JapanNomu
    usermod -aG sudo JapanNomu
    
    • 鍵登録(JapanNomu用)
      mkdir -p /home/JapanNomu/.ssh
      chmod 700 /home/JapanNomu/.ssh
      echo "(公開鍵の中身)" >> /home/JapanNomu/.ssh/authorized_keys
      chmod 600 /home/JapanNomu/.ssh/authorized_keys
      chown -R JapanNomu:JapanNomu /home/JapanNomu/.ssh
      
  6. ファイアウォール初期設定(UFW)

    • 目的:不要な外部アクセスを拒否し、SSHなど必要な通信だけ許可
    • 注意:以下のdefault deny/allowは既存ポリシーを上書きするため、既にUFWを設定済みの場合は実行せずルール追加のみにする
    apt update
    apt install -y ufw
    ufw default deny incoming
    ufw default allow outgoing
    ufw allow 22/tcp
    ufw enable
    ufw status verbose
    
  7. fail2ban導入

    • 目的:不正ログイン試行を検出し、自動でアクセス遮断
    apt install -y fail2ban
    systemctl enable --now fail2ban
    
  8. SSHポート10022追加(段階的切替)

    • 目的:ブルートフォース攻撃を減らすため標準ポートから変更
    • 注意/etc/ssh/sshd_config編集は既存のPort設定を上書きするため、他の用途で使うポート指定がある場合は併記すること
    • /etc/ssh/sshd_config に追加
      Port 22
      Port 10022
      
    • ファイアウォール許可
      ufw allow 10022/tcp
      systemctl restart ssh
      
  9. JapanNomuユーザで10022ポートの鍵ログイン確認

    ssh -p 10022 JapanNomu@<サーバIP>
    
  10. ポート22を閉じる

    • 目的:標準ポートを完全閉鎖し攻撃対象から外す
    • /etc/ssh/sshd_config から Port 22 を削除またはコメントアウト
    • ファイアウォールから削除
      ufw delete allow 22/tcp
      systemctl restart ssh
      
  11. 再度10022ポートで鍵ログイン確認

  12. rootユーザのリモートログイン無効化

    • 目的:root直接ログインを防止しセキュリティ強化
    • /etc/ssh/sshd_config
      PermitRootLogin no
      
    • systemctl restart ssh
  13. パスワード認証の無効化(鍵ログイン成功後)

    • 目的:パスワードによる総当たり攻撃を無効化
    • /etc/ssh/sshd_config
      PasswordAuthentication no
      KbdInteractiveAuthentication no
      
    • systemctl restart ssh
  14. root鍵の削除(移行完了後)

    • 目的:保険用に置いていたroot鍵を削除し、完全にrootログイン不可状態にする
    rm -f /root/.ssh/authorized_keys
    rmdir /root/.ssh 2>/dev/null || true
    
  15. 最終確認

    • JapanNomuユーザでポート10022から鍵ログイン可能
    • rootログイン不可
    • パスワード認証不可
    • 不要なポートやルールがないことをufw statusで確認
GitHubで編集を提案

Discussion