bane
v0.4.4
Docker 컨테이너 용 AppArmor 프로파일 생성기. 기본적으로 누가 그렇게 할 수 있기 때문에 손으로 하나를 만드는 것보다 더 나은 Apparmor 프로파일입니다.
"AppArmor 프로필 풀 요청을 검토하는 것은 내 존재의 금지 입니다."
Jess Frazelle
목차
설치
바이너리
GO를 통해
용법
글로브 파일
구성 파일
프로필 설치
생성 된 프로필은 어떻게 생겼습니까?
Docker와의 통합
Binaries의 설치 지침은 릴리스 페이지를 방문하십시오.
$ GOT GITHUB.com/genuinetools/bane을 얻으십시오
$ Bane -Hbane- Docker Containersusage 용 사용자 정의 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/[^.]* | 도트 파일을 제외한 디렉토리의 모든 파일을 일치시킵니다 |
/dir/ | 디렉토리와 일치합니다 |
/dir/*/ | /dir /내에서 모든 디렉토리 일치 |
/dir/a*/ | / dir / 내에서 모든 디렉토리를 일치시킵니다 |
/dir/*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"`#로 프로파일을 실행할 수 있습니다. now run nginx $ docker run -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@6da5a2a930b9에 대한 권한이 부족합니다. :/# topbash :/usr/bin/top : 허가 deNiedRoot@6da5a2a930b9 : ~# touch ~/thingtouch : 'touch'touch ': 권한 deiediedRoot@6da5a2a930b9 :/# shbash :/bin/sh : 허가 deniedRoot@6da5a2a930b9 :/# dashbash :/bin/dash : 거부
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
의 경우 생성 된 프로파일은 Docker-Nginx-Sample로 사용할 수 있습니다.
이것은 원래 Docker 엔진에서 기본 보안 프로파일이 될 수있는 개념 증명이었습니다. 이에 대한 자세한 내용은 Docker/Docker#17142를 참조하십시오.