bane
v0.4.4
Dockerコンテナ用のApparmorプロファイルジェネレーター。基本的には、誰がそれをするのかを手にするよりも、より良いApparmorプロファイルです。
「Apparmorプロファイルプルリクエストのレビューは私の存在の悩みです」
ジェス・フレイゼル

目次
インストール
バイナリ
Go経由
使用法
ファイルグローブ
構成ファイル
プロファイルのインストール
生成されたプロファイルはどのように見えますか?
Dockerとの統合
バイナリからのインストール手順については、リリースページにアクセスしてください。
$ GOT GITHUB.com/genuinetools/baneを取得します
$ BANE -HBANE -DOCKER CONTERERSUSAGEのカスタムApparmorプロファイルジェネレーター:Bane <command>フラグ:-dデバッグロギングを有効にする(デフォルト:false)-Profile-dirプロファイルを保存するため(default:/etc/apparmor.d/containers)コマンド:バージョンバージョン情報を表示します。
sample.tomlは、コンテナ内のnginxのApparmorサンプル構成です。
| グローブの例 | 説明 |
|---|---|
/dir/file | 特定のファイルに一致します |
/dir/* | ディレクトリ内のファイルを一致させる(ドットファイルを含む) |
/dir/a* | ディレクトリ内のファイルをaから始める |
/dir/*.png | .pngで終了するディレクトリ内のファイルを一致させます |
/dir/[^.]* | DOTファイルを除くディレクトリ内のファイルを一致させます |
/dir/ | ディレクトリを一致させます |
/dir/*/ | /dir /内の任意のディレクトリを一致させる |
/dir/a*/ | aから / dir /開始のディレクトリを一致させます |
/dir/*a/ | aで / dir / ending内の任意のディレクトリを一致させます |
/dir/** | /dir /以下のファイルまたはディレクトリを一致させる |
/dir/**/ | 任意のディレクトリ /以下 /dir / |
/dir/**[^/] | /dir /以下のファイルを一致させる |
/dir{,1,2}/** | /dir /、 /dir1 /、および /dir2 /以下のファイルまたはディレクトリを一致させる |
上から構成ファイルがあるので、インストールしてみましょう。 bane 、ディレクトリ/etc/apparmor.d/containers/にプロファイルを自動的にインストールし、 apparmor_parserを実行します。
$ sudo bane sample.toml#プロファイルインストールに正常にインストール# `docker run - security-opt =" apparmor:docker-nginx-sample "`#nginx $ docker run -d - security -opt = "apparmor:docker-nginx-sample" -p 80:80 nginx
カスタムApparmorプロファイルを使用することはかつてないほど簡単になりました!
次に、サンプルプロファイルで悪意のあるアクティビティを試みましょう。
$ docker run -security-opt = "apparmor:docker-nginx-sample" -p 80:80 - rm -it nginx bashroot@6da5a2a930b9:〜#ping 8.8.8.8ping:raw socket.root@6da5a2a930b930b930b930b930b9 :/#topbash:/usr/bin/top:許可DENIEDROOT@6DA5A2A930B9:〜
LogOnWritePathsを使用するときのdmesg出力のサンプル:
[ 1964.142128] type=1400 audit(1444369315.090:38): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="docker-nginx" pid=3945 comm="apparmor_parser" [ 1966.620327] type=1400 audit(1444369317.570:39): apparmor="AUDIT" operation="open" profile="docker-nginx" name="/1" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624381] type=1400 audit(1444369317.574:40): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/client_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624446] type=1400 audit(1444369317.574:41): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/client_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624463] type=1400 audit(1444369317.574:42): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/proxy_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624494] type=1400 audit(1444369317.574:43): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/proxy_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624507] type=1400 audit(1444369317.574:44): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/fastcgi_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624534] type=1400 audit(1444369317.574:45): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/fastcgi_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624546] type=1400 audit(1444369317.574:46): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/uwsgi_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624582] type=1400 audit(1444369317.574:47): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/uwsgi_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0
上記のsample.tomlの場合。TOML生成されたプロファイルは、Docker-Nginx-Sampleとして利用可能です。
これはもともと、Dockerエンジンのネイティブセキュリティプロファイルになることを願っています。この詳細については、Docker/Docker#17142を参照してください。