Luận văn tốt nghiệp khoa học máy tính nghiên cứu và phát triển công cụ hỗ trợ kiểm thử bảo mật các hệ thống triển khai trên docker và kubernetes

Luận văn tốt nghiệp nghiên cứu Luận văn tốt nghiệp khoa học máy tính nghiên cứu và phát triển công cụ hỗ trợ kiểm thử bảo mật các, điều tra thực trạng, phân tích số liệu, đề xuất

Trường đại học

Đại học Bách Khoa

Chuyên ngành

Khoa học máy tính

Người đăng

Ẩn danh

Thể loại

luận văn tốt nghiệp

2022

87
5
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu về công cụ kiểm thử bảo mật

Trong bối cảnh an ninh mạng ngày càng trở nên quan trọng, việc phát triển công cụ kiểm thử bảo mật cho hệ thống DockerKubernetes đã trở thành một nhu cầu thiết yếu. Kiểm thử bảo mật không chỉ giúp phát hiện các lỗ hổng trong hệ thống mà còn giúp tăng cường an ninh mạng cho các ứng dụng được triển khai. Công cụ này được thiết kế để hỗ trợ các lập trình viên và chuyên gia bảo mật trong việc đánh giá và cải thiện bảo mật ứng dụng. Sự phát triển của công nghệ container như Docker đã mở ra nhiều cơ hội nhưng cũng đồng thời tạo ra nhiều thách thức về bảo mật hệ thống. Các mối đe dọa từ bên ngoài có thể dễ dàng khai thác những lỗ hổng này, do đó, việc phát triển một công cụ kiểm thử hiệu quả là rất cần thiết.

1.1. Tại sao cần kiểm thử bảo mật cho Docker và Kubernetes

DockerKubernetes là hai công nghệ phổ biến trong việc triển khai và quản lý ứng dụng. Tuy nhiên, với sự gia tăng sử dụng công nghệ container, các lỗ hổng bảo mật cũng ngày càng nhiều. Việc thực hiện kiểm tra lỗ hổng thường xuyên giúp phát hiện và khắc phục kịp thời các vấn đề bảo mật. Nghiên cứu cho thấy rằng, hơn 60% lỗ hổng bảo mật có thể được phát hiện thông qua các bài kiểm tra định kỳ. Điều này không chỉ giúp bảo vệ hệ thống mà còn tạo sự tin tưởng cho người dùng và các bên liên quan.

II. Kiến thức nền tảng về Docker và Kubernetes

Để phát triển công cụ kiểm thử bảo mật, việc hiểu rõ về DockerKubernetes là rất quan trọng. Docker cho phép lập trình viên đóng gói ứng dụng cùng với tất cả các phụ thuộc vào trong một container, giúp triển khai dễ dàng và nhanh chóng. Kubernetes, mặt khác, là một hệ thống quản lý container mạnh mẽ, cho phép tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng container. Sự kết hợp giữa hai công nghệ này đã tạo ra một môi trường phát triển linh hoạt nhưng cũng đầy thách thức về bảo mật. Do đó, việc nắm vững các khái niệm cơ bản và cách thức hoạt động của chúng là cần thiết để phát triển một công cụ kiểm thử bảo mật hiệu quả.

2.1. Các khái niệm cơ bản về container

Container là một công nghệ cho phép các ứng dụng chạy độc lập trong một môi trường ảo hóa nhẹ. Docker là công cụ phổ biến nhất để tạo và quản lý các container. Các container chia sẻ cùng một hệ điều hành nhưng có thể hoạt động độc lập với nhau. Điều này giúp tiết kiệm tài nguyên và tăng cường hiệu suất. Tuy nhiên, việc chia sẻ tài nguyên cũng tạo ra rủi ro bảo mật, vì một lỗ hổng trong một container có thể ảnh hưởng đến các container khác. Do đó, việc kiểm thử bảo mật cho các container là rất quan trọng.

