Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

Raspberry Pi 4BにUbuntu20.04でサーバー構築し、Nextcloudを導入してみた。第2回

Last updated at Posted at 2021-02-26

第1回

  • Ubuntuのインストール
  • Raspberry Piの準備
  • キーボード・ユーザー設定
  • プライベートIPアドレス固定化

第2回 現在のページ

  • SSH公開鍵認証
  • サーバー側ファイアウォール
  • swap領域の作成
  • タイムゾーン・ホスト名設定など

第3回

  • SSDマウント
  • ドメイン取得・DDNS設定
  • Nextcloudインストール
  • サーバー・ルーターのポート開放
  • SSL証明書取得

第4回

  • 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のConnectionSSHAuthBrouseをクリックし、.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でConnectionSSHAuthにある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が通るようになります。

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?