🐳 چگونه Anchore – یک اسکنر امنیتی برای تصاویر کانتینر را نصب و استفاده کنیم؟ – تیم امنیت اطلاعات

Anchore Engine ابزاری منبع باز برای اسکن و تجزیه و تحلیل تصاویر کانتینر برای آسیب پذیری ها و مسائل مربوط به خط مشی است.

این به عنوان یک تصویر کانتینر Docker در دسترس است که می تواند بر روی سکوی ارکستراسیون کار کند ، یا به عنوان یک نصب مستقل. 19659003] این یک ابزار امنیتی مفید است که به توسعه دهندگان و تیم های QA اجازه می دهد تا آسیب پذیری هایی را که در تصاویر ایجاد می شوند ، آزمایش کنند ، شناسایی و برطرف کنند.

در این مقاله ، ما چگونگی نصب و استفاده از ska را بررسی خواهیم کرد. آسیب پذیری لنگر و مدیر تصویر.

معمولاً چندین روش برای اجرای آن وجود دارد.

با این حال ، من به دو مورد زیر توجه خواهم کرد:

  • با استفاده از گزینه خط فرمان AnchoreCLI
  • Jenkins Anchore Container Image Scanner برای رابط گرافیکی

ما به شما نشان می دهیم که چگونه می توانید موتور را نصب ، پیکربندی و راه اندازی موتور ، پیکربندی و استفاده از ابزار خط فرمان AnchoreCLI و همچنین افزونه Jenkins کنید.

برای هر دو روش ، یاد می گیرید که چگونه یک تصویر را به اسکن اضافه کنید ، یک اسکن را انجام دهید و گزارش ها را مشاهده کنید .

در سه مقاله وجود دارد که شما در این مقاله خواهید آموخت:

  • نصب و پیکربندی موتور لنگر
  • نصب ، پیکربندی و استفاده از Anchore CLI
  • پیکربندی و استفاده از پلاگین اسکنر کانتینر Anchore Container در جنکینز

پیش نیازهای

