Thực hành tốt nhất để giữ cho máy EC2 Ubuntu được cập nhật


12

Sau lỗ hổng đau lòng gần đây của OpenSSL, tôi muốn giữ cho các máy EC2 của mình được cập nhật thường xuyên. Cách tiếp cận ngây thơ sẽ là thiết lập một công việc định kỳ hàng giờ để cập nhật bảo mật ( sudo apt-get update && sudo unattended-upgrade).

Có bất kỳ rủi ro khi làm điều đó? Có một cơ chế cập nhật được khuyến nghị cho các máy EC2 không?

Câu trả lời:


13

Gói nâng cấp không giám sát là cách tiêu chuẩn để tự động áp dụng các bản sửa lỗi và bản vá bảo mật quan trọng trong Ubuntu.

Tôi khuyên bạn nên cài đặt cái này trên mọi hệ thống Ubuntu:

sudo apt-get update &&
sudo apt-get install unattended-upgrades

Bạn không cần phải tạo công việc định kỳ của riêng mình. Gói cài đặt một cho bạn.

Bạn có thể chỉnh sửa cấu hình mặc định nếu bạn muốn thay đổi hành vi của nó: https://help.ubfox.com/lts/serverguide/automatic-updates.html


Bất kỳ suy nghĩ về khả năng làm điều này trên một máy chủ sản xuất? Nó khiến tôi lo lắng khi có những thay đổi lặng lẽ được áp dụng và có nguy cơ khả năng bản cập nhật bị lỗi hoặc đưa ra các vấn đề.
ianjs

3
Bởi "mỗi" tôi có nghĩa là hệ thống sản xuất, quá. Tôi đã tự động áp dụng các bản vá bảo mật Ubuntu trong nhiều năm và không thể nhớ bất kỳ vấn đề nghiêm trọng nào. Nó khiến tôi lo lắng khi có một máy chủ sản xuất ngồi đó mà không có bản vá cho các vấn đề bảo mật đã biết và có nguy cơ bị chúng khai thác. Điều đó nói rằng mỗi tình huống có nhu cầu khác nhau, vì vậy bạn có thể tốt hơn là trải qua giai đoạn thử nghiệm nghiêm ngặt cho từng bản vá. Mặc dù vậy, hãy lưu ý rằng chúng được phát hành mọi lúc, vì vậy bạn sẽ bận rộn.
Eric Hammond

1
Tôi không khuyên điều này trừ khi bạn có thiết lập dự phòng / cụm. Các quy trình cập nhật của Ubuntu không phải là khó khăn, tôi đã dừng các dịch vụ nhiều lần và gần đây nhất là một khu vực khởi động bị hỏng ... Và chúng tôi không làm gì đặc biệt - chỉ là Apache như các ứng dụng proxy và Tomcat ngược.
đôi

1

Chúng tôi đã sử dụng unattended-upgradestừ 2015 đến 2020 mà không có vấn đề gì. Chúng tôi có một thiết lập nhỏ (trên DigitalOcean) với:

  • nginx
  • mysql-server
  • php5-fpm php5-curl php5-mysql

Dựa trên hiệu suất trong quá khứ tốt, thực hiện cập nhật theo cách này cảm thấy an toàn hơn so với không thực hiện. Nhưng đó không hẳn là một sự đảm bảo cho tương lai!

Đây có thể không phải là một ý tưởng hay apache, dựa trên báo cáo của những người dùng khác và kinh nghiệm apachecập nhật trước đây của tôi . [Xem ở trên, và ở đây ]

Với unattended-upgrades, can thiệp thủ công sẽ vẫn được yêu cầu khi bản phát hành tiếp cận EOL .


(Bên cạnh những câu hỏi: Theo kinh nghiệm của tôi với TWiki, WordPress và Jenkins, giữ các ứng dụng up-to-date thực sự là một mối quan tâm lớn hơn hệ điều hành riêng của mình, mặc dù tất nhiên chúng tôi thực sự cần làm cả hai Đối với hòa bình-of-tâm,. bạn có thể sandbox các ứng dụng đối mặt với Internet dưới dạng các tiến trình không root chạy bên trong bộ chứa Docker.)


Nhưng vì bạn đã hỏi về thực tiễn tốt nhất , cách tiếp cận chính được đề xuất trong tài liệu AWS là:

  • Tạo và bắt đầu các phiên bản mới để thay thế các phiên bản trực tuyến hiện tại của bạn. Sau đó xóa các trường hợp hiện tại.

    Các phiên bản mới sẽ có bộ bản vá bảo mật mới nhất được cài đặt trong quá trình thiết lập.

(Tháng 2 năm 2020)

Điều này có thể được thực hiện như là một phần của chiến lược triển khai màu xanh lam . Ưu điểm ở đây là bạn có thể chạy thử nghiệm đối với máy chủ mới của mình trước khi chuyển lưu lượng truy cập. Nếu các bài kiểm tra của bạn kỹ lưỡng, thì về mặt lý thuyết, các cập nhật của bạn có thể được tự động hóa hoàn toàn, được xác minh trước khi đi vào hoạt động và không có thời gian chết.

Ưu điểm khác:

  • Các thử nghiệm có thể đưa ra cảnh báo nâng cao nếu cần có sự chú ý của con người (trái ngược với unattended-upgrades, khi các cảnh báo chỉ đến từ người dùng của bạn khi vấn đề còn tồn tại!)

  • Nếu hệ thống của bạn bị xâm phạm hoặc bạn quyết định chuyển đổi nhà cung cấp, phương pháp này sẽ giúp bạn dễ dàng triển khai một triển khai mới. Chiến lược triển khai của bạn là kịch bản, thay vì bộ nhớ cổ.

Nhưng tất nhiên có nhiều thiết lập cần thiết cho phương pháp này hơn là cài đặt đơn giản unattended-upgradesvà phức tạp hơn, do đó vẫn còn chỗ cho lỗi.


AWS cũng đề cập đến việc thực hiện "Lệnh stack Dependencies stack", dường như là cách chính thức của họ để làm một cái gì đó tương tự unattended-upgrades. Có vẻ như có thể được kích hoạt từ giao diện Instances của họ, nhưng tôi không chắc liệu nó có thể được tự động hóa hay không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.