Computer >> Máy Tính >  >> Hệ thống >> Linux

Cách tránh khởi động lại máy chủ với Ubuntu Livepatch

Cách tránh khởi động lại máy chủ với Ubuntu Livepatch

Nếu bạn quản lý (các) máy chủ của mình, thì sớm muộn gì bạn cũng gặp phải sự cố này:bạn phải khởi động lại hệ điều hành, nhưng máy cung cấp một dịch vụ quan trọng mà bạn không thể làm gián đoạn.

Nhưng tại sao phải khởi động lại ngay từ đầu? Mọi thứ dường như hoạt động tốt sau khi apt-get upgrade yêu cầu. Tuy nhiên, mọi thứ không phải lúc nào cũng như họ tưởng. Mặc dù hệ thống vẫn vui vẻ tiếp tục chạy sau mỗi lần nâng cấp, không buộc phải khởi động lại như Windows vẫn làm, nhưng nó vẫn có thể cần một thiết bị.

Ví dụ:khi một lỗ hổng trong lõi của hệ thống (nhân) được phát hiện, nó sẽ được vá và đẩy đến máy chủ của bạn dưới dạng một gói mới. Sau khi bạn cài đặt hạt nhân được vá, một số tệp được ghi vào đĩa, nhưng đó vẫn là hạt nhân cũ đang chạy chương trình, vì nó là tệp được tải vào bộ nhớ (RAM).

Điều này có nghĩa là máy chủ của bạn vẫn dễ bị tấn công bởi các lỗ hổng bảo mật đã phát hiện trước đó. Các quy trình, daemon và dịch vụ khác có thể được tải lại mà không cần khởi động lại hệ điều hành. Tuy nhiên, hạt nhân nằm ở trung tâm của hệ thống và chỉ có thể được tải lại ở lần khởi động tiếp theo.

Ubuntu Livepatch giải quyết vấn đề này bằng cách cho phép bạn đóng các lỗ hổng bảo mật của nhân mà không cần khởi động lại. Bằng cách này, bạn có thể tránh hoặc trì hoãn việc khởi động lại trong nhiều tuần hoặc nhiều tháng mà không ảnh hưởng đến bảo mật.

Ý tưởng cốt lõi đằng sau bản vá trực tiếp rất đơn giản:khi một chức năng có lỗ hổng, hãy viết lại nó, loại bỏ lỗ hổng và tải chức năng mới ở đâu đó vào bộ nhớ. Khi hàm được gọi, thay vì chạy mã trong hạt nhân, hãy chuyển hướng cuộc gọi để sử dụng mã được viết lại.

Cách tránh khởi động lại máy chủ với Ubuntu Livepatch

Tuy nhiên, như với hầu hết những thứ có vẻ hoạt động đơn giản, việc triển khai và chi tiết kỹ thuật không đơn giản như vậy.

Cách thiết lập Livepatch trên Ubuntu

Truy cập trang này và tạo tài khoản Ubuntu One của bạn. (Hoặc chỉ cần đăng nhập nếu bạn đã có.) Kiểm tra email của bạn và nhấp vào liên kết xác nhận tài khoản sau đó. Tiếp theo, hãy truy cập trang Canonical Livepatch Service. Chọn rằng bạn là “người dùng Ubuntu” và nhấp vào nút để tạo mã thông báo của bạn. Trang tiếp theo sẽ hiển thị cho bạn các lệnh chính xác mà bạn phải nhập trên máy chủ của mình. Sau lệnh đầu tiên, hãy nhập

sudo snap install canonical-livepatch

Chờ một vài giây cho đến khi gói snap được cài đặt hoàn chỉnh. Khi hoàn tất, bạn sẽ nhận được kết quả tương tự như những gì bạn có thể thấy trong hình sau.

Cách tránh khởi động lại máy chủ với Ubuntu Livepatch

Cuối cùng, với lệnh cuối cùng từ trang của Canonical,

sudo canonical-livepatch enable #PASTE_YOUR_TOKEN_HERE

dịch vụ sẽ hoạt động và sẽ tự động áp dụng các bản vá bảo mật cho nhân của bạn, bất cứ khi nào cần thiết mà không cần bạn nhập liệu.

Cài đặt Snap Daemon nếu cần thiết

Trong một số trường hợp hiếm hoi, lệnh đầu tiên trong phần trước có thể không thành công với thông báo lỗi sau:-bash: /usr/bin/snap: No such file or directory . Trong trường hợp này, điều đó có nghĩa là nhà cung cấp máy chủ của bạn có hình ảnh hệ điều hành Ubuntu không bao gồm dịch vụ snap daemon theo mặc định. Cài đặt nó bằng:

sudo apt update && sudo apt install snapd

Bây giờ, hãy chạy lại hai lệnh từ phần trước.

Cập nhật máy chủ của bạn

Livepatch sẽ áp dụng tất cả các bản cập nhật bảo mật cần thiết cho nhân của bạn. Tuy nhiên, bạn vẫn nên thường xuyên nâng cấp phần còn lại của hệ thống bằng lệnh như:

sudo apt update && sudo apt upgrade

Bạn nên làm điều này hàng tuần, hoặc thậm chí thường xuyên hơn, nếu bạn có thể. Các gói hệ thống quan trọng có thể nhắc bạn rằng chúng cần được khởi động lại để áp dụng các bản sửa lỗi bảo mật mới nhất.

Cách tránh khởi động lại máy chủ với Ubuntu Livepatch

Đây thường là những lần khởi động lại dễ dàng, có nghĩa là chúng không làm gián đoạn bất kỳ dịch vụ nào trong quá trình này. Ví dụ:trong trường hợp này, daemon SSH đã được khởi động lại mà không làm gián đoạn phiên SSH đang hoạt động.

Trong các tình huống khác, bạn có thể tự khởi động lại dịch vụ để đảm bảo rằng mã mới, đã vá được tải lại và các bản sửa lỗi bảo mật được áp dụng. Ví dụ:nếu bạn nhận thấy rằng gói nginx đã được nâng cấp, bạn có thể chạy

systemctl restart nginx.service

để tải lại daemon nginx vào bộ nhớ. Nếu không, ngay cả khi một gói được nâng cấp, gói đó vẫn có thể chạy với mã cũ, dễ bị tấn công, khiến máy chủ của bạn gặp rủi ro trước các cuộc tấn công đã biết. Một số nâng cấp gói thực hiện điều này cho bạn, nhưng những nâng cấp khác thì không. Đó là lý do tại sao bạn nên chú ý đến những gì “nâng cấp phù hợp” thực hiện và khởi động lại một số dịch vụ, nếu cần. Bạn cũng có thể xem nhật ký để xem việc này có được thực hiện tự động hay không.

Kết luận

Như bạn có thể thấy, Canonical đã làm cho việc thực hiện điều này trên máy chủ khá dễ dàng. Về phần hạt nhân, bạn không cần thực hiện công việc bảo trì nào. Điều duy nhất bạn có thể làm là chạy

canonical-livepatch status

theo thời gian để kiểm tra mọi thứ.