lời mở đầu
Tôi tiếp tục nghe mọi người nhắc lại những quan niệm sai lầm từ khắp nơi trên internet .. vì vậy, tôi sẽ cố gắng làm rõ
đầu tiên; có bao nhiêu khám phá tình cờ đã có, mà đơn giản là .. do nguyên nhân và kết quả , cuối cùng đã được sử dụng cho mục đích khác ngoài mục đích của nó?
cái gì là và cái gì là nhà tù Chroot
Chroot ban đầu được thiết kế để thay đổi thư mục gốc cho quy trình hoặc người dùng (tuyệt vời để biên dịch phần mềm từ các nguồn không xác định). điều này cung cấp bảo mật cho hệ thống cơ sở, cũng như một thiết bị thử nghiệm nhanh, bao gồm cả việc dọn dẹp dễ dàng. đã nhiều năm trôi qua, và khái niệm và cách sử dụng ngụ ý chắc chắn đã thay đổi.
chroot đã được sử dụng một cách hiệu quả và trực tiếp trong cơ sở mã cho một số chương trình và thư viện (ví dụ: openSSHd, apache2 + mod_security2 / mod_chroot, dovecot, sendmail, openVPN, pam_chroot, và nhiều hơn nữa ). giả sử rằng tất cả các ứng dụng chính này đã triển khai các giải pháp bảo mật bị lỗi là không đúng
chroot là một giải pháp để ảo hóa hệ thống tập tin: không hơn không kém. giả định rằng bạn có thể dễ dàng thoát ra khỏi một chiếc chroot cũng không đúng ... miễn là bạn tuân thủ các nguyên tắc chạy các quy trình bên trong nhà tù chroot.
Một số bước để bảo vệ nhà tù chroot của bạn
tức là KHÔNG chạy các tiến trình như ROOT. điều này có thể mở ra một vectơ leo thang gốc (điều này cũng đúng trong hoặc ngoài chroot). không chạy một tiến trình bên trong chroot, sử dụng cùng một người dùng như một tiến trình khác bên ngoài chroot. tách riêng từng quy trình và người dùng thành Chroot của riêng mình để hạn chế các bề mặt tấn công và cung cấp quyền riêng tư. chỉ gắn các tệp, thư viện và thiết bị cần thiết. cuối cùng, chroot KHÔNG phải là sự thay thế cho bảo mật hệ thống cơ sở. bảo mật toàn bộ hệ thống.
Một lưu ý quan trọng khác: nhiều người nghĩ rằng OpenVZ bị hỏng hoặc không bằng so với ảo hóa toàn hệ thống. họ đưa ra giả định này vì thực chất nó là Chroot, với một bảng quy trình đã được khử trùng. với các biện pháp bảo mật tại chỗ trên phần cứng và thiết bị. hầu hết trong số đó bạn có thể thực hiện trong một chroot.
không phải mọi quản trị viên đều có mức độ kiến thức cần thiết để bảo mật tất cả các tham số kernel cần thiết trên một máy chủ chuyên dụng hoặc dưới hệ thống ảo hóa toàn bộ. điều này có nghĩa là việc triển khai OpenVZ có nghĩa là khách hàng của bạn sẽ có ít bề mặt tấn công hơn để thử và bảo vệ và bảo mật trước khi triển khai các ứng dụng của họ. một máy chủ tốt sẽ làm tốt công việc bảo mật các tham số này và đến lượt nó, điều này tốt hơn cho không chỉ tất cả mọi người trên Node, hoặc trong trung tâm dữ liệu, mà cho cả internet ...
như đã nêu, chroot cung cấp ảo hóa hệ thống tập tin. bạn phải đảm bảo rằng không có tệp thực thi setuid ', ứng dụng không an toàn, thư viện, liên kết không có chủ sở hữu, v.v. trong một số cách khác, thỏa hiệp một cái gì đó bên trong nhà tù - thoát khỏi nhà tù thường thông qua việc leo thang đặc quyền hoặc bơm trọng tải của anh ta hoặc cô ta vào hệ thống cơ sở.
nếu điều này xảy ra, nó thường là kết quả của một bản cập nhật xấu, khai thác không ngày hoặc lỗi con người thành ngữ .
Tại sao chroot vẫn được sử dụng, trái ngược với ảo hóa toàn hệ thống
hãy xem xét kịch bản này: bạn đang chạy Máy chủ riêng ảo, với nút máy chủ đang chạy OpenVZ. bạn chỉ đơn giản là không thể chạy bất cứ thứ gì hoạt động ở cấp độ kernel. điều này cũng có nghĩa là bạn không thể sử dụng ảo hóa hệ điều hành để phân tách các quy trình và cung cấp bảo mật bổ sung. do đó, bạn PHẢI sử dụng chroot cho mục đích này.
hơn nữa, chroot là bền vững trên bất kỳ hệ thống nào, bất kể tài nguyên có sẵn. Nói một cách đơn giản, nó có chi phí tối thiểu của bất kỳ loại ảo hóa nào. điều này có nghĩa là nó vẫn còn quan trọng trên nhiều hộp cấp thấp.
xem xét một kịch bản khác: bạn có apache chạy trong môi trường ảo hóa. bạn muốn tách riêng từng người dùng. cung cấp một hệ thống tệp ảo hóa thông qua một chroot thêm vào apache (mod_chroot, mod_security, v.v.) sẽ là lựa chọn tốt nhất để đảm bảo quyền riêng tư tối đa giữa người dùng cuối. điều này cũng giúp ngăn chặn thu thập thông tin và cung cấp một lớp bảo mật khác.
Nói một cách đơn giản, điều quan trọng là phải thực hiện bảo mật trong các lớp . Chroot có khả năng là một trong số họ. không phải tất cả mọi người và mọi hệ thống đều có quyền truy cập vào Hạt nhân, do đó, chroot VẪN phục vụ một mục đích. có rất nhiều ứng dụng trong đó tính năng hệ thống đầy đủ về cơ bản là quá mức cần thiết.
Trả lời câu hỏi của bạn
Tôi không đặc biệt sử dụng CentOS, nhưng tôi biết rằng Bind hiện đã bỏ các đặc quyền của nó trước khi hoạt động. tuy nhiên, tôi cho rằng liên kết đó bị phá hủy do lịch sử của các vectơ tấn công và các lỗ hổng tiềm ẩn.
Ngoài ra ... sẽ có ý nghĩa hơn khi tự động chroot ứng dụng này, hơn là không, bởi vì MỌI NGƯỜI không có quyền truy cập vào ảo hóa cấp hệ thống / hệ điều hành đầy đủ. đến lượt nó, và trên lý thuyết, giúp cung cấp bảo mật cho cơ sở người dùng CentOS:
Các nhà cung cấp hệ điều hành chỉ đơn giản là không đi xung quanh giả sử mọi người đều chạy cùng một hệ thống. bằng cách này, họ có thể giúp cung cấp thêm một lớp bảo mật ...
có một lý do tại sao rất nhiều ứng dụng sử dụng điều này và tại sao rõ ràng hệ điều hành của bạn làm theo mặc định: bởi vì nó được sử dụng như một tính năng bảo mật và nó KHÔNG hoạt động. với sự chuẩn bị kỹ lưỡng, như đã nói trước đây, đó là một trở ngại khác mà kẻ tấn công tiềm năng phải vượt qua - hầu hết thời gian, hạn chế thiệt hại chỉ được thực hiện đối với nhà tù chroot.