III. Các hướng tấn công phổ biến trên Docker và Kubernetes

Việc hiểu rõ các hướng tấn công phổ biến trên DockerKubernetes là điều cần thiết để xây dựng một công cụ kiểm thử bảo mật hiệu quả. Các cuộc tấn công có thể đến từ việc cấu hình không an toàn, lỗ hổng trong Container Engine, hay các vấn đề liên quan đến kernel. Những kẻ tấn công có thể khai thác các lỗ hổng này để truy cập trái phép vào hệ thống và đánh cắp dữ liệu. Nghiên cứu cho thấy rằng, nhiều cuộc tấn công thành công đều bắt nguồn từ việc thiếu sót trong cấu hình và quản lý bảo mật. Do đó, việc phát triển một công cụ kiểm thử bảo mật giúp phát hiện sớm các lỗ hổng này là rất cần thiết.

3.1. Tấn công thông qua cấu hình không an toàn

Một trong những cách mà kẻ tấn công có thể khai thác hệ thống là thông qua các cấu hình không an toàn. Ví dụ, việc để lộ Docker socket hoặc sử dụng flag –privileged cho container có thể tạo cơ hội cho kẻ tấn công truy cập vào hệ thống. Việc cấp quyền capabilities vượt quá nhu cầu cũng là một nguyên nhân dẫn đến các lỗ hổng bảo mật. Do đó, việc kiểm tra và đảm bảo rằng các cấu hình được thực hiện đúng cách là rất quan trọng trong việc bảo vệ hệ thống.

10/01/2025

Trích đoạn nội dung tài liệu

Chương 1: Giới thiệu chung về nội dung đề tài, các giai đoạn thực hiện và tổng quan báo cáo. • Chương 2: Trình bày các kiến thức nền tảng về Docker container và Kubernetes. • Chương 3: Trình bày các hướng tấn công, khai thác đối với Docker container. • Chương 4: Trình bày các hướng tấn công, khai thác đối với Kubernetes.

• Chương 5: Phân tích thiết kế hệ thống và hiện thực công cụ. • Chương 6: Đưa ra tập kiểm thử và đánh giá độ hiệu quả của công cụ. 2 Thuật ngữ host được sử dụng để nói đến máy tính hoặc hệ thống máy tính đang chạy mà container đang triển khai trên đó. 3 • Chương 7: Tổng kết về Luận văn tốt nghiệp, trình bày những hạn chế và hướng phát triển trong tương lai.

4 2 Kiến thức và công nghệ nền tảng 2.1 Một số khái niệm trong hệ điều hành Linux có liên quan Container được xây dựng và triển khai trên nền tảng của hệ điều hành Linux vì thế sẽ có nhiều khái niệm liên quan đến hệ điều hành Linux được sử dụng xuyên suốt luận văn. Mục đích của phần này cung cấp thông tin về một số khái niệm này. • Linux kernel: Linux kernel là lõi của hệ điều hành Linux. Nó là phần cốt lõi của hệ thống, chịu trách nhiệm quản lý tài nguyên hệ thống, điều khiển các thiết bị và cung cấp các dịch vụ cơ bản cho các chương trình đang chạy trên hệ thống.

Nó là một phần không thể thiếu của hệ thống Linux và là nơi mà các thay đổi cơ bản đến từ các nhà phát triển được thực hiện. Kể từ bây giờ cho đến hết luận văn, thuật ngữ “kernel” sẽ được sử dụng để chỉ Linux kernel. • credentials: Trong Linux, credentials là thuật ngữ đề cập đến thông tin xác định người dùng và kiểm soát truy cập người dùng đến các tài nguyên. Thông tin này thường bao gồm user ID (UID) và group ID (GID) của người dùng và các nhóm mà người dùng đang là thành viên.

