スポンサーリンク

【Ubuntu】ConoHaのVPSを作成した時にはじめにやること

ConoHaのVPSでUbunutuサーバを作成したときにはじめにやったほうが良い事

ConoHaのVPSでUbuntu Serverを作成した時に私が最初に行っている作業です。

  • 一般ユーザの作成
  • SSHサーバ設定 (ポート番号変更・rootユーザログイン禁止)
  • ファイアウォール設定 (ssh用ポート許可)
  • パッケージ更新
  • SSH接続テスト

セキュリティを高めるための手段はまだまありますが、今回は最低限これくらいは行っておきましょうという項目の説明をしていきます。

ちなみに、今回のサーバ設定作業はコントロールパネルにあるWebコンソールから作業を行っています。

webコンソールの使い方

SSHで接続できない場合や、VPSを作成したての時によくお世話になるコンソールの接続方法です。

コントールパネルにログインするとVPS一覧が表示されるので、コンソールに接続したいVPSのコンソールアイコンをクリックすることで接続することが出来ます。

ログイン直後の画面から遷移してしまっている場合

ログイン直後の画面から遷移してしまっている場合は、下記の方法でコンソールに接続することが出来ます。

  • サーバをクリック
  • コンソールを使用したいVPSのネームタグをクリック

選択したVPSの画面が表示されるので、コンソールアイコンをクリックすることでコンソールに接続することが出来ます。

エディターについて

今回の手順では設定ファイルの編集をviエディターで行っていますが、nanoなんかを使用しても問題ありませんので、使いやすいエディタを使用してください。

viの使い方

簡単なviの使い方を下記サイトで説明していますので、もしよかったら参照してみてください。

https://www.server-memo.net/tips/command/vi/start_vi.html

一般ユーザの作成

ConoHaのVPSの場合、作成したてのVPS(Ubuntu)にはログインできるユーザがrootしか存在していません。

この後のSSHサーバの設定でrootユーザでのSSH接続を禁止するため、SSH接続用のユーザを作成しsudo権限もあわせて付与しておきます。

コントロールパネルにあるコンソールでrootユーザでログインしてユーザの追加作業を行っていきます。

# adduser ユーザ名
# gpasswd -a ユーザ名 sudo

これ以後の作業はここで作成したユーザで行っていきますので、一度ログアウトして作成したユーザでログインし直して下さい。

# logout

SSHサーバ設定

SSHサーバのセキュリティを高めるために下記の設定を行っていきます。

  • ポート番号変更
  • rootユーザログイン禁止

UbuntuServer22.04とUbuntuServer24.04ではSSHサーバの設定方法が異なるので、それぞれの方法を説明していきます。

Ubuntu Server 22.04の場合

SSHサーバの設定を行うファイルは「/etc/ssh/sshd_config」なので、設定ファイルのバックアップを行ってから作業を行っていきます。

$ sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_`date +%Y%m%d-%H%M%S`
$ sudo vi /etc/ssh/sshd_config

ポート番号変更

SSHサーバの初期設定では22番ポートを使用しますが、このポートにはブルートフォースアタックが多いので、SSHで接続するためのポート番号を変更しておきます。

とりあえず今回はポート番号を10022番に変更していますが、他のサービスと被らなければ他の番号でも良いです。

設定項目
Port 22    # 変更前
     ↓
Port 10022     # 変更後

rootユーザログイン禁止

初期設定ではrootユーザでのSSH接続が許可されていますが、rootユーザでログインされてしまうと一発でシステムが乗っ取られるのでrootユーザではSSH接続出来ないように設定を変更しておきます。

設定項目
PermitRootLogin yes    # 変更前
     ↓
PermitRootLogin no     # 変更後

設定反映

設定が完了しましたらSSHサーバを再起動してください。

$ sudo systemctl restart sshd

Ubuntu Server 24.04の場合

ポート番号変更

SSHサーバの初期設定では22番ポートを使用しますが、このポートにはブルートフォースアタックが多いので、SSHで接続するためのポート番号を変更しておきます。

Ubuntu22.10からSSHサーバーはsystemdのSocket-Based Activationを利用して起動されるようになったため、ポート番号の変更は「/etc/ssh/sshd_config」で設定することが出来なくなりました。

ポート番号の変更は「ssh.socket」の設定で行う必要が有るので、以下のコマンドで設定変更を行っていきます。

