Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja

Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja
Hello, Habr!

V sodobni realnosti, kjer igrajo kontejnerji vse večjo vlogo v razvojnem procesu, zagotavljanje varnosti različnih stopenj in entitet, povezanih s kontejnerji, ne izgublja pomena. Ročno izvajanje preverjanj je zahtevna naloga, zato bi bilo dobro narediti vsaj prve korake k avtomatizaciji tega procesa.

V tem članku bom delil pripravljene skripte za implementacijo več orodij za varnost Docker in navodila, kako zagnati majhen demo-stend za preverjanje tega procesa. Materiale lahko uporabite za eksperimentiranje o tem, kako organizirati postopek testiranja varnosti slik in navodil Dockerfile. Seveda se infrastruktura razvoja in implementacije razlikuje, zato bom spodaj navedel nekaj možnih možnosti.

Orodja za preverjanje varnosti

Obstaja veliko različnih pomožnih aplikacij in skript, ki izvajajo preverjanja različnih vidikov Docker infrastrukture. Nekatere so bile že opisane v prejšnjem članku (https://habr.com/ru/company/swordfish_security/blog/518758/#docker-security), v tem gradivu pa bi se rad osredotočil na tri, ki pokrivajo večino zahtev glede varnosti Docker slik, ki se ustvarjajo v razvojnem procesu. Poleg tega bom pokazal tudi primer, kako te tri aplikacije povezati v eno cevovodno linijo za izvajanje preverjanj varnosti.

Hadolint
https://github.com/hadolint/hadolint

Dokaj preprosta konzolna aplikacija, ki pomaga na prvi pogled oceniti pravilnost in varnost navodil Dockerfile (na primer omogočanje le dovoljenih registrskih slik ali uporaba sudo).

Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja

Dockle
https://github.com/goodwithtech/dockle

Konzolna aplikacija, ki deluje s sliko (ali s shranjenim tar-arhivom slike), ki preverja pravilnost in varnost konkretne slike, analizirajoč njene plasti in konfiguracijo - kateri uporabniki so ustvarjeni, katere ukaze se uporabljajo, kateri volumni so povezani, prisotnost praznega gesla itd. Zdaj je število preverjanj še vedno precej majhno in temelji na nekaterih lastnih preverjanjih in priporočilih. CIS (Center for Internet Security) Benchmark za Docker.
Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja

Trivy
https://github.com/aquasecurity/trivy

Ta orodja je namenjena iskanju ranljivosti dveh vrst – težave pri gradnji operacijskega sistema (podprte so Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu) in težave z odvisnostmi (Gemfile.lock, Pipfile.lock, composer.lock, package-lock.json, yarn.lock, Cargo.lock). Trivy zna skenirati tako podobe v repozitoriju kot lokalne podobe, prav tako pa lahko izvede skeniranje na podlagi posredovane .tar datoteke z Docker-podobo.

Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja

Možnosti uvedbe orodij

Da bi preizkusili opisane aplikacije v izoliranih pogojih, bom navedel navodila za namestitev vseh orodij v okviru nekega poenostavljenega procesa.

Osnovna ideja je prikazati, kako lahko uvedemo avtomatsko preverjanje vsebine Dockerfile in Docker-podob, ki se ustvarjajo v postopku razvoja.

Samo preverjanje poteka v naslednjih korakih:

  1. Preverjanje pravilnosti in varnosti navodil Dockerfile – s pomočjo orodja lintr. Hadolint
  2. Preverjanje pravilnosti in varnosti končne ter vmesnih podob – z orodjem. Dockle
  3. Preverjanje prisotnosti splošno znanih ranljivosti (CVE) v osnovni podobi in vrsti odvisnosti – z orodjem. Trivy

Nadalje v članku bom predstavil tri možnosti uvedbe teh korakov:
Prva – s konfiguracijo CI/CD pipeline na primeru GitLab (z opisom postopka postavitve testnega instance).
Druga – z uporabo shell-skripte.
Tretja – z gradnjo Docker-podobe za skeniranje Docker-podob.
Lahko izberete možnost, ki vam najbolje ustreza, jo prenesete na svojo infrastrukturo in prilagodite svojim potrebam.

Vsi potrebni materiali in dodatna navodila so prav tako na voljo v repozitoriju: https://github.com/Swordfish-Security/docker_cicd

Integracija v GitLab CI/CD

V prvi možnosti bomo raziskali, kako lahko uvedemo varnostne preglede na primeru sistema repozitorijev GitLab. Tu bomo šli skozi korake in razčlenili, kako namestiti testno okolje z GitLab, sestaviti postopek skeniranja in izvesti zagon orodij za preverjanje testnega Dockerfile in naključne podobne aplikacije JuiceShop.

Namestitev GitLab
1. Namestite Docker:

sudo apt-get update && sudo apt-get install docker.io

2. Dodajte trenutno uporabniško ime v skupino docker, da lahko delate z Dockerjem brez sudo:

sudo addgroup  docker

3. Ugotovite svoj IP:

ip addr

4. Namestite in zaženite GitLab v vsebniku, tako da zamenjate IP naslov v hostname s svojim:

docker run --detach 
--hostname 192.168.1.112 
--publish 443:443 --publish 80:80 
--name gitlab 
--restart always 
--volume /srv/gitlab/config:/etc/gitlab 
--volume /srv/gitlab/logs:/var/log/gitlab 
--volume /srv/gitlab/data:/var/opt/gitlab 
gitlab/gitlab-ce:latest

Čakamo, da GitLab izvede vse potrebne namestitvene postopke (lahko spremljate postopek prek izhoda dnevniške datoteke: docker logs -f gitlab).

5. Odprite svoj lokalni IP v brskalniku in videli boste stran, ki predlaga, da spremenite geslo za uporabnika root:
Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja
Nastavite novo geslo in se prijavite v GitLab.

6. Ustvarite nov projekt, na primer cicd-test, in ga inicializirajte z začetno datoteko README.md:
Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja
7. Zdaj moramo namestiti GitLab Runner: agenta, ki bo na zahtevo izvajal vse potrebne operacije.
Prenesite najnovejšo različico (v tem primeru - za Linux 64-bit):

sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

8. Naredite ga izvršnega:

sudo chmod +x /usr/local/bin/gitlab-runner

9. Dodajte uporabnika OS za Runnerja in zaženite storitev:

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

Moralo bi izgledati približno tako:

local@osboxes:~$ sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
Runtime platform arch=amd64 os=linux pid=8438 revision=0e5417a3 version=12.0.1
local@osboxes:~$ sudo gitlab-runner start
Runtime platform arch=amd64 os=linux pid=8518 revision=0e5417a3 version=12.0.1

10. Zdaj registriramo Runnerja, da bo lahko komuniciral z našim GitLab instancom.
Za to odprite stran Nastavitve-CI/CD (http://OUR_IP_ADDRESS/root/cicd-test/-/settings/ci_cd) in na zavihku Runners poiščite URL in Registration token:
Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja
11. Registriramo Runnerja, tako da vstavimo URL in Registration token:

sudo gitlab-runner register 
--non-interactive 
--url "http:///" 
--registration-token "" 
--executor "docker" 
--docker-privileged 
--docker-image alpine:latest 
--description "docker-runner" 
--tag-list "docker,privileged" 
--run-untagged="true" 
--locked="false" 
--access-level="not_protected"

Na koncu dobimo delujoč GitLab, v katerega je treba dodati navodila za zagon naših pripomočkov. V tem demonstracijskem primeru nimamo korakov za gradnjo aplikacije in njeno vsebovanje, a v realnem okolju bodo ti koraki predhodili korakom skeniranja in oblikovali podobe in Dockerfile za analizo.

Konfiguracija pipeline

1. Dodajte datoteke v repozitorij mydockerfile.df (to je nekakšen testni Dockerfile, ki ga bomo preverjali) in konfiguracijsko datoteko GitLab CI/CD procesa .gitlab-cicd.yml, ki navaja navodila za skenerje (opazite piko v imenu datoteke).

YAML-config datoteka vsebuje navodila za zagon treh orodij (Hadolint, Dockle in Trivy), ki bodo analizirala izbrani Dockerfile in sliko, določeno v spremenljivki DOCKERFILE. Vse potrebne datoteke lahko vzamete iz repozitorija: https://github.com/Swordfish-Security/docker_cicd/

Izvleček iz mydockerfile.df (to je abstraktna datoteka z nizom poljubnih navodil zgolj za prikaz delovanja orodja). Neposredna povezava na datoteko: mydockerfile.df

Vsebina mydockerfile.df

FROM amd64/node:10.16.0-alpine@sha256:f59303fb3248e5d992586c76cc83e1d3700f641cbcd7c0067bc7ad5bb2e5b489 AS tsbuild
COPY package.json .
COPY yarn.lock .
RUN yarn install
COPY lib lib
COPY tsconfig.json tsconfig.json
COPY tsconfig.app.json tsconfig.app.json
RUN yarn build
FROM amd64/ubuntu:18.04@sha256:eb70667a801686f914408558660da753cde27192cd036148e58258819b927395
LABEL maintainer="Rhys Arkins <rhys@arkins.net>"
LABEL name="renovate"
...
COPY php.ini /usr/local/etc/php/php.ini
RUN cp -a /tmp/piik/* /var/www/html/
RUN rm -rf /tmp/piwik
RUN chown -R www-data /var/www/html
ADD piwik-cli-setup /piwik-cli-setup
ADD reset.php /var/www/html/
## ENTRYPOINT ##
ADD entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
USER root

YAML konfiguracija izgleda tako (datoteko lahko prenesete prek neposredne povezave tukaj: .gitlab-ci.yml):

Vsebina .gitlab-ci.yml

variables:
    DOCKER_HOST: "tcp://docker:2375/"
    DOCKERFILE: "mydockerfile.df" # ime Dockerfile-a koji se analizira
    DOCKERIMAGE: "bkimminich/juice-shop" # ime Docker slike koja se analizira
    # DOCKERIMAGE: "knqyf263/cve-2018-11235" # testna Docker slika sa nekoliko KRITIČNIH CVE
    SHOWSTOPPER_PRIORITY: "KRITIČNO" # nivo kritičnosti koji će izazvati grešku Trivy posla
    TRIVYCACHE: "$CI_PROJECT_DIR/.cache" # gde da se čuva Trivy baza podataka ranjivosti za bržu ponovnu upotrebu
    ARTIFACT_FOLDER: "$CI_PROJECT_DIR"
 
services:
    - docker:dind # da bi mogli da pravimo docker slike unutar Runner-a
 
stages:
    - scan
    - report
    - publish
 
HadoLint:
    # Osnovna analiza u skladu sa uputstvima Dockerfile-a
    stage: scan
    image: docker:git
 
    after_script:
    - cat $ARTIFACT_FOLDER/hadolint_results.json
 
    script:
    - export VERSION=$(wget -q -O - https://api.github.com/repos/hadolint/hadolint/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*//1/')
    - wget https://github.com/hadolint/hadolint/releases/download/v${VERSION}/hadolint-Linux-x86_64 && chmod +x hadolint-Linux-x86_64
     
    # NB: hadolint će uvek završiti s 0 kodom greške
    - ./hadolint-Linux-x86_64 -f json $DOCKERFILE > $ARTIFACT_FOLDER/hadolint_results.json || exit 0
 
    artifacts:
        when: always # vraćanje artefakata čak i nakon greške posla
        paths:
        - $ARTIFACT_FOLDER/hadolint_results.json
 
Dockle:
    # Analiziranje najboljih praksi o Docker slici (korisničke dozvole, uputstva koja su praćena kada je slika napravljena, itd.)
    stage: scan
    image: docker:git
 
    after_script:
    - cat $ARTIFACT_FOLDER/dockle_results.json
 
    script:
    - export VERSION=$(wget -q -O - https://api.github.com/repos/goodwithtech/dockle/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*//1')
    - wget https://github.com/goodwithtech/dockle/releases/download/v${VERSION}/dockle_${VERSION}_Linux-64bit.tar.gz && tar zxf dockle_${VERSION}_Linux-64bit.tar.gz
    - ./dockle --exit-code 1 -f json --output $ARTIFACT_FOLDER/dockle_results.json $DOCKERIMAGE
     
    artifacts:
        when: always # vraćanje artefakata čak i nakon greške posla
        paths:
        - $ARTIFACT_FOLDER/dockle_results.json
 
Trivy:
    # Analiziranje Docker slike i zavisnosti paketa prema više CVE baza
    stage: scan
    image: docker:git
 
    script:
    # preuzimanje najnovijih Trivy
    - apk add rpm
    - export VERSION=$(wget -q -O - https://api.github.com/repos/knqyf263/trivy/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*//1')
    - wget https://github.com/knqyf263/trivy/releases/download/v${VERSION}/trivy_${VERSION}_Linux-64bit.tar.gz && tar zxf trivy_${VERSION}_Linux-64bit.tar.gz
     
    # prikazivanje svih ranjivosti bez neuspjeha gradnje
    - ./trivy -d --cache-dir $TRIVYCACHE -f json -o $ARTIFACT_FOLDER/trivy_results.json --exit-code 0 $DOCKERIMAGE
    
    # ispis informacije o ranjivostima u standardni izlaz u čitljivom formatu (čitanje čiste json nije zabavno, zar ne?). Ovo možete ukloniti ako vam nije potrebno.
    - ./trivy -d --cache-dir $TRIVYCACHE --exit-code 0 $DOCKERIMAGE
 
    # neuspjeh gradnje ako se pronađe PRIORITET SHOWSTOPPER
    - ./trivy -d --cache-dir $TRIVYCACHE --exit-code 1 --severity $SHOWSTOPPER_PRIORITY --quiet $DOCKERIMAGE
         
    artifacts:
        when: always # vraćanje artefakata čak i nakon greške posla
        paths:
        - $ARTIFACT_FOLDER/trivy_results.json
 
    cache:
        paths:
        - .cache
 
Report:
    # kombinovanje izlaza alata u jedan HTML
    stage: report
    when: always
    image: python:3.5
     
    script:
    - mkdir json
    - cp $ARTIFACT_FOLDER/*.json ./json/
    - pip install json2html
    - wget https://raw.githubusercontent.com/shad0wrunner/docker_cicd/master/convert_json_results.py
    - python ./convert_json_results.py
     
    artifacts:
        paths:
        - results.html

При необходимости также можно сканировать и сохраненные образы в виде .tar-архива (однако потребуется в YAML файле изменить входные параметры для утилит)

NB: Trivy требует для своего запуска установленные rpm in git. В противном случае он будет выдавать ошибки при сканировании RedHat-based образов и получении обновлений базы уязвимостей.

2. После добавления файлов в репозиторий, в соответствии с инструкциями в нашем конфигурационном файле, GitLab автоматически начнет процесс сборки и сканирования. На вкладке CI/CD → Pipelines можно будет увидеть ход выполнения инструкций.

В результате у нас есть четыре задачи. Три из них занимаются непосредственно сканированием и последняя (Report) собирает простой отчет из разрозненных файлов с результатами сканирования.
Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja
По умолчанию Trivy останавливает свое выполнение, если были обнаружены CRITICAL уязвимости в образе или зависимостях. В то же время Hadolint всегда возвращает Success код выполнения, так как в результате его выполнения всегда есть замечания, что приводит к остановке сборки.

В зависимости от конкретных требований можно сконфигурировать код выхода, чтобы эти утилиты при обнаружении проблем определенной критичности, останавливались также и процесс сборки. В нашем случае сборка остановится, только если Trivy обнаружит уязвимость с критичностью, которую мы указали в переменной SHOWSTOPPER в .gitlab-ci.yml.
Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja

Результат работы каждой утилиты можно посмотреть в логе каждой сканирующей задачи, непосредственно в json-файлах в разделе artifacts или в простом HTML-отчете (о нем чуть ниже):
Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja

3. Для представления отчетов утилит в чуть более человекочитаемом виде используется небольшой скрипт на Python для конвертации трех json-файлов в один HTML-файл с таблицей дефектов.
Этот скрипт запускается отдельной задачей Report, а его итоговым артефактом является HTML-файл с отчетом. Исходник скрипта также лежит в репозитории и его можно адаптировать под свои нужды, цвета и т. п.
Načini in primeri uvajanja orodij za preverjanje varnosti Dockerja

Shell-скрипт

Druga možnost je primerna za primere, ko je potrebno preverjati Docker slike zunaj CI/CD sistema ali kadar želimo imeti vse navodila v obliki, ki jo lahko izvajamo neposredno na gostitelju. Ta možnost je pokrita s pripravljanjem shell skripte, ki jo lahko zaženemo na čisti virtualni (ali celo fizični) napravi. Skripta izvršuje iste ukaze kot zgoraj opisan gitlab-runner.

Za uspešno delovanje skripte mora biti na sistemu nameščen Docker, trenutni uporabnik pa mora biti del skupine docker.

Samo skripto lahko prenesete tukaj: docker_sec_check.sh

Na začetku datoteke s spremenljivkami določimo, katero sliko je treba skenirati in katere stopnje kritičnosti obrambne napake bodo povzročile izhod iz orodja Trivy s podanim kodom napake.

Med izvajanjem skripte se vsa orodja prenesejo v direktorij docker_tools, rezultati njihovega dela pa v direktorij docker_tools/json, poročilo v HTML formatu pa bo shranjeno v datoteki results.html.

Primer izhoda skripte

~\/docker_cicd$ .\/docker_sec_check.sh

[+] Nastavljanje okolijskih spremenljivk
[+] Namestitev potrebnih paketov
[+] Priprava potrebnih map
[+] Pridobivanje vzorčne Dockerfile
2020-10-20 10:40:00 (45.3 MB\/s) - ‘Dockerfile’ shranjen [8071\/8071]
[+] Potegovanje slike za skeniranje
latest: Potegovanje iz bkimminich\/juice-shop
[+] Zagon Hadolinta
...
Dockerfile:205 DL3015 Izogibajte se dodatnim paketom s določanjem `--no-install-recommends`
Dockerfile:248 DL3002 Zadnji UPORABNIK ne sme biti root
...
[+] Zagon Dockle
...
WARN    - DKL-DI-0006: Izogibajte se najnovejši oznaki
        * Izogibajte se oznaki 'latest'
INFO    - CIS-DI-0005: Omogočite zaupanja v vrednost za Docker
        * izvozite DOCKER_CONTENT_TRUST=1 pred docker pull\/build
...
[+] Zagon Trivy
juice-shop\/frontend\/package-lock.json
=====================================
Skupaj: 3 (UNKNOWN: 0, LOW: 1, MEDIUM: 0, HIGH: 2, CRITICAL: 0)

+---------------------+------------------+----------+---------+-------------------------+
|       KNJIGOVODJA       | ID VULNERABILITY | RESNICA | VERSIJA |             NASLOV       |
+---------------------+------------------+----------+---------+-------------------------+
| object-path         | CVE-2020-15256   | HIGH     | 0.11.4  | Ranjivost pri prototipnem onesnaževanju  |
|                     |                  |          |         | object-path             |
+---------------------+------------------+          +---------+-------------------------+
| tree-kill           | CVE-2019-15599   |          | 1.2.2   | Vstavljanje kode          |
+---------------------+------------------+----------+---------+-------------------------+
| webpack-subresource | CVE-2020-15262   | LOW      | 1.4.1   | Nezaščiteno dinamično nalaganje |
|                     |                  |          |         | delov                   |
+---------------------+------------------+----------+---------+-------------------------+

juice-shop\/package-lock.json
============================
Skupaj: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)

...

juice-shop\/package-lock.json
============================
Skupaj: 5 (CRITICAL: 5)

...
[+] Odstranjevanje ostankov
[+] Lepši izhod
[+] Pretvorba JSON rezultatov
[+] Pisanje rezultatov HTML
[+] Čist izhod ============================================================
[+] Vse je končano. Poročilo v HTML formatu lahko najdete v results.html

Docker slika sa svim alatima

Kao treću alternativu, pripremio sam dva jednostavna Dockerfile-a za kreiranje slike sa sigurnosnim alatima. Jedan Dockerfile će pomoći u prikupljanju skupa za skeniranje slike iz repozitorijuma, dok će drugi (Dockerfile_tar) kreirati skup za skeniranje tar datoteke sa slikom.

1. Uzmi odgovarajući Docker fajl i skripte iz repozitorijuma https://github.com/Swordfish-Security/docker_cicd/tree/master/Dockerfile.
2. Pokreni ga da se izgradi:

docker build -t dscan:image -f docker_security.df .

3. Nakon završetka izgradnje, kreiraj kontejner iz slike. Pritom prenesi promenljivu okruženja DOCKERIMAGE sa nazivom interesantne slike i montiraj Dockerfile koji želiš da analiziraš, sa naše mašine na datoteku /Dockerfile (obratite pažnju da je potreban apsolutni put do ove datoteke):

docker run --rm -v $(pwd)/results:/results -v $(pwd)/docker_security.df:/Dockerfile -e DOCKERIMAGE="bkimminich/juice-shop" dscan:image


[+] Postavljanje promenljivih okruženja
[+] Pokretanje Hadolint
/Dockerfile:3 DL3006 Uvek eksplicitno obeleži verziju slike
[+] Pokretanje Dockle
WARN - DKL-DI-0006: Izbegavaj oznaku latest
        * Izbegavaj oznaku 'latest'
INFO - CIS-DI-0005: Omogući Content trust za Docker
        * export DOCKER_CONTENT_TRUST=1 pre docker pull/build
INFO - CIS-DI-0006: Dodaj HEALTHCHECK uputstvo slici kontejnera
        * nije pronađena HEALTHCHECK izjava
INFO - DKL-LI-0003: Stavljaj samo neophodne datoteke
        * nepotrebna datoteka : juice-shop/node_modules/sqlite3/Dockerfile
        * nepotrebna datoteka : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm64/Dockerfile
        * nepotrebna datoteka : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm/Dockerfile
[+] Pokretanje Trivy
...
juice-shop/package-lock.json
============================
Ukupno: 20 (NEPOZNATO: 0, NISKO: 1, SREDNJE: 6, VISOKO: 8, KRITIČNO: 5)
...
[+] Uređivanje izlaza
[+] Pokretanje glavnog modula ============================================================
[+] Konvertovanje JSON rezultata
[+] Pisanje HTML rezultata
[+] Čist izlaz ============================================================
[+] Svi zadaci su završeni. Pronađite rezultantni HTML izveštaj u results.html

Rezultati

Razmotrili smo samo jedan osnovni skup alata za skeniranje Docker artefakata, koji smatram da efikasno pokriva veliki deo zahteva za sigurnost slika. Postoji još mnogo plaćenih i besplatnih alata koji mogu obavljati iste provere, generisati lepe izveštaje ili raditi isključivo u konzolnom režimu, pokrivajući sisteme za upravljanje kontejnerima itd. Pregled ovih alata i načina njihove integracije možda će se pojaviti malo kasnije.

Ena od pozitivnih lastnosti orodij, opisanih v članku, je, da so vsa zasnovana na odprtem izvoru, kar vam omogoča, da jih preizkušate skupaj z drugimi podobnimi orodji in tako ugotovite, katera najbolj ustrezajo vašim potrebam in značilnostim infrastrukture. Seveda je treba vsako ranljivost, ki jo odkrijemo, preučiti glede na primernost v specifičnih razmerah, vendar je to tema za prihodnji obširnejši članek.

Upam, da vam ta navodila, skripti in orodja pomagajo ter postanejo izhodišče za krepitev varnosti vaše infrastrukture na področju, povezanem s kontejnerizacijo.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster