Làm thế nào để cài đặt và sử dụng máy quét bảo mật hình ảnh neoore?

Các Động cơ neo là một công cụ nguồn mở để quét và phân tích hình ảnh container cho các lỗ hổng bảo mật và các vấn đề chính sách. Nó có sẵn dưới dạng hình ảnh thùng chứa Docker có thể chạy trong nền tảng phối hợp hoặc dưới dạng cài đặt độc lập.


Đây là một công cụ bảo mật hữu ích cho phép các nhà phát triển và nhóm QA kiểm tra, xác định và giải quyết các lỗ hổng trong hình ảnh họ đang sử dụng để tạo ứng dụng.

Trong bài viết này, chúng tôi sẽ xem xét cách cài đặt và sử dụng trình quét lỗ hổng hình ảnh Neo. Nói chung, có một số phương pháp thực hiện. Tuy nhiên, tôi sẽ tập trung vào hai điều sau đây,

  • Sử dụng NeooreCLI tùy chọn dòng lệnh
  • GUI dựa Máy quét hình ảnh container của Jenkins cắm vào.

Chúng tôi sẽ chỉ cho bạn cách cài đặt, định cấu hình và khởi động động cơ, định cấu hình và sử dụng công cụ dòng lệnh AnchoreCLI cũng như plugin Jenkins. Đối với mỗi một trong hai phương pháp, bạn sẽ tìm hiểu cách thêm hình ảnh để quét, thực hiện quét và xem báo cáo.

Vào cuối bài viết, bạn sẽ học được ba điều sau đây.

  • Cài đặt và cấu hình Động cơ neo
  • Cài đặt, cấu hình và sử dụng NeooreCLI
  • Cấu hình và sử dụng Neo Trình quét hình ảnh container trong Jenkins

Điều kiện tiên quyết

Sau đây là các yêu cầu cho hướng dẫn này;

  • Một máy cục bộ hoặc ảo với Ubuntu 18.04 và sau đây;
  • Docker
  • Docker-soạn
  • Jenkins Cài đặt và chạy
  • người dùng sudo

Bước 1: – Thiết lập thư mục làm việc và tải xuống các tệp cấu hình.

Tạo một thư mục làm việc cho các tập tin Neo của bạn. Trong thư mục đó, bạn sẽ tạo hai thư mục con, một cho cấu hình và một cho cơ sở dữ liệu.

Tạo một thư mục nhà cho các tập tin Anchore

mkdir neo

Chuyển đến thư mục mới và tạo các thư mục con cấu hình và cơ sở dữ liệu.

neo neo

cấu hình mkdir

mkdir db

Tải về các tập tin cấu hình

Khi các thư mục đã sẵn sàng, chúng tôi sẽ tải xuống hai tệp cấu hình (docker-compose.yaml và config.yaml) từ dự án Github.

Để tải xuống docker-compose.yaml

Chuyển đến thư mục nhà neo và sử dụng lệnh

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

Sau đó tải xuống config.yaml vào thư mục ~ / anchorore / config

curl https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/config.yaml -o ~ / anchorore / config / config.yaml

Tệp config.yaml là một tệp cấu hình với các cài đặt cơ bản mà dịch vụ công cụ neo yêu cầu để chạy. Nó có một số tham số, bao gồm mặc định, mức nhật ký, cổng nghe, tên người dùng, mật khẩu và các thông số khác mà bạn có thể điều chỉnh để đáp ứng các yêu cầu cụ thể.

Đó là một thực hành bảo mật tốt để thay đổi mật khẩu và bạn có thể thực hiện việc này bằng cách chỉnh sửa tệp config.yaml. Tuy nhiên, trong hướng dẫn này, chúng tôi sẽ sử dụng các cài đặt mặc định.

Để tiếp tục với thông tin đăng nhập mặc định, (tên người dùng – quản trị viên và mật khẩu – foobar), hãy tiếp tục bước 2.

Thay đổi thông tin đăng nhập Công cụ Neo (tùy chọn)

Từ thư mục neo sử dụng lệnh

nano ~ / neoore / config / config.yaml

Xác định tên người dùng (quản trị viên) và mật khẩu (foobar) và thay đổi giá trị ưa thích của bạn.

nhấn CTRL + X, sau đó Y để lưu và thoát.

