新しいWebサーバー:どのユーザーアカウントを作成し、どの権限を提供する必要がありますか?

新しいWebサーバー:どのユーザーアカウントを作成し、どの権限を提供する必要がありますか?

これは私の質問に対するフォローアップです。ここ

私は最初のWebサーバーを設定しており、よりセキュリティを確保するためにどのユーザーアカウントを作成し、権限を作成する必要があるかを調べています。以下は私が持っているものです。

私は2人の開発者のための2つのアカウントを持っていて(そして彼らはサプリメントグループに追加されましたdevs)、彼らだけがサーバーにSSHを介してアクセスできます。 Webアプリケーション(Djangoベース)の場合、シェルアクセス権を持つ1人の一般ユーザーを作成しましたapp(ユーザーで構成されておらず、--systemグループに属していますapp)。 2人の開発者がサーバーにSSHでアクセスしたら、アップデートを実行してappアプリケーションを起動/停止します。appユーザーは実行できません(su使用中のグループ設定に追加しないためブロックされます)。また、cronジョブがsshを介してログファイル、ステータスなどを取得するバックアップ関連のタスクを実行できない3番目のアカウントもあります。/etc/pam.d/supam_wheel.sosu

セキュリティの改善が必要な場合はお知らせください。 (PS:私は初心者です)

答え1

su共有パスワードが必要です。私はSudoを好む。したがって、開発者はsudo -u app command実行して実行することも、対話型シェルを起動するために実行することもできます。おそらく、シェルを/bin/falseまたは/bin/trueのように設定した場合です。commandappsudo -u app -iappsudo -u app -i /bin/bashapp

アプリケーションにフルシェルは必要なく、アプリケーションを再起動する必要がある場合は、アプリケーションとして実行できるコマンドを制限できます。アクセスする必要があるディレクトリにデフォルトのACLを使用すると、開発者とアプリケーションにアクセス権が付与されるため、ファイルシステム権限の問題は発生しません。 IMHOの最小権限原則に従う必要があります。必要でない場合は、この操作を実行する権限を付与しないでください。

通常、私はssh用のキーを使用することを好みます。可能であれば、開発者パスワードを無効にし、sudoルールを設定してパスワードを要求しないようにしてください。これにより、誰もパスワードを必要としないため、パスワードを漏洩/紛失/リセットできません。

今夜の読書課題は、この記事に「ファイルシステムACLの仕組み」と「sudoの設定方法」という内容がたくさん含まれているからです。おそらく以下はSSHキーを管理することです。

関連情報