目次
1. パスワードログインの無効化
2. SSHポートの変更
3. ファイアウォールの設定
4. クラウドフレアトンネルの設定
はじめに
前回は自作サーバーにUbuntuをインストールしてメインPCとSSH接続できるようにしました。↓
今回は自宅サーバーにファイアウォールなどを設定してサーバーを公開していきます。
前提:
- サーバーにSSH接続ができる
- 独自ドメインを取得している
- cloudflareのアカウントを持っている
- cloudflareを独自ドメインのDNSサーバーとして使用している
1. パスワードログインの無効化
サーバー側で/etc/ssh/sshd_config
を開き、以下を追記します。
PasswordAuthentication no
ついでにrootユーザーでのSSH接続を無効化しておきます。
PermitRootLogin no
再起動をして設定を反映させます。
sudo reboot
2. SSHポートの変更
SSHポートをデフォルトの22番から変更しておくことでセキュリティを向上させることができます。
参考: https://dream.jp/vps/support/manual/mnl_security_03.html
/etc/ssh/sshd_config
に以下を追記します。
Port {ポート番号}
ポート番号は1024以上の番号にしましょう。
最後にメインPCの~/.ssh/config
でポート番号を指定します。
Host {サーバー名}
User ...
IdentityFile ...
HostName ...
Port {指定したポート番号} (←new!)
3. ファイアウォールの設定
サーバー側で以下のコマンドを実行します。
sudo ufw allow {SSHのポート番号}
sudo ufw enable
4. クラウドフレアトンネルの設定
4-1. サーバー側の設定
こちらのドキュメントに従って進めていきます。
- cloudflareのコンソールにログイン
- 「Zero Trust」→「Access」→「Tunnels」でトンネルの設定へ行き、「Create a tunnel」を選択
- 表示されたコマンドをサーバー側で実行
- 「Public Hostname」からドメインを選択。ServiceはSSHを選択して
localhost:{SSHのポート}
を指定する- 指定したホスト名は後で使うのでメモっておきましょう
4-2. クライアント側の設定
こちらのドキュメントに従って設定をしていきます。
まずはこちら↓のリンクからcloudflareのアプリをインストールします。
インストールが終わったらwhere cloudflared
で実行ファイルへのパスを確認します。
$ which cloudflared
/usr/bin/cloudflared (環境によって結果は異なります)
~/.ssh/config
の設定を以下のように修正します
Host {サーバー名}
User ...
IdentityFile ...
Port ...
ProxyCommand {先程確認したパス} access ssh --hostname {cloudflareで指定したホスト名}
これでssh {サーバー名}
とコマンドを実行するとサーバーにログインができるはずです。
おわりに
今回はcloudflare経由でサーバーにログインができるようにしました。これで自宅以外の場所からでもサーバーにアクセスできるようになりました。
次回は自宅サーバー上でWebサーバーを立てて公開できるようにしようと思います。
参考資料