$ sudo systemctl edit ssh.socket
設定項目

SSHサーバの待受ポートを22番から10022番ポートに変更するために、以下の内容を追加します。

ポート番号を10022番に変更していますが、他のサービスと被らなければ他の番号でも良いです。

[Socket]
ListenStream=
ListenStream=10022

設定を追加する場所も決まりがあるので、メッセージに書いてあるとおりにコメントの間に設定を追加してください。

### Anything between here and the comment below will become the contents of the drop-in file
(ここと以下のコメントの間にあるものがドロップインファイルの内容になります)

### Edits below this comment will be discarded
(このコメント以下の編集は破棄されます)

### Editing /etc/systemd/system/ssh.socket.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file

[Socket]
ListenStream=
ListenStream=10022

### Edits below this comment will be discarded
##### 以下省略 #####
編集方法

初期設定では設定用のエディタとして「nano」が使用されています。

カーソルの移動は矢印キーで行い、文字の削除は「Backspace」や「Delete」キーで行うことが出来ます。

設定が終わったら、「Ctrl」+「x」を押下します。

変更を保存するかどうかのメッセージが画面の下部に表示されるので、「Y」キーを押下します。

Save modified buffer?                                                                             
 Y Yes
 N No           ^C Cancel

書き込みするファイル名が表示されるので、そのまま「Enter」キーを押下してファイルに書き込みを行い編集を終了させます。

File Name to Write: /etc/systemd/system/ssh.socket.d/.#override.confdd96ec677194c0a7

^G Help                 M-D DOS Format          M-A Append              M-B Backup File
^C Cancel               M-M Mac Format          M-P Prepend             ^T Browse

画面上に編集が成功したといったメッセージが表示されます。

Successfully installed edited file '/etc/systemd/system/ssh.socket.d/override.conf'.
設定反映

ssh.socketとsshを再起動して設定を反映させます。

$ sudo systemctl restart ssh.socket
$ sudo systemctl restart ssh

rootユーザログイン禁止

rootでSSHのログインを禁止したい場合「PermitRootLogin no」という設定をする必要がありますが、UbuntuServer24.04では「/etc/ssh/sshd_config.d」に「*.conf」といった設定ファイルが有る場合、そちらの設定が先に読み込まれてSSHサーバの設定ファイルである「/etc/ssh/sshd_config」にある設定よりも優先されるようになっています。

そのため、「/etc/ssh/sshd_config.d」に作成されている設定ファイルを確認して、すでに「PermitRootLogin yes」の設定があればそれを「PermitRootLogin no」に変更する必要があります。

ConoHaVPSで用意されていたUbuntuServer24.04は「/etc/ssh/sshd_config.d」の中には「100-allowsshrsa.conf」という設定ファイルしか存在していなくて、かつ「PermitRootLogin」の設定はありませんでした。

$ ls /etc/ssh/sshd_config.d
100-allowsshrsa.conf
$ cat /etc/ssh/sshd_config.d/100-allowsshrsa.conf 
PubkeyAcceptedAlgorithms=+ssh-rsa

ですので、従来どおり「/etc/ssh/sshd_config」を編集して、「PermitRootLogin no」と設定変更しても良いのですが、今回は「10-PermitRootLogin.conf」といった設定ファイルを作成して、設定変更を行うことにします。

$ sudo vi /etc/ssh/sshd_config.d/10-PermitRootLogin.conf
設定内容
PermitRootLogin no

設定反映

設定が完了しましたらSSHサーバを再起動してください。

$ sudo systemctl restart ssh

設定が変更されているかの確認は以下の方法で確認することが出来ます。

$ sudo sshd -T | grep -i PermitRootLogin
permitrootlogin no

ファイアウォール設定

VPSを作成したての状態ではファイアウォール機能は停止しているので、有効化したあとにSSH接続用ポートの通信を許可する設定を行います。

ファイアウォールの有効化

まずはファイアウォールを有効化します。

$ sudo ufw enable
Firewall is active and enabled on system startup

SSH用ポートの通信許可設定

次にSSH接続用ポートの通信許可のルールをufw allowで追加します。

今回はSSHサーバの設定でポート番号を10022番に変更しているので、このポートの通信を許可していますが、別の番号にしている場合は適宜読み替えてください。

$ sudo ufw allow 10022/tcp
Rule added
Rule added (v6)