موارد زیر این درس ؛

  • دستگاه محلی یا مجازی با اوبونتو 18.04 و بعد از آن ؛
  • داکر
  • داکر آهنگسازی
  • جنکینز
  • П 1965do su مرحله 1: – دایرکتوری های کاری را پیکربندی کنید و پرونده های پیکربندی را بارگیری کنید.

    یک فهرست کار برای پرونده های Anchore خود ایجاد کنید.

    در این فهرست شما ایجاد می کنید. Adite دو زیرشاخه، یکی برای پیکربندی و یکی برای پایگاه داده باشد.

    ایجاد یک دایرکتوری خانگی برای فایل های Anchore

    برو به دایرکتوری های جدید و ایجاد زیرشاخه ها و پایگاه داده پیکربندی.

     anchore سی دی
    
    پیکربندی mkdir
    
    mkdir db 

    بارگیری پرونده های پیکربندی

    پس از آماده شدن دایرکتوری ها ، ما دو پرونده پیکربندی (docker-compose.yaml و config.yaml) را از پروژه گیتوب بارگیری خواهیم کرد.

    برای بارگیری docker-compose.yaml

    به فهرست خانه لنگر بروید و از دستور

     curl https://raw.githubusercontent.com/anchore/anchore-engine/master/scriptts/docker-compose/docker-compose.yaml> docker-compose.yaml 

    استفاده کنید سپس config.yaml را در فهرست راهنما ~ / anchore / config

     https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/config.yaml -o upload / anchore / config آپلود کنید. /config.yamlociation19659037-03 پرونده config.yaml پرونده پیکربندی با تنظیمات اساسی لازم برای سرویس خز است 

    این پارامترهای مختلفی دارد ، از جمله پارامترهای پیش فرض ، سطح ورود به سیستم ، پورت گوش دادن ، نام کاربری ، رمز عبور و سایر پارامترهایی که می توانند مطابق با الزامات خاص پیکربندی شوند.

    این یک روش امنیتی خوب است ، یعنی تغییر رمز عبور ، و شما می توانید این کار را با ویرایش پرونده config.yaml انجام دهید.

    با این حال ، در این آموزش از تنظیمات پیش فرض استفاده خواهیم کرد.

    برای ادامه اعتبارنامه پیش فرض (نام کاربری ادمین و رمز عبور foobar است) ، به ادامه بروید. به مرحله 2.

    مرحله 2: - Enchore Engine را نصب و راه اندازی کنید

    برای نصب و راه اندازی موتور Anchore Engine و دیتابیس از نوشتن Docker استفاده خواهید کرد.

    از فهرست خانه Anchore ، اجرا کنید.

     docker-compose up-d 

    این به طور خودکار تصویر Anchore را استخراج می کند. و سپس به ترتیب موتور Anchore و دیتابیس را در دایرکتوری منزل و ~ / anchore / database / دایرکتوری ایجاد می کند.

    پس از اتمام ، فرمان Anchore را شروع می کند.

    با این حال ، ابتدا باید ابزار خط فرمان AnchoreCLI را نیز نصب کنید

    نصب ، پیکربندی AnchoreCLI

    در این مرحله یاد می گیرید که چگونه ابزار خط فرمان AnchoreCLI را نصب و پیکربندی کنید.

    مرحله 3: - نصب AnchoreCLI

    در این راهنما ، ابتدا ابزار Python-pip را نصب می کنیم. که سپس برای نصب AnchoreCLI از کد منبع استفاده می شود.

    برای نصب Python pip. به فهرست خانه Anchore بروید و

     sudo apt-get update را اجرا کنید.
    sudo apt-get python-pip را نصب کنید
    sudo pip install - upgrade setuptools 

    نصب AnchoreCLI با استفاده از python-pip

     pip install anchorecli 

    این دستور فایلها را برای AnchoreCLI بارگیری و نصب می کند.

    پس از نصب ، ما باید منبع فایل پروفیلی را بدست آوریم. با استفاده از دستور

     Source ~ / .profile 

    برای تأیید نصب و نسخه Anchorecli ، از دستور

     anchore-cli --version 

    برای بررسی وضعیت سیستم لنگرگاه-CLI ، از دستور

     استفاده کنید -cli --url http: // localhost: 8228 / v1 --u admin --p system system foobar 

    توجه داشته باشید که باید URL ، نام کاربری و رمز عبور Anchore را تصویب کنید.

    تنظیمات Anchore Engine

    به طور پیش فرض ، AnchoreCLI سعی می کند بدون احراز هویت به موتور Anchore دسترسی پیدا کند.

    با این حال ، این کار نخواهد کرد ، و شما باید برای هر فرمان ، گواهینامه های موتور Anchore را ارائه دهید.

    ، گذرواژه و پارامترهای URL با هر دستور CLI Anchore.

    به جای ارائه آنها در هر زمان ، گزینه ای برای تعریف آنها به عنوان متغیرهای محیط در قالب زیر است.

    برای عبور URL ،

     ANCHORE_CLI_URL = http: / / localhost: 8228 / v1 

    این URL را به همراه پورت 82 تعریف می کند

    نام کاربری و رمزعبور را با استفاده از مقادیر پیش فرض تنظیم کنید ؛ در غیر این صورت آنها را با مقادیر جدید تعیین شده در مرحله 1 جایگزین کنید.

     ANCHORE_CLI_USER = سرپرست
    
    ANCHORE_CLI_PASS = foobar 

    پارامترهای فوق فقط برای پوسته فعلی تنظیم شده است.

    برای تنظیم پوسته فعلی و سایر فرآیندهای شروع شده از آن ، ما از دستور صادرات

     ANCHORE_CLI_URL استفاده می کنیم.
    
    صادرات ANCHORE_CLI_USER
    
    صادرات ANCHORE_CLI_PASS 

    پس از تنظیم پارامترها ، نصب AchoreCLI به پایان رسید و شما آماده اسکن تصاویر هستید.

    مرحله 4: - اضافه کردن و تجزیه و تحلیل تصاویر

    اکنون که موتور Anchore در حال اجرا است و رابط خط فرمان پیکربندی شده است ، شما می آموزید که چگونه می توانید تصویری برای موضوعات امنیتی اضافه و تحلیل کنید.

    در این درس دو تصویر را تجزیه و تحلیل خواهیم کرد. -openjdk: 8-jre-alpin و debian: آخرین بدون

    تجزیه و تحلیل تصویر

    برای ادامه ، ابتدا باید تصویری اضافه كنیم:

     تصویر لنگر كلی ، addjdk: 8-jre-alpine 
     anchore-cli ima ge اضافه کردن docker.io/library/debian:latestولو19659035-03 اضافه کردن تصاویر بیشتر 

     تصویر لنگر کلی با اضافه کردن openjdk: 10-jdk
    
    تصویر anchore-cli اضافه کردن openjdk: 11-jdk 

    پس از افزودن تصاویر به موتور Anchore ، تجزیه و تحلیل بلافاصله شروع می شود.

    اگر چند تصویر بارگیری شود ، آنها در صف قرار می گیرند و یک بار آنالیز می شوند.

    می توانید پیشرفت را بررسی کرده و لیست تصاویر بارگیری شده را همراه با وضعیت تحلیل آنها مشاهده کنید.

     لیست تصویر لنگر cli 

    خروجی

    : ~ / anchore $ anchore-cli list image
    وضعیت تجزیه و تحلیل خلاصه عکس برچسب
    docker.io/openjdk:10-jdk sha256: 923d074ef1f4f0dceef68d9bad8be19c918d9ca8180a26b037e00576f24c2cb4analyzed
    docker.io/openjdk:11-jdk sha256: 9923c0853475007397ed5c91438c12262476d99372d4cd4d7d44d05e9af5c077analyzed
    docker.io/openjdk:8-jre-alpine sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52analyzed 

    مرحله 5: شما می توانید دریافت کنید و به نتایج تجزیه و تحلیل و تجزیه و تحلیل می پردازید ، می توانید تجزیه و تحلیل کنید ،

    برای بررسی نتایج اسکن آسیب پذیری در Openjdk: 8-jre-alpine:

     تصویر لنگر کلیکی vuln openjdk: 8-jre-alpine all
    
     تصویر لنگرخواری vuln openjdk: 8-jre-alpine all
    آسیب پذیری IDPackage رفع شدت CVE Ref URL آسیب پذیری
    CVE-2018-1000654 libtasn1-4.13-r0 High 4.14-r0 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2018-1000654
    CVE-2019-12900 libbz2-1.0.6-r6 High 1.0.6-r7 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2019-12900
    CVE-2019-14697 musl-1.1.20-r4 High 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2019-14697
    CVE-2019-14697 musl-utils-1.1.20-r4 High 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2019-14697
    CVE-2019-8457 sqlite-libs-3.26.0-r3 High 3.28.0-r0 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2019-8457
    CVE-2018-14498 libjpeg-turbo-1.5.3-r4 Medium 1.5.3-r5 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2018-14498ociation19659096،0wiha19459025 ]  گزارش شناسایی CVE ، بسته آسیب پذیر ، شدت و اصلاح را مشخص می کند. 

    برای تصویر openjdk ما: تجزیه و تحلیل 8-ژاله-آلپ ، نشان می دهد که این پنج آسیب پذیری قوی و کاملاً آسیب پذیری متوسط ​​و جزئی دارد. (بعضی از آنها در بالا نشان داده نشده است.)

    برای دیدن نتایج آسیب پذیری برای یک تصویر پایدار debian: آخرین

    اجرای فرمان

     تصویر لنگر انداخته والنر docker.io/library/debian:latest همه [19659096] خروجی 

     تصویر لنگر cli vuln debian: آخرین همه
    آسیب پذیری IDPackage شدت رفع CVE RefsVulnerability URL
    CVE-2005-2541 tar-1.30 + dfsg-6 Negligible None https://securance-tracker.debian.org/tracker/CVE-2005-2541
    CVE-2019-1010022libc-bin-2.28-10 Negligible None https://securance-tracker.debian.org/tracker/CVE-2019-1010022
    CVE-2019-1010022libc6-2.28-10 هیچ کس قابل اغماض نیست https://securance-tracker.debian.org/tracker/CVE-2019-1010022
    CVE-2019-1010023libc-bin-2.28-10 Negligible None https://securance-tracker.debian.org/tracker/CVE-2019-1010023
    CVE-2019-1010023libc6-2.28-10 هیچ کس قابل اغماض نیست https://securance-tracker.debian.org/tracker/CVE-2019-1010023
    CVE-2019-1010024libc-bin-2.28-10 Negligible None https://securance-tracker.debian.org/tracker/CVE-2019-1010024roulette19659046† همانطور که از گزارش می بینید ، debian: آخرین تصویر دارای آسیب پذیری جزئی است و ندارد. 

    برای دیدن نتایج حاصل از ارزیابی سیاست برای یک تصویر OpenJdk ناپایدار: 8-jre-alpine :

