web-dev-qa-db-ja.com

防具は通訳言語を制限できますか?

インタプリタ/ vm言語(たとえば、python、Java、Shellスクリプト)の場合、特定のスクリプトまたはプログラムのみを制限するようにapparmorを設定できますか?もしそうなら、どのように?

7
Ian N

はい、可能です。 Ubuntu、特に電話でも使用されています。

基本的なapparmorスクリプトを取得するには、apparmor-utilsパッケージのaa-autodepを使用できます。

Pythonの簡単な例:

cat >> ~/myapp << EOF
#! /usr/bin/python
EOF

Sudo aa-autodep ~/myapp

cat /etc/apparmor.d/home.<user-name>.myapp

これにより、次のようなものが得られます。

# Last Modified: Mon Feb 24 18:31:50 2014
#include <tunables/global>

/home/sam/myapp flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/python>

  /home/sam/myapp r,
  /usr/bin/python2.7 ix,

}

その後、それを展開できます。

2
labsin

実際、「/usr/bin/python2.7 ix」を実際に使用するのは良い考えではありません。悪用されたコードは、シェルからpythonを実行する可能性があるため、たとえば:python -c 'some evil code'。これは間違いなくあなたが望むものではなく、サンドボックスの概念を完全に破ります(鎧は何ですか)

#include <tunables/global>

/home/sam/myapp flags=(complain) {
  #include <abstractions/base>


  /home/sam/myapp r,
  /usr/bin/python2.7 Cx -> trusted_domain,

  profile trusted_domain {

   #include <abstractions/....>

   #include <abstraction/python>
   ... your policy for data, logs, connections, python files...
  }

}
0
Yurii Oleynikov

Yuriiは混乱している可能性があり、「ix」は「Ux」または「ux」である「unconfined」を意味すると考えています。ここでは、シェルまたはサブプロセスからpythonを再度起動した場合のエスケープの脆弱性はありません。

実行フラグの詳細については、 https://gitlab.com/apparmor/apparmor/wikis/QuickProfileLanguage をご覧ください。

0
AppArmor User