web-dev-qa-db-ja.com

SFTPによって変更可能でなければならないrootとして実行されるプログラムの構成ファイルの権限

シェルスクリプト(myscript)は、cronによってrootとして実行されます。構成ファイルからIPアドレスを読み取り、iptablesを更新して、受信接続のIPをホワイトリストに登録します。

myscriptは、正規表現(正規表現)を使用して、構成ファイルを解析し、行の先頭にあるIPアドレスを探します。 IPアドレスの構造と長さに一致しないものはすべて無視されるため、バッファオーバーフローまたは特権昇格の明らかなリスクはありません。

運用上の理由から、この構成ファイルは、Sudoへの認証ができない旧式のGUI SFTPプログラムからSFTP経由でのみアクセスできる特定の信頼できる人物が更新できる必要があります。 (Cyber​​Duck、FileZilla、WinSCPを考えてください。)この人はマシン上で他に何もすべきではありません。明らかに、非rootアカウントを介してログインする必要があります。彼らのアカウントをsftp-userと呼びましょう。

ほとんどのGNU/Linux構成ファイルのように、構成ファイルにroot:rootが所有者お​​よびグループとして含まれている場合、sftp-userがそれらを編集する唯一の方法は、sftp-userアカウントにパスワードがない場合Sudo特権。これは危険です。アカウントに必要以上の力を与えます。したがって、リスクの少ない代替手段が必要です。

私の質問は次のとおりです。これは、その構成ファイルに必要なアクセス許可の最もリスクの少ないセットであり、その理由は何ですか?

permissions  owner      group
----rw----   root       sftp-user
-rw-------   sftp-user  root
-rw-------   sftp-user  sftp-user

David に応じて編集 answerはい、通常の状況では、上記の権限は同等です。 sftp-userグループの唯一のメンバーがsftp-userであるとすると、それぞれのメンバーはsftp-userrootへの読み取り/書き込みアクセスのみを許可します。しかし、異常な状況についてはどうでしょう。構成の1つが他の構成よりもリスクが少ないのでしょうか。例えば。ルート所有者と非ルートグループ(またはその逆)を混在させることは悪い考えであるなど、ファイルの所有権のみによる特権昇格の事例はありますか?

2
sampablokuper

sftp-userグループの唯一のメンバーがsftp-userであるとすると、リストしたすべての権限は同等になります。ファイルを読み書きできるユーザーはsftp-userrootだけです。

これにアクセスできる複数の人が必要になる場合に備えて、個人的にはこのための「役割グループ」を作成することを選択します(おそらく、ファイアウォール管理者の場合はfwadmins)。次に、権限を0660として所有者rootおよびグループfwadminsに設定します。

-rw-rw----   root     fwadmins

rootの許可ビットも明示的に設定することをお勧めします。はい、rootcanどちらの方法でも編集できますが、明示するのは少しすっきりしています。

2
David

Rootとしてmyscriptを実行することは問題です。ルート権限はiptablesに必要ですが、これは権限分離を介して実装できます。現状では、設定管理者がrootアクセス権を取得する大きなリスクがあります。

それが私なら、所有者として-rw-r--r-- sftp-userを使用し、実行時ユーザー(rootではない)へのアクセスを提供するグループ/その他の特権を使用します

1
symcbean