web-dev-qa-db-ja.com

アプリケーションプロセスのみを実行するシステムユーザーを保護するにはどうすればよいですか?

インストールしたアプリケーションで使用するために、adduserコマンドを使用してシステムユーザーを作成しました。このユーザーは、アプリケーション固有のプロセスなどを実行することになっています(postgresシステムユーザーがpostgres関連のものを実行するだけであると考えてください)

このユーザーはアプリケーションの入札以外は何もしませんが、人間がこのユーザーでログインするのを防ぐ方法はありますか?このユーザーはどのグループにも属していません(したがって、sshログインやその他のグループ権限について心配する必要はありません)。ホームフォルダがないとログインを防ぐことができると読みましたが、アプリケーションをコンパイル/インストールした場所であるため、このユーザー用のホームフォルダが必要でした。

人間がこのユーザーアカウントにログインできないようにする以外に、考慮すべきセキュリティ上の考慮事項はありますか?

2
user1812844

「実際の人間のユーザーアカウント」のように、人々がこのユーザーアカウントを使用できないようにするには、2つのことを行う必要があります。

いかなる目的でもこのアカウントとしてログインする必要はないため、最初に行うべき最も重要なことは、パスワード認証が成功しないようにすることです。 ガントバートの優れた答え これを詳細に説明しています。要約すると、次を実行できます。

_Sudo passwd -l user_

それとは別に、ユーザーのlogin Shellを、操作を実行せずにすぐに終了するものに設定することもお勧めします。

_Sudo chsh -s /bin/false user_

そのように:

  • パスワード認証以外のメカニズム( キーベースの認証) を使用してユーザーとしてログインし、シェルを取得すると、通常は失敗します。ただし、SSH関連の一部の機能が機能する可能性はあります。

    たとえば、ユーザーに対してキーベースの認証が有効になっている場合でも、誰かがそれを使用して、scpまたはsftpのSSH接続を認証して開くか、暗号化されたトンネルを作成し、他の機能にアクセスする可能性があります。

  • ログインシェルをシミュレートしようとすると、通常は失敗します。ただし、rootとしてプログラムを実行できる人、またはユーザーとして認証するためのパスワードベースではない方法を持っている人は、ログインシェルと同じ機能を提供する非ログインシェルを実行できることがよくあります。

    たとえば、userのシェルを_/bin/false_に設定すると、_su - user_および_Sudo -i -u user_(とりわけ)が動作中、rootとして実行された場合でもただし、_su user_、_Sudo -s -u user_、または_Sudo -u user bash_(とりわけ)の動作を妨げることはありませんrootとして実行されます。

明らかに、パスワード認証を介してすでにログインできず、すでにキーベース認証が構成されていないユーザーのログインシェルを無効にしても、大きなメリットはありません。 では、なぜそれを行うのですか?理由:

  • doログインする(またはログインをシミュレートする)前に、user

  • ユーザーのシェルを機能しないものに設定することは、_/etc/passwd_を読んでいるユーザーに、ユーザーが人間を表しておらず、インタラクティブになりすますことを意図していないことを示す便利で通常は効果的な方法です。

    (Ubuntuおよびその他の最新のUnixライクなシステムでは、_/etc/passwd_はアカウント情報を保存しますが、実際のパスワードハッシュは保存しません。これらは_/etc/shadow_にあります。_/etc/passwd_は、上のすべてまたはほとんどの人間ユーザーが表示できます。非管理者を含むシステム。)

  • 何らかの理由でユーザーのパスワード認証が再度有効になった場合、ユーザーのログインシェルが機能しないと、通常、セキュリティ上の大きなメリットが得られます。

1
Eliah Kagan

アカウントをロックして、有効なパスワードを入力できないようにする必要があります。

Sudo passwd -l username

これで、パスワードを使用したこのアカウントへのログインは無効になりますが、suroot権限(Sudo -iなど)で実行されているプロセスから)を介してログインします。 ))またはssh-keys(おそらく有効にしていない)は引き続き可能です。必要なプログラムを実行できなかったため、アカウントを完全に無効にすることはお勧めしません。

コマンド/etc/shadowSudo vipw -sを編集し(vipwはファイルをロックして破損を防ぎ、お気に入りのCLIエディターを呼び出します)、最初のコロンの後の文字列を!に置き換えることで、ほぼ同じことを実現できます。

 mysysuser:!:15819:0:99999:7:::

2番目のルートを使用する場合は、/etc/shadowをバックアップすることをお勧めします(間違いの場合)。 1つの方法はSudo cp /etc/shadow /etc/shadow.oldです。新しい構成が機能したら、バックアップ(Sudo rm /etc/shadow.old)を削除します。ユーザーの不要なコピーが余分にあるのは悪いと見なされる可能性があるためです。 パスワードハッシュ 横になっています(パスワードが変更されると、ハッシュは消えます)そのため、古いハッシュがまだ設定されている可能性のある他のシステムにアクセスするために、古いハッシュを解読することはできません)。

1
guntbert