Nhân kernel quản lý thông tin này trong một cấu trúc được gọi là credentials structure, cấu trúc này được liên kết với mỗi tiến trình đang chạy trên hệ thống. • capablilities: Trong hệ điều hành Linux, capabilities đề cập đến các quyền truy cập được gán cho các tiến trình. Cabilities được sử dụng để kiểm soát quyền truy cập của các tiến trình đến các tài nguyên hệ thống, chẳng hạn như các tập tin và các thiết bị. Bằng cách phân chia các quyền truy cập thành các khả năng riêng biệt, hệ điều hành có thể điều chỉnh mức độ truy cập của các tiến trình đến các tài nguyên một cách linh hoạt hơn.1 minh họa một số quyền truy cập mà Linux hỗ trợ.

Trong hệ điều hành Linux, thuật ngữ filesystem đề cập đến cách mà dữ liệu được lưu trữ và quản lý trên thiết bị lưu trữ như đĩa cứng hoặc thiết bị flash. Hệ thống tập tin cung cấp các chức năng như tạo, xóa và đọc/ghi các tập tin và thư mục trên thiết bị lưu trữ, quản lý việc truy cập các tài nguyên bằng cách sử dụng các quyền truy cập và capabilities. Một số hệ thống tập tin phổ biến trên Linux bao gồm ext4 (fourth extended file system), XFS (High Performance Scalable File System) và Btrfs (B-Tree File System).1: Một số capabilities trong Linux • cgroups. cgroups (control groups) là một tính năng của hệ điều hành Linux, cho phép người dùng giới hạn và quản lý các tài nguyên của các tiến trình trên hệ thống.

Cgroups giúp người dùng có thể đặt giới hạn cho các tiến trình như sử dụng CPU, bộ nhớ và dung lượng đĩa, giúp cho hệ thống hoạt động hiệu quả hơn và tránh việc một tiến trình chiếm quá nhiều tài nguyên của hệ thống. Cgroups cũng giúp cho việc quản lý và theo dõi các tiến trình trên hệ thống Linux trở nên dễ dàng hơn. Trong Linux, không gian tên (namespaces) là một cơ chế cho phép tách biệt các tiến trình trên hệ thống bằng cách tạo ra các không gian riêng biệt cho mỗi tiến trình. Namespaces cung cấp một tập hợp các tài nguyên riêng biệt cho tiến trình đang chạy trong đó, chẳng hạn như các tên tập tin, bộ nhớ, các bộ đếm thời gian và các tên thiết bị.

Điều này giúp ngăn chặn các tiến trình truy cập vào các tài nguyên của các tiến trình khác và đảm bảo rằng các tiến trình có thể chạy một cách độc lập với nhau. Đây là một công nghệ bảo mật cho Linux, cho phép người quản trị hệ thống cấu hình và quản lý các chức năng bảo mật khác nhau trên hệ thống của họ. LSMs giúp xây dựng các giải pháp bảo mật cho hệ thống Linux trở nên linh hoạt và cho phép người quản trị hệ thống tùy chỉnh các chức năng bảo mật theo nhu cầu của họ. seccomp là tên viết tắt của “secure computing mode” trong Linux.

Nó là một cơ chế bảo mật cho phép người dùng cấu hình quyền truy cập của các tiến trình trên các lời gọi hệ thống. Nó giúp người dùng bảo vệ máy tính của họ khỏi các cuộc tấn công bằng cách giới hạn quyền truy cập của các tiến trình. OverlayFS là một giao diện tập tin đặc biệt trong Linux, cho phép bạn gắn hai hoặc nhiều hệ thống tập tin lớn lên nhau để tạo ra một hệ thống tập tin mới. Điều này cho phép bạn sử dụng các tập tin và thư mục từ các hệ thống tập tin dưới đáy như là các tập tin và thư mục trong hệ thống tập tin gốc, trong khi vẫn có thể ghi đè lên chúng bằng cách sử dụng một hệ thống tập tin bên trên.

