Johnman.md

プログラミングのことや個人的なことを書きます。たぶん。

VPS借りた時にやるべき最低限の初期設定

個人ページの証明書が切れていたんだけど、過去の自分が設定した諸々がわからなくなっててうまく更新できなかった。

なので改めてVPS立ち上げ直して、その設定も諸々残しとこうと思います。この記事はその中の初期設定編。

環境

今回のサーバーはこんなスペックです。

ちなみに利用しているサービスはConoHaです。

OS CentOS 8.0(64bit)
CPU 2Core
メモリ 1GB
SSD 50GB

一般ユーザの作成とrootでのログインの無効化

普段からrootでログインするのは危険なので無効化します。
その代わりに、普段使う用のユーザを作成し、root権限が必要なコマンドはsudoを使うようにします。

まずはサーバへ入り、ユーザの作成とパスワードを設定。

[root@ip ~]$ useradd hoge
[root@ip ~]$ passwd hoge
Changing password for user hoge.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

次に、sudo権限を持たせるためにwheelグループへ追加。

[root@ip ~]$ usermod -G wheel hoge

wheelグループのユーザーはすべてのコマンドをsudoで実行できるように visudo コマンドで設定を書き換えます。

[root@ip ~]$ visudo

ここの # を一つ消すだけ。

## Allows people in group wheel to run all commands
# %wheel  ALL=(ALL)       ALL

ConoHaのVSPの場合は初めから有効になってました。

最後にrootユーザでのログインを禁止します。

[root@ip ~]$ vi /etc/ssh/sshd_config
PermitRootLogin yes ← ここを no に変更

sshdを再起動します。

[root@ip ~]$ systemctl restart sshd.service

これでrootユーザでログインできなくなっているはずなので、別窓で確認してみるといいと思います。

ついでに作成したユーザでログインして、sudoが使えるかもみてみるといいかもしれません。

パッケージのアップデート

起動した際のパッケージが最新かどうかわからないので、アップデートします。

CentOS 8になって、パッケージ管理がyumからdnfに変更されたそうです。

[hoge@ip ~]$ sudo dnf -y update

SSH接続できるようにする

公開鍵の設定

パスワードで接続するのもセキュリティ上やりたくないので、鍵で接続できるようにします。

ぼくはMacを使っているので、Macでの設定を書きます。
ConoHaは画面上で作成できますが、ほかのVPSでも対応できるようにコマンドで作成します。

$ cd ~/.ssh
$ ssh-keygen -t rsa -f conoha_rsa

作成したら、ssh接続をするユーザ(今回はhoge)でサーバへログインします。
その後、Macで作成した公開鍵の方をサーバに登録します。

[hoge@ip ~]$ mkdir .ssh
[hoge@ip ~]$ chmod 700 .ssh
[hoge@ip ~]$ vi .ssh/authorized_keys

ここで、Macで作成した公開鍵(~/.ssh/conoha_rsa.pub)の内容を貼り付けます。catコマンドとか使えば内容を確認できます。

保存したら、権限を変更します。

[hoge@ip ~]$ chmod 600 .ssh/authorized_keys

Firewallの設定

sshは22番ポートを使いますが、デフォルトのままだと攻撃のリスクがあるため、port番号を変更します。 今回は例として、60022番に設定します。

まず、firewallコマンドで、ポート60022番を解放します。

--permanent オプションを忘れると、再起動時に設定が消えるので注意です。

[hoge@ip ~]$ sudo firewall-cmd --add-port=60022/tcp --zone=public --permanent

ポートの解放状況は、以下のコマンドで確認できます。

[hoge@ip ~]$ sudo firewall-cmd --list-all

SELinuxの設定

次に、SELinuxの設定を変更します。

[hoge@ip ~]$ sudo dnf install -y policycoreutils-python-utils
[hoge@ip ~]$ sudo semanage port -a -t ssh_port_t -p tcp 60022

sshdの設定

sshデーモンの設定を書き換えます。

また、鍵を使ってログインするので、パスワードによるログインも禁止します。

[hoge@ip ~]$ sudo vi /etc/ssh/sshd_config

変更前

(略)
#Port 22
(略)
PasswordAuthentication yes

変更後

(略)
Port 60022
(略)
PasswordAuthentication no

設定したら、またsshdを再起動します。

[hoge@ip ~]$ sudo systemctl restart sshd.service

Macからログインできるか試します。

$ ssh hoge@ip -p 60022 -i ~/.ssh/conoha_rsa

Firewallの設定(HTTP、HTTPS

最後にFirewalldの設定を行います。

先ほどはsshのためのポートだけ設定しましたが、ここではHTTP、HTTPSも追加します。

[hoge@ip ~]$ sudo firewall-cmd --add-service=http --permanent
[hoge@ip ~]$ sudo firewall-cmd --add-service=https --permanent

設定を反映させるため、reloadします。

[hoge@ip ~]$ sudo firewall-cmd --reload

これで一通りの設定は終わりです。

ここからWebサーバー用の設定なんかを追加していきます。

参考