Với các thư mục làm việc và các tệp cấu hình được đặt sẵn, hệ thống đã sẵn sàng cho việc cài đặt Công cụ Neo.

Bước 2: – Cài đặt và khởi động Động cơ neo

Bạn sẽ sử dụng Docker compose để cài đặt và khởi động Cơ sở dữ liệu và Cơ sở dữ liệu.

Từ thư mục nhà neo, chạy.

docker-soạn lên -d

Điều này sẽ tự động kéo hình ảnh Anchore và sau đó tạo công cụ và cơ sở dữ liệu Anchorore trong nhà và ~ / anchorore / cơ sở dữ liệu / thư mục tương ứng. Sau khi hoàn thành, lệnh sẽ khởi động động cơ Neo.

Sau khi cài đặt thành công và khởi động công cụ neo, bây giờ bạn có thể quét hình ảnh bằng dòng lệnh neo NeooreCLI. Tuy nhiên, trước tiên bạn cần cài đặt tiện ích dòng lệnh AnchoreCLI, như hiển thị bên dưới.

Cài đặt, cấu hình AnchoreCLI

Trong bước này, bạn sẽ tìm hiểu cách cài đặt và định cấu hình NeooreCLI công cụ dòng lệnh.

Bước 3: – Cài đặt AnchoreCLI

Trong hướng dẫn này, trước tiên chúng ta sẽ cài đặt tiện ích python-pip, sau đó sẽ sử dụng để cài đặt NeooreCLI từ nguồn.

Để cài đặt Python Python. Để vào thư mục nhà Neoore và chạy

sudo apt-get cập nhật
sudo apt-get cài đặt python-pip
cài đặt sudo pip – thiết lập nâng cấp

Cài đặt NeooreCLI sử dụng python-pip

Pip cài đặt neoecli

Lệnh này sẽ tải xuống và cài đặt các tệp cho AnchoreCLI. Sau khi cài đặt, bây giờ chúng ta cần nguồn tệp .profile của mình để sử dụng lệnh

nguồn ~ / .profile

Để xác minh xem cài đặt có thành công và phiên bản của Anchorecli hay không, hãy sử dụng lệnh

neo-cli – đảo ngược

Để kiểm tra trạng thái hệ thống neo-CLI, sử dụng lệnh

anchorore-cli –url http: // localhost: 8228 / v1 –u admin –p foobar trạng thái hệ thống

Xin lưu ý rằng bạn phải vượt qua URL, tên người dùng và mật khẩu của công cụ Neo.

Xác định tham số động cơ neo

Theo mặc định, AnchoreCLI sẽ cố gắng truy cập Công cụ Neo mà không cần xác thực. Tuy nhiên, điều này sẽ không hoạt động và bạn cần cung cấp thông tin đăng nhập cho Công cụ Neo.

Điều này liên quan đến việc chuyển tên người dùng, mật khẩu và tham số URL với mỗi lệnh CLI neo. Thay vì cung cấp chúng mỗi lần, phương án thay thế là xác định chúng là các biến môi trường theo định dạng sau.

Để vượt qua URL, hãy chạy

ANCHORE_CLI_URL = http: // localhost: 8228 / v1

Điều này xác định URL Công cụ neo cùng với cổng 8228 mà nó sử dụng.

Đặt tên người dùng và mật khẩu bằng các giá trị mặc định; mặt khác, thay thế chúng bằng các giá trị mới bạn đặt Bước 1.

ANCHORE_CLI_USER = quản trị viên

ANCHORE_CLI_PASS = foobar

Ở trên thiết lập các tham số chỉ cho shell hiện tại. Để đặt shell hiện tại và các quá trình khác bắt đầu từ nó, chúng tôi sử dụng lệnh xuất

xuất ANCHORE_CLI_URL

xuất ANCHORE_CLI_USER

xuất ANCHORE_CLI_PASS

Với các tham số được xác định, thiết lập AchoreCLI đã hoàn tất và bạn có thể sẵn sàng quét ảnh.

Bước 4: – Thêm và phân tích hình ảnh

Bây giờ chúng ta đã có Công cụ neo chạy và CLI được cấu hình, bạn sẽ tìm hiểu cách thêm và phân tích hình ảnh cho các vấn đề bảo mật. Trong hướng dẫn này, chúng tôi sẽ phân tích hai hình ảnh. -openjdk: 8-jre-alpine với các lỗ hổng và debian: mới nhất mà không có .

