Hướng dẫn cách bảo mật máy chủ đám mây Cloud Linux của bạn

Tác giả NetworkEngineer, T.Bảy 04, 2019, 10:56:42 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Hướng dẫn cách bảo mật máy chủ đám mây Cloud Linux của bạn


Một trong những điều đầu tiên bạn nên làm sau khi triển khai một máy chủ đám mây mới là đảm bảo nó sẽ được bảo mật. Linux cung cấp vô số tùy chọn để giúp ngăn chặn truy cập trái phép và làm cứng hệ thống của bạn. Trong hướng dẫn cách làm này, bạn có thể tìm thấy một số bước thường được đề xuất để bảo vệ máy chủ đám mây của mình.


Mã hóa thông tin liên lạc

Khi kết nối với máy chủ đám mây của bạn, tất cả lưu lượng truy cập sẽ đi qua mạng công cộng, rằng bất kỳ ai cũng có thể bị nghe lén, trừ khi bạn thực hiện các biện pháp để bảo mật thông tin liên lạc của mình. Tránh sử dụng bất kỳ giao thức chuyển tiền không được mã hóa nào như Telnet và FTP hoặc bất kỳ thứ gì sẽ gửi mật khẩu hoặc thông tin nhạy cảm khác dưới dạng văn bản thuần túy. Thay vào đó, bạn nên sử dụng SSH (Secure Shell), SCP (Sao chép bảo mật), SFTP (Giao thức truyền tệp SSH) hoặc rsync cho tất cả các nhu cầu điều khiển từ xa và truyền tệp của bạn.

Giao thức SSH cung cấp một kênh được mã hóa an toàn qua mạng công cộng để cho phép đăng nhập từ xa và các dịch vụ mạng khác hoạt động an toàn. Việc triển khai giao thức này được sử dụng phổ biến nhất là OpenSSH, được bao gồm trong hầu hết các hệ điều hành dựa trên Unix như phần lớn các bản phân phối Linux và OS X, trong môi trường Windows, máy khách PuTTY SSH là một lựa chọn phổ biến. Kiểm tra bài viết của chúng tôi để kết nối với máy chủ của bạn để tìm hiểu thêm.

Secure Copy hoặc SCP là một tính năng tích hợp của OpenSSH cho phép truyền tệp đơn giản qua kết nối mạng được mã hóa. SCP sử dụng SSH để truyền dữ liệu và cung cấp xác thực và mức độ bảo mật tương tự như SSH. Dưới đây là hai ví dụ về một bản sao tệp duy nhất đến và từ một máy chủ từ xa.

Mã nguồn [Chọn]
# Copy the file "foo.txt" from the local host to a remote host
scp foo.txt <username>@<remotehost>:/some/remote/directory

# Copy the file "foo.txt" from a remote host to the local host
scp <username>@<remotehost>:foo.txt /some/local/directory

SFTP là một tiện ích dòng lệnh khác có trong OpenSSH và nên được cài đặt trên hầu hết các hệ điều hành Unix theo mặc định. Giống như SCP, nó sử dụng SSH để chuyển các tệp an toàn qua mạng không an toàn. Người dùng Windows có thể có được chức năng tương tự bằng WinSCP (Windows Secure Copy) giống như tên của nó gợi ý thực hiện chức năng SCP và SFTP.

rsync là một tiện ích khác thường được tìm thấy trên các hệ thống Unix. Nó cung cấp chuyển tập tin qua các kênh được mã hóa để giữ cho các bản sao của một tập tin trên hai máy tính được đồng bộ hóa. Chương trình sử dụng SSH để tạo kết nối ban đầu giữa hai hệ thống và sau đó gọi rsync trên máy chủ từ xa để xác định phần nào của tệp được đồng bộ hóa cần được sao chép.

Chính sách bảo mật tài khoản người dùng