追加したルールに間違いがないかufw status verboseコマンドで確認しておいてください。

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: reject (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere                  
10022/tcp                  ALLOW IN    Anywhere                  
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)             
10022/tcp (v6)             ALLOW IN    Anywhere (v6)       

追加したルールに問題がなければ設定の読み込みを行います。

$ sudo ufw reload

ルールの追加が終わったら、10022番ポートを使用してSSH接続を行って動作確認を行ってください。

問題なく接続できるようでしたら、もともと設定されていた22番ポートを許可するルールを削除しておきましょう。

初期設定のSSH通信許可ルールを削除

「ufw status numbered」で設定されているルールの番号を表示させます。

$ sudo ufw status numbered 
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    ALLOW IN    Anywhere                  
[ 2] 10022/tcp                  ALLOW IN    Anywhere                  
[ 3] OpenSSH (v6)               ALLOW IN    Anywhere (v6)             
[ 4] 10022/tcp (v6)             ALLOW IN    Anywhere (v6)    

ufw deleteで削除したいルールの番号を指定して削除を行います。

初期状態で設定されていた1番のルールを削除します。

$ sudo ufw delete 1
Deleting:
 allow OpenSSH
Proceed with operation (y|n)? y  # 「y」を入力
Rule deleted

ufw status numberedを実行してルールが削除されたことを確認します。

$ sudo ufw status numbered 
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 10022/tcp                  ALLOW IN    Anywhere                  
[ 2] OpenSSH (v6)               ALLOW IN    Anywhere (v6)             
[ 3] 10022/tcp (v6)             ALLOW IN    Anywhere (v6)   

同様にIPv6用のルールも削除します。

$ sudo ufw delete 2
Deleting:
 allow OpenSSH
Proceed with operation (y|n)? y # 「y」を入力
Rule deleted (v6)

ルールが削除されていることを確認します。

$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 10022/tcp                  ALLOW IN    Anywhere                  
[ 2] 10022/tcp (v6)             ALLOW IN    Anywhere (v6)     

ルールの削除が終わりましたら、念の為に設定の再読込を行っておきます。

$ sudo ufw reload

ufwの使い方について

ufwの簡単な使い方を下記のページで説明しているので、よかったら参照してみてください。

【Ubuntu】ufwの使い方ー入門編ー
ufwの使い方 入門編ufwの使い方の入門編です。ufwはファイアウォール(iptables)の設定を簡単に行うためのコマンドで、サーバを運用していくためには良くお世話になります。今回は入門編ということなので、とりあえず普段良く使いそうな下...

パッケージ更新

サーバにインストールされているパッケージの更新も作業も行っておきましょう。

$ sudo apt update
$ sudo apt upgrade

サーバ再起動

ここまでの作業が完了したらサーバの再起動を行います。

$ sudo reboot

SSH接続テスト

サーバの再起動が完了したら、SSHの接続テストを行っておきましょう。

  • 一般ユーザログインできること
  • 22番ポートを使用してログインできないと
  • rootユーザでログインできないこと

以上で作業は完了となります、お疲れ様でした!

SSHサーバを公開鍵認証方式へ変更

運用上問題が無ければSSHの認証を公開鍵認証方式へ変更しておくことで、秘密鍵を持っているクライアントからしかログインすることができなくなり、セキュリティがより高まります。

ただし、公開鍵認証を導入することで下記のようなデメリットも発生しますので、内容を考慮した上で導入するかどうかの決めてください。

  • サーバの所有者でも秘密鍵がないと接続できない
  • 秘密鍵をなくすと再作成や再設定が必要になる

設定手順

設定方法については下記のページで解説しています。

【Ubuntu】SSHの認証を公開鍵認証へ変更する方法
SSHの認証を公開鍵認証へ変更UbuntuでSSHの認証をユーザ名とパスワードによる認証から、秘密鍵と公開鍵を使用した公開鍵認証方式へ変更する方法を説明していきます。公開鍵認証についてユーザ名とパスワードによる認証の場合、その情報が漏れてし...

秘密を鍵をなくしたら?

秘密鍵をなくした場合や秘密鍵が手元にない場合でも、ConoHaのサイトからコントロールパネルにアクセスし、そこのコンソールからVPSを操作することができるので、まったくVPSに接続する方法がなくなるということはありません。

コメント

タイトルとURLをコピーしました