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-alpineanchore-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
نتیجه گیری - نتایج نشان می دهد خطایی تصویر openjdk: 8-jre-alpine شناسه خط مشی مشخص شده را نقض می کند (شناسه خط مشی: 2c53a13c-1765-11e8-82ef-23527761d060) و به همین دلیل بازپرداخت می شود. [196511 حالا که دیدیم موتور Anchore چگونه به نقض خط مشی پاسخ می دهد ، وقت آن است که بررسی کنیم که چگونه این کار با دبیان پایدار ما کار می کند: آخرین تصویر. نتایج نشان می دهد عملکرد Pass و نهایی وضعیت Warn به دلیل اطلاعات متناقض در بخشنامه Dockerfile. این مورد خراب نمی شود ، اما ممکن است نیاز به تأیید و حل مشکل داشته باشد. در این مرحله ما 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 - نام کاربری = مدیر را وارد کنید روی روی ذخیره کلیک کنید روی گزینه جدید در نوار ابزار جنکینز در منوی سمت چپ بالای صفحه کلیک کنید. یک صفحه با چندین گزینه باز خواهد شد. در قسمت نام مورد نظر را برای پروژه آزمایشی خود وارد کنید نام کالا را وارد کنید در این پروژه از خط لوله مونتاژ استفاده می کنیم خط لوله را انتخاب کنید و Ok را فشار دهید. اکنون شما آماده اسکن تصاویر خود هستید. در مورد ما ، از تصاویر موجود در رجیستری داکر ، که برای موتور Anchore در دسترس است استفاده خواهیم کرد. برای انجام این کار ، یک خط لوله اضافه می کنید که تصویر مورد نظر را برای اسکن نشان می دهد. را اضافه کنید و به بخش Pipeline بروید و یک اسکریپت اضافه کنید تا تصویر لازم برای اسکن مشخص شود. ما با Openjdk شروع خواهیم کرد: 8-jre-alpine ، که شامل برخی از آسیب پذیری ها است. روی ذخیره کلیک کنید از منوی جنکینز با کلیک بر روی Build Now این مراحل ساخت را شروع می کند ، که بسته به اندازه تصویر چند دقیقه طول خواهد کشید. پس از اتمام ، یک شماره و یک دکمه رنگی در زیر تاریخ ساخت ظاهر می شود. این گزینه برای قرمز خواهد بود. [عدم موفقیت یا آبی بودن برای گذر.] با فشار دادن دکمه نتایج بیشتری را نشان می دهد. برای دیدن جزئیات بیشتر ، بر روی ساخت # کلیک کنید. پنجره " خروجی کنسول " باز می شود ، که نشان دهنده شکست است - Anchore Report (FAIL) گزارش های تفصیلی نشان می دهد که تجزیه و تحلیل ناموفق یا موفق بود ، و گزارش های مختلفی را نشان می دهد که آسیب پذیری ها ، هشدارها و داده های دیگر را بسته به پیکربندی نشان می دهد. به طور پیش فرض ، افزونه پیکربندی شده است تا مونتاژ را خراب کند ( متوقف شود) اگر آسیب پذیری وجود داشته باشد. در زیر تصاویری از گزارش های خط مشی و امنیتی آورده شده است. در زیر تصویری از نتایج آنالیز امنیتی برای تصویر آسیب پذیر است. اسکنر تصویر کانتینر Anchore یک ابزار قدرتمند تجزیه و تحلیل تصویر است که طیف گسترده ای از آسیب پذیری ها و مسائل مربوط به خط مشی را در تصاویر داکر مشخص می کند. این تنظیمات بسیاری دارد و می تواند برای پاسخ به تشخیص مشکل هنگام تجزیه و تحلیل پیکربندی شود. یکی از آنها هنگامی که موتور با یک آسیب پذیری جدی روبرو می شود ، اختلال در ساخت است. anchore-cli بررسی تیپ Openjdk: 8-jre-alpine
خلاصه تصویر: sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52
برچسب کامل: docker.io/openjdk:8-jre-alpine
وضعیت: شکست
آخرین ارزش: 2019-09-20T12: 03: 32Z
شناسه خط مشی: 2c53a13c-1765-11e8-82ef-23527761d060 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 پیکربندی و استفاده از ماژول اسکنر تصویر کانتینر لنگرگاه در جنکینز
مرحله 6: - افزونه Anchore Container Image Scanner Image را در Jenkins اضافه و پیکربندی کنید.
http: // your_server_IP: 8228 / v1
اگر در مرحله 3 (بالاتر) تغییر کرده اید ، نام کاربری = مدیر را وارد کنید 
مرحله 8: - افزودن و اسکن تصاویر
]
مرحله 9: - اسکریپت خط لوله
گره {
def imageLine = 'openjdk: 8-jre-alpine'
نوشتن پرونده پرونده: 'anchore_images' ، متن: imageLine '
نام لنگر: 'anchore_images' '
} 
مرحله 10: - مونتاژ را اجرا کنید و گزارش های تأیید را مشاهده کنید.
مرحله 11: - نمایش نتایج
نتیجه گیری