Phân tích hình ảnh

Để tiến hành, trước tiên chúng ta cần thêm hình ảnh vào động cơ. Để thêm hình ảnh

hình ảnh neo-cli thêm openjdk: 8-jre-alpine

Thêm hình ảnh ổn định debian: mới nhất

hình ảnh neoore-cli thêm docker.io/l Library / debian :lat

Thêm hình ảnh

hình ảnh neo-cli thêm openjdk: 10-jdk

hình ảnh neo-cli thêm openjdk: 11-jdk

Sau khi thêm một hình ảnh vào Công cụ neo, phân tích bắt đầu ngay lập tức. Nếu có một số hình ảnh được tải, chúng được đặt trong một hàng đợi và phân tích từng cái một. Bạn có thể kiểm tra tiến trình và xem danh sách các hình ảnh được tải cùng với trạng thái phân tích của chúng.

Để xem danh sách, hãy chạy lệnh

danh sách hình ảnh neo-cli

Đầu ra

[email được bảo vệ]: ~ / anchorore $ neoore-cli danh sách hình ảnh
Tình trạng phân tích hình ảnh thẻ đầy đủ
bến tàu.io / openjdk:
docker.io/openjdk:11-jdk sha256: 9923c0853475007397ed5c91438c12262476d99372d4cd4d7d44d05e9af5c077analyised
bến tàu.io / openjdk: 8-jre-alpine sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52

Tùy thuộc vào số lượng hình ảnh, kích thước và thời gian trôi qua sau khi thêm chúng, bạn sẽ được phân tích cho những hình ảnh hoàn chỉnh, phân tích cho những hình ảnh đang tiến hành và không được phân tích cho hình ảnh xếp hàng.

Bước 5: – Truy xuất và xem kết quả phân tích

Sau khi phân tích hoàn tất, bạn có thể kiểm tra kết quả và xem kết quả để quét lỗ hổng, kiểm tra chính sách và các vấn đề khác mà công cụ đã xác định.

Để kiểm tra kết quả quét lỗ hổng trên openjdk: hình ảnh dễ bị tổn thương 8-jre-alpine

Chạy

hình ảnh neo-cli Vuln openjdk: 8-jre-alpine tất cả

Đầu ra

[email được bảo vệ]: ~ / anchorore $ anchorore-cli hình ảnh Vuln openjdk: 8-jre-alpine tất cả
Lỗ hổng IDPackage Mức độ nghiêm trọng Khắc phục CVE Giới thiệu URL dễ bị tổn thương
CVE-2018-1000654 libtasn1-4.13-r0 Cao 4.14-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000654
CVE-2019-12900 libbz2-1.0.6-r6 Cao 1.0.6-r7 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12900
CVE-2019-14697 musl-1.1.20-r4 Cao 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 Cao 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14697
CVE-2019-8456 sqlite-libs-3.26.0-r3 Cao 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 Trung bình 1.5.3-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14498

Báo cáo cho thấy số nhận dạng CVE, gói dễ bị tổn thương, mức độ nghiêm trọng và liệu có sửa chữa hay không. Đối với hình ảnh của chúng tôi openjdk: 8-jre-alpine, phân tích cho thấy rằng nó có năm lỗ hổng cao và khá nhiều lỗ hổng trung bình và không đáng kể. (một số không được hiển thị ở trên).

Để xem kết quả lỗ hổng cho một debian hình ảnh ổn định: mới nhất

Chạy lệnh

hình ảnh neo-cli Vuln docker.io/l Library / debian:latest tất cả

Đầu ra

[email được bảo vệ]: ~ / anchorore $ anchorore-cli image Vuln debian: mới nhất tất cả
Lỗ hổng IDPackage Severity Sever CVE RefsVulnerability URL
CVE-2005-2541 tar-1.30 + dfsg-6 Không đáng kể Không có https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2019-1010022libc-bin-2.28-10 Không đáng kể Không có https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010022libc6-2.28-10 Không đủ tiêu chuẩn Không có https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010023libc-bin-2.28-10 Không đáng kể Không có https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010023libc6-2.28-10 Không đủ điều kiện Không https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010024libc-bin-2.28-10 Không đủ tiêu chuẩn Không có https://security-tracker.debian.org/tracker/CVE-2019-1010024