OverlayFS có thể được sử dụng cho nhiều mục đích khác nhau, như tạo ra một hệ thống tập tin độc lập cho một chương trình hoặc dịch vụ, hoặc để tạo ra một bản sao lưu của hệ thống tập tin hiện tại mà không cần phải sử dụng rất nhiều dung lượng đĩa. daemon là một loại chương trình trong hệ điều hành Linux và các hệ điều hành tương tự. Đặc điểm của daemon là nó chạy trong nền và thường được dùng để thực hiện các tác vụ hệ thống, như quản lý các dịch vụ mạng, quản lý bộ nhớ, hoặc theo dõi và ghi lại các hoạt động trên hệ thống. Daemon thường không được làm việc trực tiếp với người dùng hoặc các ứng dụng khác trên hệ thống, thay vào đó nó thường được quản lý và điều khiển bởi hệ thống hoặc bởi các tiện ích quản lý hệ thống khác.

SMAP (Secure Memory Access Protection) là một tính năng trong nhân Linux giúp bảo vệ bộ nhớ hệ thống khỏi truy cập không được phép. Nó làm điều này bằng cách thiết lập một không gian địa chỉ riêng cho mã và dữ liệu của kernel, điều này ngăn chặn mã từ người dùng truy cập bộ nhớ kernel trực tiếp. SMEP (Supervisor Mode Execution Protection) là một tính năng của hệ điều hành Linux để ngăn chặn các ứng dụng với chế độ người dùng thực thi mã trong không gian bộ nhớ của hệ điều hành. Đây là một biện pháp bảo mật quan trọng giúp ngăn chặn mã độc điều khiển hệ điều hành và có thể gây hại cho hệ thống.

ASLR (Address Space Layout Randomization) là một tính năng bảo mật của Linux kernel nhằm ngẫu nhiên hóa các địa chỉ bộ nhớ được sử dụng bởi một số phần quan trọng nhất định của hệ điều hành, chẳng hạn như chính kernel và các thư viện dùng chung. Điều này khiến kẻ tấn công khó dự đoán vị trí của mã hoặc dữ liệu cụ thể trong bộ nhớ giúp ngăn chặn chúng khai thác thành công các lỗ hổng trong hệ thống. ASLR là một công cụ quan trọng để chống lại phần mềm độc hại và các mối đe dọa bảo mật khác. KASLR có chức năng giống với ASLR, làm ngẫu nhiên hóa các địa chỉ bộ nhớ của kernel.

SUID (set user ID upon execution) là một tùy chọn trong Linux, nó cho phép một tệp tin có thể được chạy với quyền của người dùng khác so với người dùng đang chạy nó. Ví dụ, nếu một tệp tin có SUID được đặt thành root, khi người khác chạy nó, tệp tin sẽ được chạy với quyền root và cho phép nó thực hiện các hành động có đặc quyền cao hơn so với người dùng bình thường. Tuy nhiên, sử dụng SUID có thể gây nguy hiểm cho bảo mật hệ thống nếu không được sử dụng một cách cẩn thận.1 Giới thiệu về container Container là một giải pháp nhằm đóng gói phần mềm và tất cả các thành phần liên quan (thư viện lập trình, cấu hình tham số,. ) nhằm cô lập và quản lý truy cập vào tài nguyên hệ thống.

Sự khác biệt giữa triển khai theo cách truyền thống và theo container được thể hiện ở Hình 2.2: So sánh kiến trúc truyền thống với container Hiệu suất làm việc là một điểm mạnh của container khi so sánh với những công nghệ truyền thống. Trước khi có container, việc triển khai ứng dụng lên môi trường vận hành (production) phải đi kèm với các thư viện, tệp tin cấu hình và các thành phần liên quan. Điều này không ảnh hưởng nhiều tới doanh nghiệp vì khi đó mọi người vẫn theo các mô hình phát triển phần mềm waterfall1. Tuy nhiên, trong vài năm trở lại đây, khi các công ty bắt đầu hướng tới việc sử dụng micro services2 cho các phần mềm của mình thì mô hình truyền thống đã bắt đầu hạn chế và không còn phù hợp, đặc biệt là các công ty đang sử dụng mô hình phát triển Scrum3.