Sau khi đăng nhập vào máy chủ đám mây mới được triển khai lần đầu tiên, tự tạo tài khoản người dùng mới và cho phép kiểm soát truy cập sudo, là một số nhiệm vụ quan trọng để bắt đầu. Sudo, viết tắt của super superuser do, do cho phép bạn thực hiện các hành động yêu cầu tài khoản root. Điều này cho phép bạn tránh đăng nhập với quyền root hàng ngày, thay vào đó hãy sử dụng các đặc quyền sudo để thực thi các lệnh cấp gốc khi được yêu cầu.

Sử dụng sudo được coi là cách thực hành tốt để bảo mật và nó thường được cài đặt trong hầu hết các bản phân phối Linux. Để tận dụng tối đa những gì sudo cung cấp và để thiết lập quyền truy cập an toàn cho người dùng, hãy làm theo hướng dẫn của chúng tôi về Quản lý bảo mật tài khoản người dùng Linux.

Giám sát xác thực đăng nhập

Thực tế trong mạng Internet ngày nay là bảo mật máy chủ của bạn sẽ được kiểm tra bởi các bên độc hại, sớm hơn là sau này, hy vọng tìm thấy một lối vào được bảo mật kém. Nếu máy chủ của bạn đã chạy được một ngày, rất có thể bạn đã có những lần đăng nhập thất bại bắt nguồn từ các địa chỉ IP khác với địa chỉ của bạn. Phần lớn các bản phân phối Linux giữ nhật ký xác thực ngay từ lần đầu tiên chúng được khởi động. Các hệ thống khác nhau có thể lưu trữ nhật ký dưới các tên khác nhau, ví dụ với Ubuntu và các máy chủ dựa trên Debian khác, bạn có thể xem các nhật ký này bằng lệnh sau

Mã nguồn [Chọn]
cat /var/log/auth.log | grep 'ssh.*Invalid'
Trên CentOS và các biến thể Red Hat khác sử dụng thay thế

Mã nguồn [Chọn]
cat /var/log/secure | grep 'ssh.*Invalid'
Đầu ra sẽ liệt kê ngày và thời gian xảy ra khi các lần thử đăng nhập không hợp lệ, tài khoản người dùng nào được sử dụng và địa chỉ IP mà các kết nối đến từ đó. Ngay cả một số lượng lớn các thông tin đăng nhập thất bại cũng không có gì đáng sợ, mặc dù nó cho thấy mức độ phổ biến của loại hành vi này.

Ngược lại, hãy kiểm tra lần đăng nhập thành công của bạn bằng cách sử dụng lệnh bên dưới.

Mã nguồn [Chọn]
last
Điều này sẽ in một vài lần đăng nhập, ngày tháng mới nhất và địa chỉ IP mà các kết nối bắt nguồn từ đó. Nếu gần đây bạn đã sử dụng Bảng điều khiển web tại Bảng điều khiển UpCloud, bạn sẽ thấy những lần đăng nhập được đánh dấu bằng tty1, các kết nối điều khiển từ xa khác như SSH hiển thị pts / 0 thay vào đó, trong đó số là số nhận dạng kết nối khi bạn có nhiều phiên SSH mở cùng một lúc.

Mặc dù máy chủ đám mây của bạn vẫn được bảo mật nhờ các triển khai bảo mật mặc định của Linux, bạn không nên nghỉ ngơi dễ dàng và chỉ hy vọng nó vẫn như vậy. Có một số công cụ mạnh mẽ có sẵn để giảm các lần đăng nhập thất bại và bảo vệ khỏi việc ép buộc mật khẩu đơn giản.

Fail2ban là một khung công tác ngăn chặn xâm nhập như vậy, hoạt động cùng với hệ thống kiểm soát gói hoặc tường lửa được cài đặt trên máy chủ của bạn. Nó thường được sử dụng để chặn các nỗ lực kết nối sau một số lần thử thất bại nhất định, cho phép người dùng hết thời gian chờ trước khi họ được phép thử lại. Đọc hướng dẫn của chúng tôi để cài đặt Fail2ban trên máy chủ đám mây Linux với CentOS, Debian hoặc Ubuntu để tìm hiểu thêm.