Như có thể thấy từ báo cáo, debian hình ảnh: mới nhất có lỗ hổng không đáng kể và không có bản sửa lỗi.

Để xem kết quả đánh giá chính sách cho hình ảnh không ổn định openjdk: 8-jre-alpine

chạy

neoore-cli đánh giá kiểm tra openjdk: 8-jre-alpine

Đầu ra – Kết quả cho thấy không thành công

[email được bảo vệ]: ~ / anchorore $ anchorore-cli đánh giá kiểm tra openjdk: 8-jre-alpine
Hình ảnh tiêu hóa: sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52
Thẻ đầy đủ: docker.io/openjdk:8-jre-alpine
Tình trạng: thất bại
Eval cuối cùng: 2019-09-20T12: 03: 32Z
ID chính sách: 2c53a13c-1765-11e8-82ef-23527761d060

Hình ảnh openjdk: 8-jre-alpine vi phạm ID chính sách được chỉ định (ID chính sách: 2c53a13c-1765-11e8-82ef-23527761d060) và do đó trả về trạng thái Lỗi.

Bây giờ chúng ta đã thấy Công cụ Neo phản ứng như thế nào sau khi phát hiện vi phạm chính sách, đã đến lúc kiểm tra xem nó hoạt động như thế nào với trình gỡ lỗi hình ảnh ổn định của chúng tôi: mới nhất.

Kiểm tra chính sách cho debian: hình ảnh ổn định mới nhất

neoore-cli đánh giá kiểm tra docker.io/l Library / debian:latest –detail

[email được bảo vệ]: ~ / anchorore $ anchorore-cli đánh giá kiểm tra docker.io/l Library / debian:latest –detail
Hình ảnh tiêu hóa: sha256: d3351d5bb795302c8207de4db9e0b6eb23bcbfd9cae5a90b89ca01f49d0f792d
Thẻ đầy đủ: docker.io/l Library / debian:latest
ID hình ảnh: c2c03a296d 2329a4f3ab72a7bf38b78a8a80108204d326b0139d6af700e152d1
Tình trạng: vượt qua
Eval cuối cùng: 2019-09-20T12: 00: 06Z
ID chính sách: 2c53a13c-1765-11e8-82ef-23527761d060
Hành động cuối cùng: cảnh báo
Lý do hành động cuối cùng: chính sách đánh giá
Trạng thái kích hoạt cổng
dockerfilein cảnDockerfile chỉ thị ‘HEALTHCHECK’ không tìm thấy, phù hợp với điều kiện ‘not_exists’ checkwarn

Kết quả cho thấy trạng thái Pass và Hành động cảnh báo cuối cùng vì thông tin không khớp với chỉ thị Dockerfile. Điều này không thất bại nhưng có thể yêu cầu kiểm tra và giải quyết vấn đề.

Định cấu hình và sử dụng Plugin Trình quét hình ảnh của Bộ chứa Neo trong Jenkins

Bước 6: – Thêm và định cấu hình Trình cắm máy quét hình ảnh neo trong Jenkins

Trong bước này, chúng tôi sẽ tích hợp Anchor Engine với máy chủ Jenkins. Jenkins là một máy chủ nguồn mở dựa trên java để tự động hóa một loạt các nhiệm vụ lặp đi lặp lại trong chu trình phát triển phần mềm.

Các Plugin neoore có sẵn trong Jenkins nhưng không được cài đặt theo mặc định.

Đăng nhập vào Jenkins bằng trình duyệt web

http: // your_server_ip_or_domain: 8080

Nhập tên người dùng và mật khẩu.

Đi đến Thực đơn Jenkins

Xác định vị trí và chọn Quản lý Jenkins

Đi đến Quản lý plugin

Trên Tab có sẵn, cuộn xuống Xây dựng công cụ và chọn Máy quét hình ảnh container

Nhấn vào Cài đặt mà không cần khởi động lại Lựa chọn.

Sau khi cài đặt thành công Phần mềm bổ trợ trình quét hình ảnh neoore, Bước tiếp theo là cấu hình thông tin đăng nhập.

Đi đến Jenkins chọn menu Quản lý Jenkins chuyển hướng.

Mở Cấu hình hệ thống.

Xác định vị trí Cấu hình neo.

Lựa chọn Chế độ động cơ

