🐧

【備忘録】Ubuntuリモートサーバーの初期設定

2022/11/06に公開

久しぶりにサーバーを立てるたびに調べているので自分用にまとめました。
とりあえずクライアント側からSSHで接続できるまでの内容です。
Ubuntu 22.04を想定しています。

hostname の設定

$ sudo hostnamectl set-hostname <hostname>

パッケージリストの更新

$ sudo apt update

インストール済みパッケージの更新

$ sudo apt upgrade

一般ユーザーの作成

あとでrootでのリモートログインを禁止するので、リモートログイン用のユーザーを作成します。

$ sudo adduser <username>
Adding user `username' ...
Adding new group `username' (1000) ...
Adding new user `username' (1000) with group `username' ...
Creating home directory `/home/username' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for username
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y

作成したユーザーがsudoを使えるようにする

$ sudo gpasswd -a <username> sudo

作成したユーザーでSSHログインできるか & sudoが使えるかを確認しておきます。

ファイアウォールの設定

ufw インストール

$ sudo apt install ufw

IPv6無効化

/etc/default/ufw
#IPV6=yes
IPV6=no

接続を許可するIPアドレスを設定

sudo ufw allow from xxx.xxx.xxx.xxx

※ この設定は指定したIPアドレスからのすべてのポートへのアクセスを許可します。
もし、IPアドレスでの制限ではなくポートでの制限、もしくはIPアドレス&ポートでの制限をする場合はそれに応じた設定をしましょう。
参考:UFWの設定方法 Qiita

指定したルール以外は全て許可しないようにする

$ sudo ufw default deny

ufw 有効化

許可したルールから外れる場所からSSH接続していた場合、切断されるので注意!

$ sudo ufw enable

すでに起動している場合は

$ sudo ufw reload

とします。

確認

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
Anywhere                   ALLOW       xxx.xxx.xxx.xxx

公開鍵でのSSH接続

このあとにパスワードでのSSH接続を禁止するので先に準備します。

キーの生成

クライアント側で生成します。

$ ssh-keygen -t rsa -b 4096

パスフレーズなどの設定を聞かれるので設定します。

公開鍵をリモートに登録

公開鍵を生成したらリモートへ公開鍵を転送。(TeraTermならドラッグ&ドロップでSCP転送など)
その公開鍵を~/.ssh/authorized_keysで保存します。

$ mv id_rsa.pub ~/.ssh/authorized_keys

これで公開鍵での接続ができるはずなので、接続ができるか確認。

sshdの設定

rootログインを禁止

/etc/ssh/sshd_config
#PermitRootLogin yes
PermitRootLogin no

パスワード認証を禁止

パスワード認証を禁止する場合、PAM認証も禁止します。

/etc/ssh/sshd_config
#PasswordAuthentication yes
PasswordAuthentication no
.
.
.
#UsePAM yes
UsePAM no

sshの再起動

$ sudo service ssh restart

おまけ

docker

dockerを入れることが多いのでここに書いておきます。

dockerのインストール

docker 公式 (丸投げ)

※ この公式の手順に従ってインストールするとdocker-composeはdocker-composeではなくdocker composeで使えます。

一般ユーザーでdockerを実行できるようにする

そのままだとdockerを実行するのにsudoしなくてはいけないので、一般ユーザーをdockerグループに所属させます。

  • 現在の状態を確認
$ getent group | grep docker
docker:x:999:
  • 一般ユーザーをグループに追加
$ sudo usermod -aG docker <username>
  • 追加後の状態を確認
$ getent group | grep docker
docker:x:999:<username>

参考

Discussion