ユーザーが書くことができるスクリプトを実行するためにsudoを使用する場合のセキュリティリスク

ユーザーが書くことができるスクリプトを実行するためにsudoを使用する場合のセキュリティリスク

sudoを使用していくつかのコマンドを実行する必要があります。これらのコマンドは、gitリポジトリ(ドットファイルなど)にあるか保存されています.bashrc~/bin

~root私のユーザーを指すシンボリックリンクを置き$HOMEましたが、セキュリティの面ではあまり良くないと判断して削除しました。

私が心配しているのはルートではないユーザーがこれらのファイルへの書き込み権限を持っている場合、マルウェアは権限の昇格を実行する可能性があります。しかし、私の本では、多くのドットファイルストアが安全ではないことがわかりました。

から.bashrcsudo コマンドできるNOPASSWDを有効にします/etc/sudoers。スクリプトでは、bin/*.shコマンドからsudoを省略してrootに権限を付与することを検討していますが、gitが所有権を保存していないため、問題になる可能性があります。 (ほぼ)すべての個々のコマンドはsudoを必要とするので、ルートにスクリプトを割り当てる方が安全であることを除いて、技術的には同じだと思います。 Gitが問題を引き起こすと思います。

1つの考え方:NOPASSWDを使用してすべてのコマンドを承認し、/etc/sudoersrootパスワードを要求すると、何か間違った臭いがします。

追加情報:

  • これは複数のローカルシングルユーザーコンピュータで機能します。
  • 私のデスクトップコンピュータへの不正アクセスは問題にならないので、自動ログインを設定しました。
  • 私のラップトップでセッションを開始するにはパスワードが必要です。

今の質問が明確ではない場合、どうすればこれらのスクリプト/コマンドを安全な方法で配置できますか?特権の昇格のためにrootを使用すると、悪意のあるプログラムよりも私のユーザーデータに有害ですか?たぶん私があまりにも多くの考えをしているのではないだろうか?

答え1

書き込み可能なスクリプトは、ユーザーが見ていないときに邪悪なものに置き換えられる可能性があり、ルートがそれを実行するとゲームが終了します。

実際、あなたがマシンの唯一のユーザーであれば、リスクは低いです。ただし、通常、一般ユーザーのアカウントをハッキングする方が簡単です(マルウェアを含む電子メールを読む、悪意のあるウェブサイトに接続し、ランダムなソースをランダムにコンパイルして実行して「何をしているのかを確認する」など)。その後、root権限にアップグレードできます。

答え2

私が知っているすべてのオプション(/usr/local/bin、所有者のルート、書き込み権限の削除)を考慮して、各バージョンファイルに不変フラグを使用しました。

sudo chattr +i filename

所有者だけでなく、ルート以外のユーザーもこのフラグをリセットできます。ファイルや親ディレクトリも削除または置き換えることはできません。

ファイルを編集するために、次の機能を追加しました.bashrc

editrc () {
    sudo chattr -i $1
    nano $1
    sudo chattr +i $1
}

他のコンピュータではドットファイルを抽出する必要があり、そのためにはフラグを削除してからgit pull再適用する必要がありました。フラグをパラメータとして使用するヘルパー関数を作成しました。

protect-config () {
    FLAG=$1
    FILES=$(git ls-files | xargs -I @ -- find @ -type f | xargs echo)
    lsattr $FILES
    if [ "$FLAG" ]; then
        sudo chattr $FLAG $FILES
    fi
}

だが、私はそれを過度に考えている。しかし、今はその場にいます。主に良い習慣から抜け出した。


編集:追加されたセキュリティよりも不便であるため、使用しなくなりました。

関連情報