anchore-cli ارزیابی check openjdk: 8-jre-alpine

نتیجه گیری - نتایج نشان می دهد خطایی

 anchore-cli بررسی تیپ Openjdk: 8-jre-alpine
خلاصه تصویر: sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52
برچسب کامل: docker.io/openjdk:8-jre-alpine
وضعیت: شکست
آخرین ارزش: 2019-09-20T12: 03: 32Z
شناسه خط مشی: 2c53a13c-1765-11e8-82ef-23527761d060 

تصویر openjdk: 8-jre-alpine شناسه خط مشی مشخص شده را نقض می کند (شناسه خط مشی: 2c53a13c-1765-11e8-82ef-23527761d060) و به همین دلیل بازپرداخت می شود. [196511

حالا که دیدیم موتور Anchore چگونه به نقض خط مشی پاسخ می دهد ، وقت آن است که بررسی کنیم که چگونه این کار با دبیان پایدار ما کار می کند: آخرین تصویر.

 anchore-cli ارزیابی بررسی کنید docker.io/library/debian:latest --detail

user1 @ Imagescan: ~ / anchore $ anchore-cli بررسی بررسی docker.io/library/debian:latest --detail
هضم تصویر: sha256: d3351d5bb795302c8207de4db9e0b6eb23bcbfd9cae5a90b89ca01f49d0f792d
برچسب کامل: docker.io/library/debian:latest
شناسه تصویر: c2c03a296d2329a4f3ab72a7bf38b78a8a80108204d326b0139d6af700e152d1
وضعیت: عبور
آخرین ارزش: 2019-09-20T12: 00: 06Z
شناسه خط مشی: 2c53a13c-1765-11e8-82ef-23527761d060
اقدام نهایی: هشدار دهید
دلیل اقدام نهایی: Policy_evaluation
وضعیت دروازه TriggerDetail
dockerfileinstructionDockerfile 'HEALTHCHECK' یافت نشد ، شرایط منطبق 'not_exists' checkwarn 

نتایج نشان می دهد عملکرد Pass و نهایی وضعیت Warn به دلیل اطلاعات متناقض در بخشنامه Dockerfile.

این مورد خراب نمی شود ، اما ممکن است نیاز به تأیید و حل مشکل داشته باشد.

پیکربندی و استفاده از ماژول اسکنر تصویر کانتینر لنگرگاه در جنکینز

مرحله 6: - افزونه Anchore Container Image Scanner Image را در Jenkins اضافه و پیکربندی کنید.

در این مرحله ما Anchor Engine را با سرور جنکینز ادغام می کنیم.

جنکینز یک سرور منبع باز است. جاوا طراحی شده است تا طیف گسترده ای از کارهای تکراری را در چرخه توسعه نرم افزار به طور خودکار انجام دهد.

افزونه Anchore در جنکینز موجود است اما به طور پیش فرض نصب نشده است.

با استفاده از یک مرورگر وب به Jenkins وارد شوید

http: // your_server_ip_or_domain: 8080

نام کاربری و رمزعبور خود را وارد کنید.

برو به فهرست جنکینز -> مدیریت جنکینز -> مدیریت افزونه ها

در زبانه " موجود " ، بروید تا " Build Tools " را انتخاب کنید و " Anchore Container Container Image Scanner را انتخاب کنید."

بر روی " نصب بدون راه اندازی مجدد کلیک کنید."

پس از نصب موفقیت آمیز افزونه Anchore Container Image Scanner ، مرحله بعدی تنظیم اعتبارنامه است.

به منو بروید ، سپس مدیریت جنکینز

را باز کنید سیستم پیکربندی -> پیکربندی لنگر -> حالت موتور

داده را وارد کنید (URL ، نام نام کاربری و رمز عبور و همچنین پورت 8228 - درگاه پیش فرض موتور Anchore).

URL - http: // your_server_IP: 8228 / v1

نام کاربری = مدیر را وارد کنید
اگر در مرحله 3 (بالاتر) تغییر کرده اید ، نام کاربری = مدیر را وارد کنید

روی روی ذخیره کلیک کنید

مرحله 8: - افزودن و اسکن تصاویر

روی گزینه جدید در نوار ابزار جنکینز در منوی سمت چپ بالای صفحه کلیک کنید.

یک صفحه با چندین گزینه باز خواهد شد.
]

