Tôi chắc chắn điều này đã từng xảy ra với bạn: bạn cố gắng lắp ráp một thùng chứa để sử dụng cá nhân, bạn muốn làm cho nó an toàn hơn bằng cách sử dụng... thùng chứa không được ưu tiên Và đột nhiên, bạn thấy mình bị mắc kẹt trong một mê cung các lỗi về quyền truy cập. Thật bực bội khi dành hàng giờ để cấu hình các thư mục trong thư mục chính của người dùng chỉ để phát hiện ra rằng container không thể ghi vào chúng, hoặc khi ghi được thì các tệp kết quả trên máy chủ lại bị hỏng. không thể quản lý Bởi vì chúng thuộc về một người dùng ảo.
Thực tế là, mặc dù công nghệ container hóa đã đẩy nhanh quá trình phân phối phần mềm, nhưng nó cũng mở ra cánh cửa cho những rủi ro đáng kể. Theo dữ liệu gần đây, phần lớn các ảnh hệ thống sản xuất đều chứa [không rõ - có thể là "không rõ" hoặc "không rõ"] lỗ hổng nghiêm trọngĐiều này khiến an ninh trở thành một trụ cột không thể thiếu. Vấn đề không chỉ là ngăn chặn tin tặc tấn công chúng ta, mà còn là hiểu cách hệ thống vận hành. quá trình cô lập để cơ sở hạ tầng của chúng ta không trở thành một cái sàng.
Hiểu về hệ sinh thái bảo mật container
Để tránh phải đoán mò về quyền truy cập, trước tiên chúng ta cần biết mình đang bảo vệ cái gì. Kiến trúc của container được chia thành nhiều lớp quan trọng. Đầu tiên, chúng ta có... hình ảnh của thùng chứaĐây là bản thiết kế gốc; nếu bản thiết kế này dễ bị tổn thương, tất cả các phiên bản bạn triển khai sẽ đều không an toàn. Đó là lý do tại sao việc sử dụng nó rất quan trọng. hình ảnh cơ sở đáng tin cậy và luôn cập nhật thông tin cho chúng.
Sau đó thời gian chạyNó đóng vai trò là trọng tài giữa hệ điều hành máy chủ và ứng dụng. Nếu môi trường chạy (runtime) đã lỗi thời, nguy cơ xảy ra lỗi sẽ cao. container thoát ra tăng lên đáng kể. Thêm vào đó, chúng ta phải bổ sung thêm công cụ điều phối, chẳng hạn như Kubernetes, nơi mà... kiểm soát truy cập dựa trên vai trò (RBAC) Đây là rào cản thực sự duy nhất chống lại việc truy cập trái phép vào API quản trị.
Chúng ta không thể quên được hệ điều hành máy chủNếu kẻ tấn công успеет xâm nhập vào nhân hệ điều hành của máy chủ, chúng sẽ nắm giữ chìa khóa truy cập toàn bộ miền. Khuyến nghị ở đây rất rõ ràng: hãy sử dụng một... hệ điều hành tối thiểu để giảm thiểu bề mặt tấn công. Cuối cùng, mạng là điểm xâm nhập phổ biến nhất; gần 30% các vụ xâm phạm xảy ra do lỗi kết nối, vì vậy... phân đoạn mạng và mã hóa TLS/SSL Họ là bắt buộc.
Vấn đề đau đầu về quyền truy cập và người dùng root.
Vấn đề thường gặp đối với những người chơi nghiệp dư là quy trình làm việc với các phân vùng ổ đĩa. Bạn tạo một thư mục, gắn kết nó, và rồi, bùm!, một lỗi xảy ra. quyền truy cập bị từ chốiĐiều này xảy ra vì theo mặc định, nhiều container khởi động với quyền root. Khi bạn cố gắng buộc... UID và GID ở mức 0 Việc làm cho chúng khớp với người dùng máy chủ của bạn đang tạo ra một cầu nối nguy hiểm. Nếu vùng chứa không cho phép bạn cấu hình các ID này, bạn sẽ mất cả buổi chiều để cố gắng tìm ra người dùng nội bộ nào mà ứng dụng đang sử dụng để thực hiện thao tác. chown hướng dẫn sử dụng.
Giải pháp hiệu quả là áp dụng nguyên tắc đặc quyền tối thiểuBạn không nên chạy bất cứ thứ gì với quyền root trừ khi thực sự cần thiết. Để giải quyết vấn đề các tập tin do container tạo ra mà bạn không thể xóa trên máy chủ, điều cần thiết là phải cấu hình Dockerfile với hướng dẫn sau: USER, định nghĩa một người dùng không có đặc quyền trước khi ứng dụng khởi chạy.
Nếu bạn sử dụng Podman, thì khái niệm về thùng chứa không rễ Nó là tính năng gốc và rất hữu ích, nhưng nó yêu cầu bạn phải hiểu cách người dùng máy chủ được ánh xạ tới người dùng vùng chứa. Để ngăn chặn việc phân quyền vượt khỏi tầm kiểm soát, lý tưởng nhất là ứng dụng nên được thiết kế để ghi vào các tuyến đường cụ thể và rằng... lập bản đồ thể tích Việc này được thực hiện dựa trên UID thực của người dùng khởi chạy tiến trình.
Chiến lược xây dựng hình ảnh bọc thép
Nếu bạn muốn chấm dứt sự đau khổ, bạn phải thay đổi cách bạn tạo ra những hình ảnh của mình. Một kỹ thuật cực kỳ hiệu quả là... xây dựng nhiều giai đoạnVề cơ bản, bạn sử dụng một ảnh hệ thống dung lượng lớn chứa đầy đủ các công cụ xây dựng để tạo ra tệp nhị phân, sau đó chỉ sao chép tệp đó vào ảnh hệ thống cuối cùng. cực kỳ nhẹ.
Bạn thậm chí có thể tiến xa hơn nữa bằng cách sử dụng hình ảnh. xướcĐiều này tạo ra một vùng chứa hoàn toàn trống rỗng: không có shell, không có trình quản lý gói, chỉ có ứng dụng của bạn. Điều này khiến cho kẻ tấn công gần như không thể thực thi các lệnh độc hại nếu chúng xâm nhập được vào bên trong, vì Không có trình thông dịch lệnh. sẵn.
Một biện pháp bảo mật khác là làm sạch ảnh đĩa khỏi bất kỳ tệp nhị phân nào có quyền truy cập. setuid hoặc setgidCác quyền này cho phép một tệp được thực thi với quyền hạn của chủ sở hữu tệp chứ không phải người dùng khởi chạy nó, điều này mở đường cho... leo thang đặc quyềnMột lệnh đơn giản để tìm kiếm và loại bỏ những đoạn mã này trong quá trình tạo ảnh có thể giúp bạn tránh được rất nhiều rắc rối.
Những nguy hiểm của chế độ đặc quyền và khả năng của Linux
Đôi khi, vì quá tuyệt vọng không thể giải quyết vấn đề về quyền truy cập, chúng ta dễ sa vào cám dỗ sử dụng cờ (flag). – đặc quyềnHãy quên việc đó đi. Chế độ đặc quyền sẽ phá vỡ sự cô lập của container và cho phép bạn truy cập hoàn toàn vào các thiết bị của máy chủ. Điều đó giống như việc bạn đưa chìa khóa nhà mình cho người lạ chỉ vì họ không biết cách mở cổng vườn vậy.
Thay vào đó, bạn nên chơi với... Khả năng của LinuxDocker gán một tập hợp các quyền mặc định (chẳng hạn như CAP_CHOWN hoặc CAP_NET_RAW). Nếu ứng dụng của bạn không cần thao tác mạng ở cấp độ thấp, cách tiếp cận thông minh nhất là... loại bỏ các khả năng không cần thiết và chỉ thêm những mục thực sự cần thiết. --cap-add.
Đối với những người quản lý các môi trường có quy mô lớn hơn, có những plugin ủy quyền Ví dụ như opa-docker-authz. Chúng cho phép chặn các cuộc gọi đến API của daemon Docker và ngăn chặn mọi nỗ lực khởi chạy container ở chế độ đặc quyền, đảm bảo rằng không ai, dù vô tình, để ngỏ cánh cửa truy cập vào máy chủ.
Tối ưu hóa và bảo trì môi trường
Đừng quá chú trọng đến kích thước ảnh 5MB khi sử dụng Alpine Linux nếu điều đó gây ra các vấn đề tương thích với thư viện. Đôi khi, ảnh Debian có kích thước lớn hơn một chút lại tốt hơn. ổn định và được biết đến do cả nhóm thực hiện. Điều quan trọng là phải triển khai một quét lỗ hổng Hệ thống CI/CD tự động phát hiện các lỗ hổng bảo mật trước khi đưa hình ảnh hệ thống vào sản xuất.
Về vấn đề lưu trữ, nó ngăn ứng dụng ghi vào hệ thống tệp gốc. Hãy cấu hình... hệ thống tệp chỉ đọc (rootfs) và chỉ định các ổ đĩa cụ thể cho dữ liệu cần được lưu trữ lâu dài. Điều này không chỉ an toàn hơn mà còn tạo ra một kiến trúc gọn gàng hơn. không có tài sảnTạo điều kiện thuận lợi cho việc mở rộng quy mô theo chiều ngang.
Đối với các quy trình theo lịch trình, đừng đặt tác vụ cron bên trong vùng chứa trang web. Nguyên tắc vàng là: một quy trình cho mỗi containerCách tiếp cận tối ưu nhất là sử dụng ảnh ứng dụng của bạn để khởi chạy một container tạm thời thực thi tác vụ rồi tự hủy, hoặc quản lý cron từ máy chủ bằng cách gọi công cụ container thông qua các lệnh.
Bảo mật container là một quá trình liên tục bao gồm việc loại bỏ quyền truy cập root, hạn chế các khả năng của nhân hệ điều hành và loại bỏ các công cụ không cần thiết khỏi ảnh container. Bằng cách kết hợp người dùng không có đặc quyền với việc tăng cường bảo mật trong thời gian chạy và giám sát liên tục, một môi trường được thiết lập sao cho chức năng không làm ảnh hưởng đến tính toàn vẹn của hệ thống máy chủ.
Người viết đam mê về thế giới byte và công nghệ nói chung. Tôi thích chia sẻ kiến thức của mình thông qua viết lách và đó là những gì tôi sẽ làm trong blog này, cho bạn thấy tất cả những điều thú vị nhất về tiện ích, phần mềm, phần cứng, xu hướng công nghệ, v.v. Mục tiêu của tôi là giúp bạn điều hướng thế giới kỹ thuật số một cách đơn giản và thú vị.

