![通常のユーザーが私のサーバーに危害を加える可能性はありますか?](https://rvso.com/image/760638/%E9%80%9A%E5%B8%B8%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%8C%E7%A7%81%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E5%8D%B1%E5%AE%B3%E3%82%92%E5%8A%A0%E3%81%88%E3%82%8B%E5%8F%AF%E8%83%BD%E6%80%A7%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
私はLEMP スタック (Ubuntu 20.04)これは私が完璧に構成し、最適化したものです。Web パネルはありません。最初は自分の Web サイトのみに使用していました。その後、いくつかのクライアント Web サイトをサーバーに追加し始めました。
彼らはウェブサイトのファイルを管理するために SFTP アクセスを要求したので、サーバー上の機密ファイルにアクセスしたり編集したりできないようにすることにしました。
使用を可能な限り分離するために行った変更のリスト:
- sudoユーザーを作成しました(サーバー管理者)とルートアクセスが無効になっています
chmod 700 /home/serveradmin
(それなし-R
)- クライアント用の通常のユーザーアカウント(例:client1、client2など)を作成し、それらすべてを追加しました。サーバー管理者グループ
- nginxユーザーを設定するサーバー管理者
- 各クライアントに異なる php-fpm プールを作成しました。(例: 所有者: client1 グループ: serveradmin(リスナーも同様)
- 機密性の高いウェブサイトのファイルを他のユーザーがアクセスできないようにする(例:wp-config.php ファイルにデータベースの資格情報が含まれる)
chmod -R 700
ウェブサイトの SSL フォルダー用。- そしてもちろん、クライアントごとに異なる MySQL ユーザーとデータベースを作成しました。
これで、誰も他の人の /home/clientX フォルダにアクセスできないことが 100% 確実になりました。少なくとも、ファイルを編集したり削除したりすることはできません。ただし、私は Linux の経験者ではなく、ホスティング プロバイダーでもありません。問題は、これらのクライアントは、/home フォルダー外のシステム ファイルにアクセスして編集することで、サーバーに損害を与えたり、損傷を与えたりできますか? (たとえば、/etc、/var/run パスは危険かもしれません)。
デフォルトのシステム ファイルのフォルダー/ファイル権限は変更しませんでした。
それで、私のサーバーは安全ではないのでしょうか? 安全性を向上させるためにまだ変更が必要ですか、それとも SFTP アクセスを完全に避けるべきでしょうか?
敬具。
答え1
少なくともポイント 3 と 4 は無効/安全ではありません。
- クライアント用の通常のユーザー アカウント (例: client1、client2...) を作成し、それらすべてを serveradmin グループに追加しました。
通常のユーザー アカウントはサーバー管理者とどのような関係があるのでしょうか? 名前に関してもまったく関係ありません。各サイト ユーザーをグループに所属させる意味は何でしょうかserveradmin
?
- nginxユーザーをserveradminに設定する
同様に、NGINXは自分のユーザー、通常はnginx
(CentOS/RHEL ディストリビューション) またはwww-data
(Debian ベースのシステム)。サーバー管理とは関係ありません。
PHP のソケット所有権、ファイルの場所など、さらに多くの詳細が必要なので、現在の設定がどのように安全でないかについては詳しく説明できません。
本当に安全な設定は、可能な限りユーザーを分離することを前提としており、これはサービスにも当てはまります。したがって、まずはNGINXに別のユーザーを割り当てる(またはパッケージで提供されているユーザーを使用する)ことから始め、PHP-FPM の安全な権限各サイト ユーザーのグループに含めるべきなのは NGINX のユーザーであり、その逆ではありません。
usermod -a -G client1 nginx
usermod -a -G client2 nginx
...
現在、ユーザーはグループnginx
に属しています。これは、ユーザーが Web サイトのあらゆるファイルを読み取ることができる必要があるためです。client1
client2
nginx
一方、PHP-FPM プールは、client1:client1
ランタイムとソケット リッスン オプションの両方にバインドしても問題ありません。