Nhập Động cơ neo chi tiết (URL công cụ, tên người dùng và mật khẩu và cổng 8228 – cổng mặc định cho công cụ).

URL – http: // your_server_IP: 8228 / v1

Nhập tên người dùng = admin
Nhập Mật khẩu = foobar hoặc mật khẩu mới nếu bạn thay đổi nó trong Bước 3 (ở trên)

Nhấp chuột Tiết kiệm

Cấu hình Plugin Neo

Bước 8: – Thêm và quét hình ảnh

Nhấp chuột Vật phẩm mới tại Bảng điều khiển Jenkins ở menu trên cùng bên trái

Điều này sẽ mở ra một màn hình với một số tùy chọn.
Nhập tên mong muốn cho dự án thử nghiệm của bạn trong trường Nhập tên mục.

Trong dự án này, chúng tôi sẽ sử dụng bản dựng Pipeline.
Chọn Đường ống và bấm vào Đồng ý.

Bây giờ bạn đã sẵn sàng để quét các hình ảnh. Trong trường hợp của chúng tôi, chúng tôi sẽ sử dụng hình ảnh đã có trong sổ đăng ký docker mà Động cơ neo.

Để làm điều này, bạn sẽ thêm tập lệnh đường ống sẽ chỉ định hình ảnh cần quét.

Bước 9: – Thêm tập lệnh đường ống

Cuộn xuống phần Đường ống và thêm tập lệnh để chỉ định hình ảnh cần quét. Chúng tôi sẽ bắt đầu với openjdk: 8-jre-alpine có chứa một số lỗ hổng.

nút {
def imageLine = ‘openjdk: 8-jre-alpine’`
tập tin writeFile: ‘anchorore_images’, văn bản: imageLine`
tên neo: ‘anchorore_images’`
}

Nhấp chuột Tiết kiệm

Bước 10: – Chạy bản dựng và xem lại các báo cáo quét

Từ menu Jenkins

Nhấp chuột Xây dựng ngay

Điều này sẽ bắt đầu quá trình xây dựng, mất vài phút tùy thuộc vào kích thước hình ảnh. Sau khi hoàn thành, một số và nút màu sẽ xuất hiện trong Lịch sử xây dựng. Điều này sẽ có màu đỏ cho Fail hoặc Blue cho Pass. Nhấp vào nút sẽ hiển thị nhiều kết quả hơn.

Bước 11: – Xem lại kết quả

Bấm vào Xây dựng # để xem thêm chi tiết
Điều này mở ra một Bảng điều khiển đầu ra cửa sổ chỉ ra lỗi – Báo cáo neo (FAIL)

Các báo cáo chi tiết cho biết phân tích là Thất bại hay Vượt qua và cung cấp một số báo cáo cho thấy các lỗ hổng, cảnh báo và các báo cáo khác dựa trên cấu hình. Theo mặc định, plugin được cấu hình để không xây dựng (Dừng lại) bất cứ khi nào có lỗ hổng. Dưới đây là ảnh chụp màn hình cho các báo cáo Chính sách và Bảo mật.

Tóm tắt đánh giá chính sách neo

Dưới đây là ảnh chụp màn hình kết quả Bảo mật cho hình ảnh dễ bị tổn thương.

Danh sách các lỗ hổng và phơi nhiễm (CVE) thường gặp

Nếu bây giờ chúng tôi quét một hình ảnh ổn định, debian: mới nhất, không có lỗ hổng, chúng tôi sẽ nhận được kết quả bên dưới.

Tóm tắt đánh giá chính sách neo (Pass)

Danh sách các lỗ hổng và phơi nhiễm (CVE) thường gặp 

Phần kết luận

Công cụ quét hình ảnh thùng chứa neo là một công cụ phân tích hình ảnh mạnh mẽ, xác định một loạt các lỗ hổng và các vấn đề chính sách trong hình ảnh Docker. Nó có nhiều tùy chọn tùy chỉnh và có thể được cấu hình về cách phản hồi khi phát hiện các vấn đề trong quá trình phân tích. Một trong những điều này là phá vỡ bản dựng khi động cơ gặp lỗ hổng nghiêm trọng.

Nếu bạn đang tìm cách xây dựng sự nghiệp của mình trong DevSecOps, thì hãy xem điều này Khóa học của kẻ thù.

THẺ

  • Mã nguồn mở

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map