Sử dụng khóa SSH thay vì mật khẩu

Mật khẩu là cách mặc định để xác thực với hầu hết mọi thứ và trong khi bảo mật đến mức chúng thường có thể được đoán bằng cách sử dụng danh sách từ điển vũ phu hoặc từ điển bằng cách thử nhiều biến thể của mật khẩu phổ biến. Mật khẩu an toàn và khó đoán có thể lại gây rắc rối khi nhớ và dễ bị nhầm lẫn.

Một tùy chọn khác là sử dụng các khóa SSH để xác thực bằng cách tạo một cặp mã khóa dài, thực tế không thể phá vỡ. Từ các khóa này, một khóa được gọi là khóa chung có thể được chuyển an toàn đến máy chủ của bạn, trong khi vẫn giữ khóa riêng trên máy tính của bạn một cách an toàn.

Khóa công khai chỉ có thể được sử dụng để xác định người dùng có phần riêng tư của cặp.

Khóa riêng phải được giữ an toàn, đảm bảo rằng chỉ bạn mới có quyền truy cập.

Hãy xem hướng dẫn của chúng tôi để sử dụng các khóa SSH để xác thực để tìm hiểu cách triển khai nó trên máy chủ đám mây Linux của bạn.

Thiết lập tường lửa

Các giải pháp phổ biến cho mọi bảo mật máy tính được nối mạng là đặt giới hạn cho phép kết nối được phép. Điều này có thể được thực hiện bằng cách sử dụng tường lửa, hệ thống bảo mật mạng, theo dõi và kiểm soát lưu lượng mạng đến và đi dựa trên các quy tắc bảo mật được xác định trước.

Bảng điều khiển UpCloud cung cấp một tường lửa dễ cấu hình hoạt động như một hệ thống phòng thủ đầu tiên để bảo mật máy chủ đám mây của bạn. Tường lửa UpCloud hoạt động cụ thể với máy chủ, nhưng bạn có thể sao chép cài đặt tường lửa giữa các máy chủ của mình. Bạn cũng có tùy chọn để định cấu hình tường lửa bằng một trong các thiết lập tiền tố có sẵn tại cài đặt quy tắc tường lửa. Các quy tắc tiền đề là một điểm khởi đầu đơn giản để tùy chỉnh thêm. Bạn có thể đọc thêm về Tường lửa UpCloud tại bài viết riêng của mình.

Một tùy chọn khác trên máy chủ Linux là sử dụng giải pháp tích hợp có tên iptables, được bao gồm trong hầu hết các bản phân phối. Trên CentOS và các biến thể Red Hat khác, iptables thường đi kèm với một số quy tắc được cấu hình sẵn, trong khi máy chủ Ubuntu và Debian không thực hiện bất kỳ hạn chế nào theo mặc định. Để tìm hiểu thêm về iptables, hãy xem hướng dẫn giới thiệu của chúng tôi để định cấu hình iptables trên máy chủ Linux của bạn là CentOS, Debian hoặc Ubuntu.

Cập nhật hệ thống của bạn

Đảm bảo thường xuyên kiểm tra các bản cập nhật trên máy chủ Linux của bạn. Các lỗ hổng mới được tìm thấy theo thời gian và thường được vá nhanh chóng. Đảm bảo rằng máy chủ đám mây của bạn có các bản sửa lỗi mới nhất để giữ cho hệ thống của bạn luôn cập nhật và bảo mật.

Người dùng máy chủ Ubuntu có thể làm điều này với những điều sau đây

