- Ubuntuのインストール
- Raspberry Piの準備
- キーボード・ユーザー設定
- プライベートIPアドレス固定化
第2回 現在のページ
- SSH公開鍵認証
- サーバー側ファイアウォール
- swap領域の作成
- タイムゾーン・ホスト名設定など
- SSDマウント
- ドメイン取得・DDNS設定
- Nextcloudインストール
- サーバー・ルーターのポート開放
- SSL証明書取得
- Nextcloudへの外付けSSD認識
- 2要素認証
- 通知メール設定
- 主な参考元
#1. SSH公開鍵認証
今のままだとパスワード認証でサーバーにSSH接続出来てしまうので、セキュリティ上のリスクがあります。そこで、SSH公開鍵認証を有効化し、パスワード認証を無効化させます。
** [PC側の操作]**
PuTTYアイコンを右クリックしてPuTTYgen
を起動。TypeのEd25519
にチェックを入れ、Generate
をクリックしマウスを動かすとパスフレーズの入力を求められるので入力(大きめの桁にすること。また、認証時に使用するので必ず控えておく)。
その後、Save public key/private key
をクリックしてそれぞれ公開鍵、暗号鍵をユーザーのホームディレクトリ内の.ssh
フォルダに保存(もし無ければ作成)。
ここでは公開鍵はssh_ed25519_key.pub
, 秘密鍵はssh_ed25519_key
とする。
WinSCPなどのSFTP対応ソフトをインストールし、サーバーに接続。.ssh
ディレクトリ以下にあるssh_ed25519_key.pub
ファイルをサーバー側ユーザーのホームディレクトリにコピー。
** [サーバー側の操作]**
ホームディレクトリ上(~$)で
$ mkdir .ssh
$ chmod 700 .ssh
で.sshディレクトリを作成し、ユーザーのみに権限を与えます。
PuTTYgenで作成した公開鍵はそのままだと使用出来ないため、まずはOpenSSH形式に変換。
$ ssh-keygen -i -f ssh_ed25519_key.pub > opssh_ed25519_key.pub
次に、authorized_keysに追記(ファイルがない場合は作成されます)し、権限をユーザーのみに変更。
$ cat opssh_ed25519_key.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
最後に元ファイルの削除。
$ rm ssh_ed25519_key.pub opssh_ed25519_key.pub
** [PC側の操作]**
PuTTYを新たに起動し、CategoryのConnection
→ SSH
→ Auth
でBrouse
をクリックし、.ssh
フォルダ内に作成した秘密鍵ssh_ed25519_key
を選択。
Session
に戻りDefault Setting
をクリックした上でSave
をクリックすると次回以降もこの設定で始められます。
この状態で新たなセッションを開いた際、
login as:
Passphrase for key"ed25519-key~":
という表示が出れば成功です。鍵作成時のパスフレーズを入力することでログイン出来ます。
** [サーバー側の操作]**
これだけではまだSSH接続時のパスワード認証も可能な状態なので、
$ sudo vi /etc/ssh/sshd_config
でsshd_configファイルを開き、
PasswordAuthentication yes → noに変更
以下で設定を反映。
$ systemctl restart sshd
以後PuTTYで
Connection
→SSH
→Auth
にあるBrouse
欄を消去してログインしようとすると拒否されるようになります(公開鍵認証以外でのログインが拒否されるため)。
#2. ファイアウォールの設定
サーバー側の設定で最小限のポートのみを許可することでセキュリティを高めます。
まず、UFWにOpenSSHが登録されていることを確認
$ sudo ufw app list
次に、OpenSSHを許可
$ sudo ufw allow OpenSSH
最後に、UFWの有効化
$ sudo ufw enable
以下のコマンドで許可されたポートの確認が可能。
$ sudo ufw status
以後、新たなサービスを追加する際はポートの許可が必要になるので注意して下さい。
#3. swap領域作成
swap領域を作成しておくことで、メモリに負荷がかかる場合でも動作が安定します。
サーバー用ならメモリと同程度のサイズで大丈夫みたいです(今回は4GBを作成)。
NULL文字を4GB分書き込んだファイル/var/swapfile を作成し、ユーザーのみに権限を付与。
$ sudo dd if=/dev/zero of=/var/swapfile bs=1M count=4K
$ sudo chmod 600 /var/swapfile
/var/swapfile をスワップファイルに指定し、スワップ領域を有効化
$ sudo mkswap /var/swapfile
$ sudo swapon /var/swapfile
以下のコマンドで有効なメモリとswap領域の確認が出来ます。
$ free -h
/etc/fstabに書き込んでswap領域の設定を保存。
$ echo '/var/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
最後に、swappiness(スワップ頻度)を調整することで、動作が遅くなりがちなスワップ機能を極力使わないようにします。サーバーだと10程度が目安。
$ sudo sysctl vm.swappiness=10
$ sudo vi /etc/sysctl.conf
などで/etc/sysctl.conf をテキストエディタで開き、末尾に以下を記述。
vm.swappiness=10
これで次回起動時以降もスワップ領域の設定が適用されます。
#4. その他の基本設定
####ⅰ. タイムゾーンの設定
タイムゾーンを設定しておくことで、日本時間でシステム情報の確認が出来るので便利です。
$ sudo timedatectl set-timezone Asia/Tokyo
####ⅱ. ホスト名・mDNSの設定
ホスト名を設定し、mDNSを適用するとLAN内からホスト名.local
でアクセス出来るので何かと便利。
まず、ホスト名の設定
$ sudo hostnamectl set-hostname 任意のホスト名
次に、mDNSプログラムである avahi-daemon のインストール
sudo apt install avahi-daemon
これでホスト名.local
でもpingが通るようになります。