參考趨勢科技的 何謂 Kubernetes 容器防護? 其中提到安全的一環包含容器執行時期環境。稍微回想一下之前攻擊篇介紹的幾個手法,不外乎是拿到 --privileged 特權容器、給予過多的 CAP 能力、掛載敏感目錄等等。也因此最直觀的防禦方式就是抽掉這些能力,既粗暴又簡單。
參考 OWASP Cheat Sheet Series RULE #2 - Set a user、RULE #3 - Limit capabilities、RULE #4 - Add –no-new-privileges flag、RULE #6 - Use Linux Security Module (seccomp, AppArmor, or SELinux) 這些規則。
所以依照這些規則,先來設計一個嚴謹的容器執行環境。
docker run --rm -it --cap-drop ALL --security-opt=no-new-privileges aeifkz/my-ubuntu:v.non-root bash ;
#看一下身分是誰?
whoami ;
#透過程式提權
/tools/suid_test ;
#從哪裡起跳,就落回哪裡
whoami ;
這段啟動程式看似平平無奇,但是背後套用了以下的防禦機制。
今日總結 :