ConoHa VPS初期設定


ConoHa VPSの初期設定

OSはUbuntu18.04

ここでは、公開鍵認証を用いたSSH接続、ファイアウォールの設定までを行う

ユーザーを作成[1]

useraddで一般ユーザを作成し、 passwdでユーザのパスワード設定を行う。
-mオプションはユーザのホームディレクトリを作るためのもの。

例としてuser1を作成する。

[root]
$ useradd -m user1
$ passwd user1

idコマンドでユーザ情報を確認できる。

[root]
$ id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1)

次に、user1にsudo権限を与える。
usermod-aオプションがないと追加ではなく上書きになる。

[root]
$ usermod -aG sudo user1

再度、idコマンドで確認するとsudo権限が与えられていることがわかる。
sudo権限を持つユーザが作成できたのでsuコマンドでユーザを切り替える。

[root]
$ su - user1

SSH接続

一般ユーザでパスワード認証のSSH接続が出来るか確認する

windowsの場合

$ ssh -l [ユーザー名] [IPアドレス]

UNIX系の場合

$ ssh username@ipアドレス

rootユーザでSSH接続できないようにする

ConoHa側でsshd_configファイルのPermitRootLoginをnoにする

$ sudo vim /etc/ssh/sshd_config
#PermitRootLogin yes
PermitRootLogin no 

以下のコマンドでリスタートすると反映される

$ sudo systemctl restart sshd

rootユーザでSSH接続できなければOK

公開鍵認証でSSH接続する[2]

セキュリティを高めるために公開鍵認証に変更する。
目標はローカル環境で鍵を作成し、サーバ側へ公開鍵を登録すること。

クライアント側

公開鍵と秘密鍵を生成。

~/.sshディレクトリの中に公開鍵(hoge.pub)、秘密鍵が作られる。

ssh-keygen -t rsa -b 2048 -f <filename>
scpコマンドでファイルをサーバ側へコピー

サーバのルートディレクトリに公開鍵をコピー。

$ scp ~/.ssh/hoge.pub remote-username@server-address:~

コピーができたらサーバ側の作業に移る。

サーバ側

~/.ssh/authorized_keysファイルにコピーした公開鍵の内容を追加[2]
# SSHログイン
$ ssh remote-username@server-address

# (以下処理はサーバ側)
# 公開鍵がコピーされていることを確認
$ cd ~ && cat hoge.pub

#「.ssh」ディレクトリを作成・パーミッションを変更
$ mkdir ~/.ssh
$ chmod 700 .ssh

#「~/.ssh/authorized_keys」を作成・パーミッションを変更
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

# 公開鍵を「~/.ssh/authorized_keys」に追加
$ cat ~/hoge.pub >> .ssh/authorized_keys

$ exit

/etc/ssh/sshd_configを編集する。

# 以下の行のコメントアウトを解除する
#PubKeyAuthentications yes
#AuthorizedKeysFile .ssh/authorized_keys

クライアント側からSSH認証でログインする。
(パスワード認証ではなく公開鍵認証でログイン出来ることを確認)

~/.ssh/configでSSH接続するときに楽する

configに接続情報を書いておくことで指定したHost名で接続できる。

~/.ssh/config
# Conohaサーバ
Host conoha
    HostName <ipアドレス>
    User <username> 
    Port 22
    IdentityFile ~/.ssh/hoge # 秘密鍵
    TCPKeepAlive yes

接続するときは以下のコマンドで行う。

$ ssh conoha

SSH接続で使用するポート番号を任意の番号に変更[1]

ポート番号は49152番から65535番の間で設定する
ConoHa上の設定ファイルを変更する。また、ローカルのconfigファイルのポート番号も変更する。

$ sudo vim /etc/ssh/sshd_config
# Port 22
Port [任意の番号]

リスタートして設定を反映させる。

$ sudo systemctl restart sshd

余談(scpコマンドで.ssh/configに書いた情報を使う)

$ # scp <コピー元> <コピー先>
$ scp ~/home/hoge.txt <congigで設定したhost名>:~/home/

ファイアウォールの設定

ssh, http, ftp, httpsの接続のみを許可するように変更する。

# ufwの状態確認
$ sudo ufw status
> Status: inactive

# ufwを有効化する
$ sudo ufw enable

# アクセスはデフォルトで拒否設定
$ sudo ufw default deny

# 必要なプロトコルの通信のみを許可する
$ sudo ufw allow https/tcp # port:443
$ sudo ufw allow http/tcp # port:80
$ sudo ufw allow ftp # port:21

# sshの許可はポート番号を指定する(ここでは50000にする)
$ sudo ufw allow 50000

# 上記で設定したものが反映されているかを確認
$ sudo ufw status verbose

# ファイアウォールを再読込して反映
$ sudo ufw reload
出典

[1] VPSを借りたらやるべき最低限のセキュリティ初期設定
[2] SSHなるものをよくわからずに使っている人のための手引書