Sziasztok!
Lenne egy kérdésem debian docker konténerek kapcsán, hátha valaki tud segíteni.
Elkezdtem használni a "docker scan"-t az általam összeállított image-eknél és egy frissen build-eltnél is sok sebezhetőséget listáz.
debian:10.11-slim 67 4 critical, 11 high, 5 medium, 47 low
debian:10.11-backports 70 4 critical, 11 high, 6 medium, 49 low
debian:bullseye-slim 42 3 critical, 2 high, 0 medium, 37 low
Mivel a bullseye-ban már kevesebbet mutat, ezért beállítottam azt, de utána megtaláltam hogy a curl, amit használok még nem lett javítva (https://security-tracker.debian.org/tracker/CVE-2021-22945).
Így inkább visszatettem mindenhova a buster-t, amire kb. augusztusig még lesz support (https://wiki.debian.org/DebianReleases)
Azonban azt nem tudom hogyan tudnék minél több sérülékenységet befoltozni a buster-ben, mert ugyan az apt-ban be van állítva a security.debian.org,
de a frissítés (apt-get update && apt-get upgrade) után is azt írja a docker scan, hogy 67 sérülékenység van (4 critical, 11 high, 5 medium, 47 low)
Hogyan lehet ezekből minél többet befoltozni?
Megnéztem a backports-os image-t is, de abban még több a sérülékenység.
Használjak inkább ubuntu-t a konténerekben, mert oda hamarabb jönnek ki a frissítések?
Köszi!
A Dockerfile:
FROM debian:buster-slim
# environments
ENV TERM xterm
ENV DEBIAN_FRONTEND noninteractive
ENV TIMEZONE=Europe/Budapest
# timezone
ARG TIMEZONE="Europe/Budapest"
# apt-get update and upgrade, set timezone and locale
RUN apt-get update \
&& apt-get upgrade -y --no-install-recommends \
&& apt-get install -y --no-install-recommends unzip gnupg curl wget telnet net-tools iputils-ping ca-certificates apt-transport-https htop locales tzdata \
&& rm -f /etc/localtime \
&& ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
&& echo ${TIMEZONE} > /etc/timezone \
&& sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen \
&& sed -i 's/# hu_HU.UTF-8 UTF-8/hu_HU.UTF-8 UTF-8/g' /etc/locale.gen \
&& sed -i 's/# hu_HU ISO-8859-2/hu_HU ISO-8859-2/g' /etc/locale.gen \
&& dpkg-reconfigure -f noninteractive locales \
&& dpkg-reconfigure -f noninteractive tzdata
RUN apt-get autoremove -y --purge && apt-get clean
# environments
ENV LANG hu_HU.UTF-8
ENV LC_ALL hu_HU.UTF-8
ENV LANGUAGE hu_HU:en
- 375 megtekintés
Hozzászólások
Inkább térj át a distro mentes imagekra. :) Kevesebb a probléma. (nyilván 100% megoldás nincs, de minimalizalni tudod a sérülékenységek számát)
https://github.com/GoogleContainerTools/distroless
(amugy a docker imagekra is érvényes kell h legyen egy security concept, hardening. Célzok arra, hogy esetleges felesleges csomagok nem kerülnének fel, stb, stb.)
Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.
- A hozzászóláshoz be kell jelentkezni
Köszi a linket, tetszik ez a megoldás, bár így elsőre sokkal nagyobb hozzáértés kell mint amire számítottam :)
Viszont jelentősen csökkenthető az image mérete is, szóval valamikor biztos ki fogom próbálni.
- A hozzászóláshoz be kell jelentkezni
A distroless-t idáig nem ismertem. Helyette FROM scratch image-eket csinálok, beledobom a statikus binárisomat. Bár dinamikus is lehetne. Kellhet pár egyéb fájl, pl. TLS CA-k (ami nyilván egy distróból jön), /etc/passwd. Ha jól látom, kb ezt csinálja a distroless is.
- A hozzászóláshoz be kell jelentkezni
Tudtommal erősen "tiltólistás" dolog az apt-get upgrade az image építésben.
Az upgrade helyett simán újra kell buildelni az image-t friss kiinduló image-val.
Milyensérülékenységektől félsz? Ha be tudnak jutni a konténerbe akkor már régen rossz. A bejövő portokat kell szűrni, tűzfalazni rendesen.
- A hozzászóláshoz be kell jelentkezni
Azért "tiltólistás" mert napról-napra más lehet, ergo nehezen reprodukálható.
Security szempontból nyilván nem tiltólistás.
Simán építhetsz magadnak saját "debian daily upgraded" base image-t, amíg elrakod addig tudod reprodukálni a bármit amit ebből építettél.
Amit írsz védekezést az az "alkalmazás szintű" hibák és exploitok ellen nem fog védeni.
Attól még a php-s akármidet simán felnyomhatják és használhatják smtp relaytől kezdve bitcoin bányászatig akármire.
zászló, zászló, szív
- A hozzászóláshoz be kell jelentkezni
szoval hogyha megjelenik egy friss tavoli php hiba, akkor az a docker imageben nem lehet fixalva (legalabbis olyan gyorsan nem mint mondjuk egy pure server+aptget), es azon keresztul bejohetnek?
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Persze. Az is "csak" egy linux, ugyanúgy kell (kéne) frissíteni mint egy bare metal servert vagy vm-et.
Ugye annyi az előny, hogy általában a hoston nincs szinte semmi, ezért azt nem olyan könnyű megfektetni, a konténereket meg le lehet lövöldözni és lehet visszaállni, frissíteni, satöbbi.
zászló, zászló, szív
- A hozzászóláshoz be kell jelentkezni
Én is újra build-elem, csak a build során van benne az apt-get upgrade, mert azt tapasztaltam, hogy hiába friss a base image, mindig tud mit frissíteni rajta.
Nem tudom milyen sérülékenységtől féljek ;), csak meglepett, hogy a buster alap image-ben van 4 kritikus, 11 magas, stb. és gondoltam ezt jobb lenne javítani.
- A hozzászóláshoz be kell jelentkezni
Üzemeltetőként bennem az merült fel elsőre, hogy ez nem Docker-specifikus kérdés, hanem általában OS/disztró (itt épp Debian 11) kérdés. Szerintem minden létező rendszerben van folyamatosan ilyen találat különböző szintű sebezhetőségekre. Én azt gondolom, hogy elérhetetlen az az állapot kb., hogy 0 legyen az érték. Az viszont lehet nulla, hogy az éppen futó komplett rendszer mennyi (távolról) kihasználható sérülékenységet tartalmaz.
A másik, ami eszembe jutott, hogy ilyen szintű biztonságra figyelésnél érdemes lenne egyesével megnézni, mik is azok a sérülékenységek, és hogyan használhatók ki. Simán lehet, hogy hiába van 67 db számszerűen, téged egyik sem érint, mert nem használsz semmit azokból, amik azon a listán szerepelnek. Vagy érint néhány, de megelőzhető a kihasználásuk pl. valami módon (default konfig módosítása, stb.).
- A hozzászóláshoz be kell jelentkezni
A 67 sérülékenységben volt curl is, amit használok, bár a többit nem néztem, szóval lehet tényleg nem is érintene a többi.
Most egyébként átáltam Ubuntu Focal-ra a konténerekben, mert a docker scan ott nem mutatott ki kritikus vagy magas sérülékenységet csak néhány közepeset meg alacsonyt.
- A hozzászóláshoz be kell jelentkezni
ugyan nem írtad min futnak a konténerek (Host OS), és hogyan (feltételezésem a Docker, mivel említetted a docker scant is.) - de a lényeg hogy SELinux, AppArmor is jó barát. Továbbá Seccomp, rootless mode, van itt minden.
Szóval még ha az alap image-ben van is némi turpisság, amit természetesen igyekezni, asap kell minimalizálni, a host felöl is meg kell tenni mindent. Nem egyszerű feladat, ellenben szép kihívás.
- A hozzászóláshoz be kell jelentkezni
Host OS Debian 10 Buster, amiben az "AppArmor enabled by default".
Én is így gondolom, hogy mind a host os mind a konténerek esetében amennyire csak lehet minimalizálni kell a sérülékenységeket.
- A hozzászóláshoz be kell jelentkezni