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名で接続できる。
# 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なるものをよくわからずに使っている人のための手引書] (https://qiita.com/kenju/items/b09199c4b3e7203a2867)