ほとんどのLinuxシステムでは、サービスアカウントのデフォルトシェルとして/sbin/nologin
または/bin/false
を使用しているようです。 CISベンチマークなどの多くの強化ガイドでは、これらのアカウントのデフォルトのシェルを/dev/null
に変更することを推奨しています。多くの推奨事項に分析が添付されていますが、これは私が正当化したことを一度も見たことがないものです。この推奨事項を推進しているのはどのような懸念であり、緩和しようとしている脅威は何ですか?
私が知っている唯一の真の技術的な理由は、悪意のあるファイルの置換の可能性です。任意のファイルに書き込む方法を見つけた攻撃者を考えます。/sbin/nologinまたは/ bin/falseを/ bin/bashのコピーで上書きできる場合、サービスユーザーとしてログインし、そこから引き続き特権を昇格させる方法を見つけることができます。
ただし、/ dev/nullは、さまざまな理由により、このような方法で簡単に置き換えることはできません。
非技術的な理由もあります。これは、多くの管理者が昔から学んだ伝統や習慣に縛られているためです。/dev/nullは、この使用法のより一般的な選択でした(/ sbinは確かです)/nologinは20年前には存在しませんでした)。あなたがそうするものを作りなさい。
すばらしい質問です。私の知る限り、このアドバイスは正当化されません。私の知る限り、それは悪いアドバイスです。 /bin/false
または/sbin/nologin
で結構です。 (何かを見逃した場合は、見落としていることを知りたいと思います。)
私はLinuxの第一人者ではありませんが、これをWindowsのサービスアカウントの推奨事項と比較すると、対話型ログオンの可能性を含め、すべての特権を削除することに相当すると思います。
これはおそらく、攻撃対象領域/最小限の特権を最小限に抑える問題です...:
必要なければ、電源を切ってください。
/ dev/nullを使用すると、不正な対話型シェルログイン試行のセキュリティ監査ログが生成されません。