Mã nguồn [Chọn]
sudo apt-get update && sudo apt-get upgrade
Đây là phương pháp đơn giản để cập nhật các gói đã được cài đặt trên máy chủ của bạn, nhưng nó không được phép thêm hoặc xóa các gói ngay cả khi chúng đã lỗi thời. Bạn cũng có thể sử dụng nâng cấp thông minh nâng cao thông minh nâng cao với

Mã nguồn [Chọn]
sudo apt-get update && sudo apt-get dist-upgrade
Lệnh kiểm tra các mối quan hệ gói và nhằm mục đích nâng cấp các gói quan trọng nhất với chi phí của các gói ít quan trọng hơn nếu cần thiết.

Debian cũng bao gồm apt-get nhưng khuyên bạn nên sử dụng aptitude. Nhập lệnh sau để nâng cấp hệ thống của bạn.

Mã nguồn [Chọn]
sudo aptitude update && sudo aptitude full-upgrade
Máy chủ CentOS có thể được cập nhật bằng một lệnh đơn giản hiển thị bên dưới

Mã nguồn [Chọn]
sudo yum update
Yum cũng bao gồm lệnh nâng cấp, nhưng nó cũng có thể loại bỏ một số gói mà nó cho là lỗi thời ngay cả khi bạn vẫn đang sử dụng chúng, vì vậy, hầu hết các lệnh cập nhật thường an toàn hơn.

Hãy nhớ cập nhật phần mềm khác bên ngoài trình quản lý gói, ví dụ: nếu bạn sử dụng phần mềm quản lý nội dung (CMS) như WordPress hoặc Joomla. Đảm bảo luôn cập nhật nền tảng của bạn và xóa mọi plugin không cần thiết, vì các ứng dụng web lỗi thời thường bị kẻ tấn công nhắm mục tiêu.

Giảm thiểu lỗ hổng

Một phần quan trọng của việc bảo mật máy chủ đám mây là không để mở bất kỳ dịch vụ mạng không cần thiết nào đang lắng nghe các kết nối đến. Một hệ thống Linux mới được triển khai thường chỉ có cổng SSH 22 mở. Bạn có thể kiểm tra máy chủ của riêng mình bằng cách quét các cổng mở bằng công cụ mạng có tên Nmap. Theo mặc định, chương trình được bao gồm trong nhiều bản phân phối, nhưng bạn có thể cài đặt nó đơn giản với một trong các lệnh sau trên Ubuntu và Debian hoặc CentOS tương ứng.

Mã nguồn [Chọn]
sudo apt-get install nmap

sudo yum install nmap

Với chương trình đã cài đặt, hãy thử chạy quét thử trên localhost bằng cách sử dụng

Mã nguồn [Chọn]
nmap -v -sT localhost
Bản in sẽ liệt kê các số cổng và dịch vụ được liên kết với chúng hiện đang mở cho các kết nối cục bộ. Tiếp theo, sử dụng cùng một lệnh, nhưng thay vào đó hãy quét IP công cộng của máy chủ của bạn. Điều này có thể được thực hiện từ bất kỳ máy tính nào có truy cập internet và cài đặt Nmap bằng cách sử dụng như sau

Mã nguồn [Chọn]
nmap -v -sT <public IP>
Nếu bạn có nhiều hơn chỉ SSH xuất hiện trong quá trình quét localhost, rất có thể chúng không hiển thị trong danh sách IP công khai. Một ví dụ về các dịch vụ như vậy là máy chủ email SMTP có trong Debian.

Bất kỳ dịch vụ nào khác mở cho mạng công cộng nên được chú ý. Đảm bảo bạn biết những dịch vụ bạn đang chạy và mức độ an toàn của các phương thức kết nối của chúng. Vô hiệu hóa bất kỳ dịch vụ nào bạn biết bạn không cần.

Quét phần mềm độc hại thường xuyên