در قسمت نام مورد نظر را برای پروژه آزمایشی خود وارد کنید نام کالا را وارد کنید

در این پروژه از خط لوله مونتاژ استفاده می کنیم

خط لوله را انتخاب کنید و Ok را فشار دهید.

اکنون شما آماده اسکن تصاویر خود هستید.

در مورد ما ، از تصاویر موجود در رجیستری داکر ، که برای موتور Anchore در دسترس است استفاده خواهیم کرد.

برای انجام این کار ، یک خط لوله اضافه می کنید که تصویر مورد نظر را برای اسکن نشان می دهد.

مرحله 9: - اسکریپت خط لوله

را اضافه کنید و به بخش Pipeline بروید و یک اسکریپت اضافه کنید تا تصویر لازم برای اسکن مشخص شود.

ما با Openjdk شروع خواهیم کرد: 8-jre-alpine ، که شامل برخی از آسیب پذیری ها است.

 گره {
def imageLine = 'openjdk: 8-jre-alpine'
نوشتن پرونده پرونده: 'anchore_images' ، متن: imageLine '
نام لنگر: 'anchore_images' '
} 

روی ذخیره کلیک کنید

مرحله 10: - مونتاژ را اجرا کنید و گزارش های تأیید را مشاهده کنید.

از منوی جنکینز

