権限のないユーザーでrootコマンドを実行するソリューション -sudoスクリプト- セキュリティの脆弱性が非常に高く、予期しない動作や結果が発生する可能性が高いです(他のソリューション(バイナリラッパーなど)でも同様ですsetuid
)。
明らかに、スクリプトは以下のようにvisudoを使用して追加されました。
www-data ALL=(ALL) NOPASSWD: /usr/local/sbin/mycommand
- しなければならない読める、書き込み可能そしてルートとしてのみ実行可能- 所有者とグループの両方(
chown root:root mycommand; chmod 700 mycommand
) - それを持たなければならない親ディレクトリの所有権
root:root
755
パターン付き - 入力を確認する必要があります。- パラメータと標準入力 - 実行拒否と中断無効または予期しない提供されたデータ
- 相対パス/エイリアス(?)の代わりに絶対パスを使用する必要があります。
Defaults env_reset
設定する必要があります/etc/sudoers
(?ここで助けが必要です)
sudoサポートスクリプトを保護するために何ができますか?
ベストアンサー1
sudoers
最良の方法の1つは、ファイルの "Digest_Spec"の可能性を使用して実行可能ファイルのチェックサムをチェックすることです。
マニュアルページから抜粋:
コマンド名の前にDigest_Specが付いている場合、指定されたSHA-2ダイジェストを使用して解決できる場合にのみ、コマンドは正常に一致します。
openssl を使用してチェックサムを生成します。
$ openssl dgst -sha224 /usr/local/sbin/mycommand
SHA224(/usr/local/sbin/mycommand)=
52246fd78f692554c9f6be9c8ea001c9131c3426c27c88dbbad08365
次に、sudoersファイル(同じ行に):
www-data ALL=(ALL) NOPASSWD:
sha224:52246fd78f692554c9f6be9c8ea001c9131c3426c27c88dbbad08365
/usr/local/sbin/mycommand