zfsjlll

zfsjlll

趁着年轻,好好犯病

ウェブサイトのセキュリティ保護

image

システム: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オプションを開きます:

image

image

ドロップダウンメニューからバインドする VPS を選択します。

image

Assign Reserved IPをクリックします。

image

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を選択したポート番号に変更します。

この記事では、Debian11nanoテキストエディタを使用しています:

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


参考文献#

  1. ネットワークノート:ポートと一般的なポート番号
  2. セキュリティ対策
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。