Các hệ thống Linux nói chung ít có khả năng bị lây nhiễm bởi phần mềm độc hại vì sự giám sát nguồn mở và các cấu hình người dùng cuối đa dạng khiến việc tìm kiếm và khai thác các lỗ hổng trở nên khó khăn. Phòng thủ chính của bạn phải là nỗ lực phòng ngừa để ngăn chặn truy cập trái phép, nhưng nó có thể là biện pháp bảo mật duy nhất của bạn. Mặc dù bạn có thể không nghĩ bất cứ điều gì trên hệ thống của mình không bình thường, nhưng chương trình độc hại có thể chạy không được chú ý trong một thời gian dài trước khi gây ra lưu lượng truy cập đáng báo động hoặc làm hỏng hệ thống. Do đó, điều quan trọng là bạn quét máy chủ đám mây để tìm phần mềm độc hại thường xuyên, chỉ để đảm bảo rằng nó đã bị nhiễm.

Bên cạnh sự đa dạng của phần mềm độc hại, một loại phần mềm độc hại khác cần tìm là rootkit, đó là một tập hợp các chương trình được thiết kế để có quyền truy cập vào máy tính hoặc các bộ phận của HĐH thường bị hạn chế đồng thời che giấu sự hiện diện của chúng. Các rootkit thường được sử dụng bởi kẻ tấn công sau khi có quyền truy cập root trên hệ thống đích của chúng. Mặc dù rootkit cố gắng che dấu sự tồn tại của chúng, vẫn có những công cụ được tạo riêng để phát hiện các biến thể rootkit đã biết.

Đọc hướng dẫn bắt đầu của chúng tôi để quét phần mềm độc hại trên máy chủ Linux của bạn chạy CentOS, Debian hoặc Ubuntu.

Triển khai hệ thống phát hiện xâm nhập

Kiểm tra hệ thống của bạn bằng máy quét phần mềm độc hại và lượt thích vẫn chủ yếu là các tác vụ theo lịch trình được thực hiện mỗi giờ và sau đó. Điều này mang lại bất kỳ thời gian phần mềm độc hại nào giữa các lần quét để đi về doanh nghiệp của họ mà không được chú ý thậm chí có thể trong một khoảng thời gian dài. Giải pháp cho thời gian chết giữa các lần quét phần mềm độc hại là thiết lập một hệ thống phát hiện xâm nhập (IDS), liên tục để mắt đến máy chủ đám mây của bạn và lưu lượng truy cập mạng của nó.

Snort là một lựa chọn phổ biến cho hệ thống phát hiện xâm nhập dựa trên mạng (NIDS), nó là nguồn mở, được phát triển tích cực và trọng lượng nhẹ đủ để được cài đặt trên các máy chủ đám mây nhỏ nhất. Kiểm tra hướng dẫn của chúng tôi để cài đặt Snort trên CentOS, Debian hoặc Ubuntu.

Một loại hệ thống phát hiện xâm nhập khác là cơ sở máy chủ (HIDS), phân tích hành vi hệ thống và trạng thái cấu hình để phát hiện các vi phạm an ninh tiềm ẩn, thỏa hiệp, sửa đổi các tệp hệ thống quan trọng, rootkit thông thường và các quy trình độc hại.

OSSEC là một ví dụ điển hình về HIDS nguồn mở thực hiện phân tích nhật ký, kiểm tra tính toàn vẹn tệp, giám sát chính sách, phát hiện rootkit, cảnh báo thời gian thực và phản hồi tích cực. OSSEC có sẵn cho hầu hết các hệ điều hành bao gồm hầu hết các bản phân phối Linux phổ biến. Nó dự định được cấu hình trên cơ sở máy khách-máy khách, nơi các máy khách rất nhẹ được cài đặt trên các hệ thống quan trọng, sau đó gửi báo cáo của họ đến máy chủ OSSEC để phân tích. Điều này lý tưởng cho người dùng có nhiều máy chủ đám mây để giám sát bảo mật tập trung.