Hạn chế cần phải đề cập đến chính là thời gian downtime khi cập nhật một phiên bản mới vì sẽ phải đồng bộ tất cả các thư viện, tệp tin cấu hình,. với nhau mới có thể hoạt động bình thường. Sau khi container ra đời, nó đã giải quyết các khó khăn sau đây cho doanh nghiệp: • Tự động hóa: Container giúp tự động hoá việc triển khai lên môi trường vận hành tiện lợi và nhanh chóng. • Dễ dàng cập nhật: Dễ dàng cập nhật các phiên bản mới mà không bị Downtime.

• Low Hardware Footprint: Sử dụng những tính năng của hệ điều hành như cgroups, namespaces để tạo ra môi trường độc lập, giảm thiểu thời gian overhead của bộ xử lý trung tâm (CPU) và bộ nhớ.org/software-engineering-classical-waterfall-model/ 2 Microservice là một kiểu kiến trúc phần mềm, trong đó một hệ thống phần mềm được xây dựng bằng cách sử dụng nhiều dịch vụ nhỏ và độc lập, mỗi dịch vụ chỉ có một mục đích rõ ràng.org/ 8 • Triển khai nhanh chóng và có thể tải sử dụng: Container được triển khai nhanh chóng vì nó không cần phải cài đặt toàn bộ dựa trên hệ điều hành. Chúng được xây dựng dựa trên các container images. Người dùng có thể sử dụng ảnh này nhiều theo nhu cầu của mình.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Bài luận văn tốt nghiệp mang tiêu đề Nghiên cứu và phát triển công cụ hỗ trợ kiểm thử bảo mật cho hệ thống triển khai trên Docker và Kubernetes của tác giả Võ Minh Long, dưới sự hướng dẫn của Thầy Nguyễn An Khương và Thầy Trần Tuấn Anh tại Đại học Bách Khoa, tập trung vào việc phát triển các công cụ giúp kiểm thử bảo mật cho các hệ thống triển khai trên nền tảng Docker và Kubernetes. Bài viết không chỉ cung cấp cái nhìn sâu sắc về các thách thức bảo mật trong môi trường container hóa mà còn đưa ra các giải pháp cụ thể để cải thiện an ninh cho các ứng dụng đang chạy trên những nền tảng này. Điều này có lợi cho các nhà phát triển và chuyên gia an toàn thông tin trong việc đảm bảo rằng hệ thống của họ được bảo vệ tốt nhất trước các mối đe dọa tiềm tàng.

Để mở rộng thêm kiến thức của bạn về lĩnh vực bảo mật hệ thống, bạn có thể tham khảo bài viết Nghiên Cứu Triển Khai Hệ Thống Giám Sát An Ninh Mạng Dựa Trên Phần Mềm Wazuh, nơi cung cấp cái nhìn về việc triển khai các hệ thống giám sát an ninh mạng, cũng như Nghiên cứu và Triển Khai Hệ Thống Giám Sát An Toàn Mạng Bằng Security Onion, giúp bạn hiểu rõ hơn về các công cụ giám sát an toàn mạng. Cuối cùng, bài viết Nghiên Cứu và Phát Triển Công Cụ Học Máy Tìm Kiếm Lỗ Hổng Bảo Mật Trong Ứng Dụng Web cũng sẽ cung cấp những kiến thức bổ ích về việc phát triển công cụ bảo mật trong lĩnh vực ứng dụng web. Những tài liệu này sẽ giúp bạn có cái nhìn toàn diện hơn về các giải pháp bảo mật trong công nghệ hiện đại.