🐧
【備忘録】Ubuntuリモートサーバーの初期設定
久しぶりにサーバーを立てるたびに調べているので自分用にまとめました。
とりあえずクライアント側から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