با کلیک بر روی Build Now

این مراحل ساخت را شروع می کند ، که بسته به اندازه تصویر چند دقیقه طول خواهد کشید.

پس از اتمام ، یک شماره و یک دکمه رنگی در زیر تاریخ ساخت ظاهر می شود.

این گزینه برای قرمز خواهد بود. [عدم موفقیت یا آبی بودن برای گذر.]

با فشار دادن دکمه نتایج بیشتری را نشان می دهد.

مرحله 11: - نمایش نتایج

برای دیدن جزئیات بیشتر ، بر روی ساخت # کلیک کنید.

پنجره " خروجی کنسول " باز می شود ، که نشان دهنده شکست است - Anchore Report (FAIL)

گزارش های تفصیلی نشان می دهد که تجزیه و تحلیل ناموفق یا موفق بود ، و گزارش های مختلفی را نشان می دهد که آسیب پذیری ها ، هشدارها و داده های دیگر را بسته به پیکربندی نشان می دهد.

به طور پیش فرض ، افزونه پیکربندی شده است تا مونتاژ را خراب کند ( متوقف شود) اگر آسیب پذیری وجود داشته باشد.

در زیر تصاویری از گزارش های خط مشی و امنیتی آورده شده است.

در زیر تصویری از نتایج آنالیز امنیتی برای تصویر آسیب پذیر است.

نتیجه گیری

اسکنر تصویر کانتینر Anchore یک ابزار قدرتمند تجزیه و تحلیل تصویر است که طیف گسترده ای از آسیب پذیری ها و مسائل مربوط به خط مشی را در تصاویر داکر مشخص می کند.

این تنظیمات بسیاری دارد و می تواند برای پاسخ به تشخیص مشکل هنگام تجزیه و تحلیل پیکربندی شود.

یکی از آنها هنگامی که موتور با یک آسیب پذیری جدی روبرو می شود ، اختلال در ساخت است.