Werk jy in 'n cybersecurity-maatskappy? Wil jy jou maatskappy adverteer in HackTricks? Of wil jy toegang hê tot die nuutste weergawe van die PEASS of laai HackTricks in PDF af? Kyk na die SUBSCRIPTION PLANS!
Wanneer jy 'n houer as bevoorreg uitvoer, word hierdie beskermings gedeaktiveer:
Monteer /dev
In 'n bevoorregte houer kan alle toestelle in /dev/ benader word. Jy kan dus ontsnap deur die skandering van die bediener se skyf te monteer.
# docker run --rm -it alpine shls/devconsolefdmqueueptmxrandomstderrstdouturandomcorefullnullptsshmstdinttyzero
# docker run --rm --privileged -it alpine shls/devcachefilesmapperportshmtty24tty44tty7consolemempsauxstderrtty25tty45tty8coremqueueptmxstdintty26tty46tty9cpunbd0ptsstdouttty27tty47ttyS0[...]
Lees-slegs kernel-lêerstelsels
Kernel-lêerstelsels bied 'n meganisme vir 'n proses om die gedrag van die kernel te wysig. Tog wil ons voorkom dat houerprosesse enige veranderinge aan die kernel maak. Daarom monteer ons kernel-lêerstelsels as lees-slegs binne die houer, om te verseker dat die houerprosesse die kernel nie kan wysig nie.
# docker run --rm --privileged -it alpine shmount|grep'(ro'
Maskering oor kernel-lêersisteme
Die /proc-lêersisteem is selektief skryfbaar, maar vir sekuriteit is sekere dele beskerm teen skryf- en leestoegang deur dit met tmpfs te oorlê, wat verseker dat houerprosesse nie toegang tot sensitiewe areas kan verkry nie.
tmpfs is 'n lêersisteem wat al die lêers in virtuele geheue stoor. tmpfs skep geen lêers op jou harde skyf nie. As jy 'n tmpfs-lêersisteem ontlaai, gaan al die lêers wat daarin woon, vir ewig verlore.
# docker run --rm -it alpine shmount|grep/proc.*tmpfstmpfson/proc/acpitypetmpfs (ro,relatime)tmpfson/proc/kcoretypetmpfs (rw,nosuid,size=65536k,mode=755)tmpfson/proc/keystypetmpfs (rw,nosuid,size=65536k,mode=755)
# docker run --rm --privileged -it alpine shmount|grep/proc.*tmpfs
Linux-vermoëns
Houer-enjins begin die houers met 'n beperkte aantal vermoëns om te beheer wat binne die houer gebeur. Bevoorregte eenhede het alle die vermoëns toeganklik. Om meer te leer oor vermoëns, lees:
# docker run --rm -it alpine shapkadd-Ulibcap; capsh--print[...]Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=eip
Bounding set =cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap
[...]
# docker run --rm --privileged -it alpine shapkadd-Ulibcap; capsh--print[...]Current:=eipcap_perfmon,cap_bpf,cap_checkpoint_restore-eipBounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read
[...]
Jy kan die vermoëns wat beskikbaar is vir 'n houer manipuleer sonder om in --privileged-modus te loop deur die --cap-add en --cap-drop vlae te gebruik.
Seccomp
Seccomp is nuttig om die syscalls wat 'n houer kan aanroep, te beperk. 'n Standaard seccomp-profiel is standaard geaktiveer wanneer docker-houers uitgevoer word, maar in bevoorregte modus is dit gedeaktiveer. Lees meer oor Seccomp hier:
# docker run --rm -it alpine shgrepSeccomp/proc/1/statusSeccomp:2Seccomp_filters:1
# docker run --rm --privileged -it alpine shgrepSeccomp/proc/1/statusSeccomp:0Seccomp_filters:0
# You can manually disable seccomp in docker with--security-optseccomp=unconfined
Verder moet daarop gelet word dat wanneer Docker (of ander CRIs) in 'n Kubernetes-groep gebruik word, die seccomp-filter standaard gedeaktiveer is.
AppArmor
AppArmor is 'n kernel-verbetering om houers tot 'n beperkte stel hulpbronne met per-program profiele te beperk. Wanneer jy met die --privileged vlag hardloop, word hierdie beskerming gedeaktiveer.
# You can manually disable seccomp in docker with--security-optapparmor=unconfined
SELinux
Die uitvoer van 'n houer met die --privileged vlag deaktiveer SELinux-etikette, wat veroorsaak dat dit die etiket van die houermotor erf, tipies unconfined, wat volle toegang gee soortgelyk aan die houermotor. In rootless-modus gebruik dit container_runtime_t, terwyl in root-modus spc_t toegepas word.
# You can manually disable selinux in docker with--security-optlabel:disable
Wat nie beïnvloed word nie
Namespaces
Namespaces word NIET beïnvloed deur die --privileged vlag. Alhoewel hulle nie die sekuriteitsbeperkings geaktiveer het nie, sien hulle nie al die prosesse op die stelsel of die gasheer-netwerk nie, byvoorbeeld. Gebruikers kan individuele namespaces deaktiveer deur die --pid=host, --net=host, --ipc=host, --uts=host kontainer-enjin vlae te gebruik.
# docker run --rm --privileged -it alpine shps-efPIDUSERTIMECOMMAND1root0:00sh18root0:00ps-ef
Standaard maak container-engines geen gebruik van gebruikersnaamruimtes, behalve voor rootless containers, die ze nodig hebben voor het koppelen van bestandssystemen en het gebruik van meerdere UID's. Gebruikersnaamruimtes, die essentieel zijn voor rootless containers, kunnen niet worden uitgeschakeld en verbeteren de beveiliging aanzienlijk door privileges te beperken.
Werk jy in 'n cybersecurity-maatskappy? Wil jy jou maatskappy adverteer in HackTricks? Of wil jy toegang hê tot die nuutste weergawe van die PEASS of laai HackTricks in PDF af? Kyk na die SUBSCRIPTION PLANS!