システム:Debian11 bullseye
問題#
最近、typcecho を使用して恋愛サイトを構築しましたが、まだサイトは公開されていません。突然、IP が漏洩した内部コメントを受け取りました。サイトをセキュリティ対策する時が来たと判断しました。
アイデア#
SSH リモートアクセスにはIPアドレス
、ポート番号
、ユーザー名
、パスワード
が必要です。ハッカーが VPS に侵入するためにも、これらの 4 つの要素を知る必要があります。したがって、これらの 4 つの側面から保護を行います。
手順#
1. IP アドレス#
ハッカーは悪意のあるスクリプトを使用して IP 範囲をスキャンすることがありますが、基本的には公開されていることがわかります。ただし、私が使用している VPS サービスプロバイダである DigitaOcean には、予約済み IP(Reserved IP)の機能があります。この機能を使用して、パブリック IP を VPS にバインドし、今後はこの IP を使用して公開することで、ウェブサイトのセキュリティを一定程度確保できます。
DigitalOcean の予約済み IP アドレスは、Droplet に割り当てて、必要に応じて別の Droplet に再割り当てできる、一般にアクセス可能な静的 IP アドレスです。予約済み IP を使用してフェイルオーバーメカニズムを実装し、高可用性のインフラストラクチャを構築できます。
VPS のNetworking
-Public Network
-RESERVED IP
オプションを開きます:
ドロップダウンメニューからバインドする VPS を選択します。
Assign Reserved IP
をクリックします。
2. ポート番号#
デフォルトの SSH ポートは 22 ですので、ハッカーにとっては既知の項目です。したがって、SSH ポートを未知の項目に変更する必要があります。
通信ポート番号は、16 ビットの符号なし整数で表され、0 から 65535 の範囲を持ちます。
TCP プロトコルでは、ポート番号 0 は予約されており、使用できません。
1-1023 はシステム予約で、root ユーザーのみが使用できます。
1024〜4999 はクライアントプログラムによって自由に割り当てられます。
5000〜65535 はサーバープログラムによって自由に割り当てられます。¹
root ユーザーの重要性を考慮して、後で[ユーザー名]
で詳しく説明しますが、非 root ユーザーでログインすることをお勧めします。したがって、ポート番号は 1024-65535 の範囲内で任意の番号を選択できます。
VPS にログインし、/etc/ssh/sshd_config
ファイルでPort 22
を選択したポート番号に変更します。
この記事では、Debian11
とnano
テキストエディタを使用しています:
nano /etc/ssh/sshd_config
Port 22
を見つけて他のポート番号に変更し、保存して SSH サービスを再起動します。以降、SSH にログインするために設定したポートを使用する必要があります。
systemctl restart ssh
3. ユーザー名#
root ユーザーはシステムの最高権限を持っており、ハッカーが root 権限を取得すると、自由に操作できる状態になります。ボットネット
がマイニングや DDoS などの違法行為を行い、ハッカーのツールとなる可能性があります。そのため、root ユーザーのリモートログインを無効にし、通常のユーザーを作成してサーバーの日常的なメンテナンスなどを行うことをお勧めします。sudo
をインストールして、より高い権限の操作を行うために一時的に root 権限を取得します。
Linux および Unix システムでは、sudo は現在のユーザーの権限を昇格させるためのコマンドです。通常、一般ユーザーには制限された権限しかなく、管理者権限が必要な操作を実行できません。sudo コマンドを使用すると、一時的に現在のユーザーの権限を昇格させ、管理者権限が必要な操作を実行できるようになります。
通常のユーザーを作成します。
adduser _your_vps_name
sudo をインストールします。
apt update && apt install sudo
注:sudo コマンドを使用する際には、毎回 root パスワードを入力する必要があります。操作を簡略化するために、設定ファイルを変更することもできますが、自分が何をしているかを理解している必要があります。
sudo ユーザーの権限を変更します。
visudo
User Privilege Specification
を見つけ、root ユーザーの下に以下を追加します。
vpsadmin ALL=(ALL) NOPASSWD: ALL
4. パスワード#
理論的には、時間が十分にあれば、パスワードは完全に解読可能です。ハッカーはパスワードテーブルなどのツールを使用してアカウントのパスワードを解読することもできます。したがって、パスワードログインを使用せず、キーベースのログイン方法を選択し、ssh で対応する公開鍵と秘密鍵を生成し、公開鍵を VPS にアップロードすることで、秘密鍵を使用してリモートログインすることができます。秘密鍵が漏洩しないようにするだけで、秘密鍵はローカルに保存し、サーバーに保存しないようにすることをお勧めします。
SSH キーペアを生成し、公開鍵をサーバーにアップロードするには、次の手順に従ってください。
ターミナルまたはコマンドラインインターフェースを開き、次のコマンドを入力してキーペアを生成します。
ssh-keygen -t rsa -b 4096 -C "<[email protected]>"
ここで、-t rsa は RSA タイプのキーペアを生成することを意味し、-b 4096 はキーペアの長さが 4096 ビットであることを意味します。-C パラメータの後にはコメント情報があり、必要に応じて変更できます。
上記のコマンドを実行すると、システムはキーペアの保存パスとファイル名を入力するように求めます。デフォルトのパスは~/.ssh/ で、ファイル名は id_rsa と id_rsa.pub です。キーをデフォルト設定で保存するか、必要に応じて変更できます。公開鍵ファイルを保存する場合、ファイル名は id_rsa.pub でなければなりません。そうしないと、サーバーは公開鍵を認識できません。
キーペアが生成されたら、次のコマンドを使用して公開鍵をサーバーにアップロードします。
ssh-copy-id username@hostname
ここで、username はサーバー上のユーザー名であり、hostname はサーバーのホスト名または IP アドレスです。このコマンドを実行すると、サーバーのパスワードを入力するように求められます。入力すると、公開鍵が自動的にサーバーの~/.ssh/authorized_keys ファイルに追加されます。
ssh-copy-id コマンドを使用できない場合は、公開鍵を手動でサーバーの authorized_keys ファイルにコピーすることもできます。ローカルターミナルで次のコマンドを使用して公開鍵ファイルを開きます。
cat ~/.ssh/id_rsa.pub
公開鍵ファイルの内容をすべてコピーし、サーバーで~/.ssh/authorized_keys ファイルを開き、公開鍵をファイルに貼り付けます。ファイルを保存した後、秘密鍵を使用してサーバーに接続できます。
まとめ#
上記の 4 つの手順により、基本的なウェブサイトのセキュリティを実現できます。
記事の更新日:2024/3/27