Cách cài đặt và bảo mật Redis trên Ubuntu 22.04

Redis là một kho lưu trữ khóa-giá trị trong bộ nhớ (in-memory key-value) được biết đến với tính linh hoạt, hiệu suất và hỗ trợ ngôn ngữ rộng rãi. Hướng dẫn này trình bày cách cài đặt, cấu hình và trên máy chủ .

Để hoàn thành hướng dẫn này, bạn sẽ cần quyền truy cập vào máy chủ Ubuntu 22.04 có người dùng không phải root có đặc quyền sudo và tường lửa được định cấu hình bằng ufw.

Hướng dẫn cài đặt Redis cho Ubuntu 22.04

Cách cài đặt ,cấu hình và bảo mật Redis trên Ubuntu 22.04

Bước 1 – Cài đặt và định cấu hình Redis

Chúng tôi sẽ sử dụng trình quản lý gói APT để cài đặt từ kho lưu trữ chính thức của Ubuntu. Trong bài viêt này, phiên bản có sẵn trong kho lưu trữ mặc định là 6.0.16.

Xem thêm: Redis vs Memcached WordPress: Chọn cái nào đây?

Bắt đầu bằng cách cập nhật bộ đệm ẩn gói apt cục bộ của bạn:

Sau đó cài đặt Redis bằng cách gõ:

Thao tác này sẽ tải xuống và cài đặt Redis và các phụ thuộc của nó. Sau đây, có một thay đổi cấu hình quan trọng cần thực hiện trong tệp , tệp này được tạo tự động trong quá trình cài đặt.

Mở tệp này bằng trình soạn thảo văn bản ưa thích của bạn:

Bên trong tệp, tìm chỉ thị được giám sát. Chỉ thị này cho phép bạn khai báo một hệ thống init để quản lý Redis như một dịch vụ, cung cấp cho bạn nhiều quyền kiểm soát hơn đối với hoạt động của nó. Chỉ thị được giám sát được đặt thành không theo mặc định. Vì bạn đang chạy Ubuntu, sử dụng hệ thống systemd init, hãy thay đổi điều này thành systemd:

Đó là thay đổi duy nhất bạn cần thực hiện đối với tệp cấu hình Redis tại thời điểm này, vì vậy hãy lưu và đóng tệp đó khi bạn hoàn tất. Nếu bạn đã sử dụng nano để chỉnh sửa tệp, hãy làm như vậy bằng cách nhấn CTRL+X, Y, sau đó ENTER.

Sau đó, khởi động lại dịch vụ Redis để phản ánh những thay đổi bạn đã thực hiện đối với tệp cấu hình:

Sau đó, bạn đã cài đặt và định cấu hình Redis và nó đang chạy trên máy của bạn. Tuy nhiên, trước khi bắt đầu sử dụng, trước tiên bạn nên kiểm tra xem Redis có đang hoạt động chính xác hay không.

Bước 2 – Kiểm tra Redis

Như với bất kỳ phần mềm mới cài đặt nào, bạn nên đảm bảo rằng Redis đang hoạt động như mong đợi trước khi thực hiện bất kỳ thay đổi nào đối với cấu hình của nó. Chúng ta sẽ xem xét một số cách để kiểm tra xem Redis có hoạt động chính xác không trong bước này.

Bắt đầu bằng cách kiểm tra xem dịch vụ Redis đang chạy:

Nếu nó đang chạy mà không có bất kỳ lỗi nào, lệnh này sẽ tạo ra kết quả tương tự như sau:

Đầu ra này cho biết Redis đang chạy và đã được kích hoạt, có nghĩa là nó được thiết lập để khởi động mỗi khi máy chủ khởi động.

Lưu ý: Cài đặt này phù hợp với nhiều trường hợp

Để kiểm tra xem Redis có hoạt động chính xác hay không, hãy kết nối với máy chủ bằng redis-cli, ứng dụng khách dòng lệnh của Redis:

Trong lời nhắc sau đó, hãy kiểm tra kết nối bằng lệnh ping:

Đầu ra này xác nhận rằng kết nối máy chủ vẫn còn tồn tại. Tiếp theo, hãy kiểm tra xem bạn có thể đặt khóa bằng cách chạy:

Lấy giá trị bằng cách gõ:

Giả sử mọi thứ đang hoạt động, bạn sẽ có thể truy xuất giá trị bạn đã lưu trữ:

Sau khi xác nhận rằng bạn có thể tìm nạp giá trị, hãy thoát khỏi lời nhắc Redis để quay lại trình bao:

Là bài kiểm tra cuối cùng, chúng tôi sẽ kiểm tra xem Redis có thể duy trì dữ liệu ngay cả khi nó đã bị dừng hoặc khởi động lại hay không. Để thực hiện việc này, trước tiên hãy khởi động lại phiên bản Redis:

Sau đó kết nối lại với máy khách dòng lệnh:

Và xác nhận rằng giá trị thử nghiệm của bạn vẫn có sẵn

Giá trị của khóa của bạn vẫn có thể truy cập được:

Thoát ra khỏi shell một lần nữa khi bạn hoàn thành:

Cùng với đó, cài đặt Redis của bạn đã hoạt động hoàn toàn và sẵn sàng để bạn sử dụng. Tuy nhiên, một số cài đặt cấu hình mặc định của nó không an toàn và tạo cơ hội cho các tác nhân độc hại tấn công và giành quyền truy cập vào máy chủ của bạn và dữ liệu của nó. Các bước còn lại trong hướng dẫn này bao gồm các phương pháp giảm thiểu các lỗ hổng bảo mật này, theo quy định của trang web chính thức của Redis. Mặc dù các bước này là tùy chọn và Redis sẽ vẫn hoạt động nếu bạn chọn không làm theo chúng, nhưng bạn nên hoàn thành chúng để tăng cường bảo mật cho hệ thống của mình.

Bước 3 – Liên kết với localhost

Theo mặc định, Redis chỉ có thể truy cập được từ localhost. Tuy nhiên, nếu bạn đã cài đặt và định cấu hình Redis bằng cách làm theo hướng dẫn khác với hướng dẫn này, bạn có thể đã cập nhật tệp cấu hình để cho phép kết nối từ mọi nơi. Điều này không an toàn như ràng buộc với localhost.

Để sửa lỗi này, hãy mở tệp cấu hình Redis để chỉnh sửa:

Xác định vị trí dòng này và đảm bảo nó không có chú thích (xóa # nếu nó tồn tại):

Lưu và đóng tệp khi hoàn tất (nhấn CTRL+X, Y, sau đó ENTER).

Sau đó, khởi động lại dịch vụ để đảm bảo rằng systemd đọc các thay đổi của bạn:

Để kiểm tra xem thay đổi này đã có hiệu lực chưa, hãy chạy lệnh netstat sau:

Kết quả được trả về như sau:

Lưu ý: Lệnh netstat có thể không có sẵn trên hệ thống của bạn theo mặc định. Nếu đúng như vậy, bạn có thể cài đặt nó (cùng với một số công cụ mạng tiện dụng khác) bằng lệnh sau:

Kết quả này cho thấy rằng chương trình redis-server được liên kết với localhost (127.0.0.1), phản ánh thay đổi bạn vừa thực hiện đối với tệp cấu hình. Nếu có một địa chỉ IP khác trong cột đó (ví dụ: 0.0.0.0), thì bạn nên kiểm tra lại xem bạn đã bỏ ghi chú dòng chính xác chưa và khởi động lại dịch vụ Redis.

Bây giờ cài đặt Redis của bạn chỉ nghe trên localhost, sẽ khó khăn hơn cho các tác nhân độc hại đưa ra yêu cầu hoặc giành quyền truy cập vào máy chủ của bạn. Tuy nhiên, Redis hiện không được thiết lập để yêu cầu người dùng xác thực bản thân trước khi thực hiện các thay đổi đối với cấu hình của nó hoặc dữ liệu mà nó nắm giữ. Để khắc phục điều này, Redis cho phép bạn yêu cầu người dùng xác thực bằng mật khẩu trước khi thực hiện thay đổi thông qua ứng dụng khách Redis (redis-cli).

Bước 4 – Định cấu hình mật khẩu Redis
Định cấu hình mật khẩu Redis cho phép một trong hai tính năng bảo mật tích hợp của nó – lệnh auth, yêu cầu khách hàng xác thực để truy cập cơ sở dữ liệu. Mật khẩu được định cấu hình trực tiếp trong tệp cấu hình của Redis, /etc/redis/redis.conf, vì vậy hãy mở lại tệp đó bằng trình chỉnh sửa ưa thích của bạn:

Cuộn đến phần SECURITY và tìm một chỉ thị được nhận xét có nội dung:

Bỏ ghi chú bằng cách xóa dấu # và thay đổi mật khẩu thành mật khẩu an toàn.
Lưu ý: Phía trên chỉ thị requestpass trong tệp redis.conf, có một cảnh báo đã nhận xét:
Do đó, điều quan trọng là bạn phải chỉ định một giá trị rất mạnh và rất dài làm mật khẩu của mình. Thay vì tự tạo mật khẩu, bạn có thể sử dụng lệnh openssl để tạo một mật khẩu ngẫu nhiên, như trong ví dụ sau. Bằng cách nối đầu ra của lệnh đầu tiên với lệnh openssl thứ hai, như được hiển thị ở đây, nó sẽ loại bỏ mọi ngắt dòng do lệnh đầu tiên tạo ra:
Lệnh này sẽ trả về kết quả đầu ra như sau:
Sau khi sao chép và dán đầu ra của lệnh đó làm giá trị mới cho requestpass, nó sẽ đọc:

Sau khi đặt mật khẩu, hãy lưu và đóng tệp. Sau đó khởi động lại Redis:

Để kiểm tra xem mật khẩu có hoạt động hay không, hãy mở ứng dụng Redis:

Sau đây là một chuỗi các lệnh được sử dụng để kiểm tra xem mật khẩu Redis có hoạt động hay không. Lệnh đầu tiên cố gắng đặt khóa thành một giá trị trước khi xác thực:

Điều đó sẽ không hiệu quả vì bạn không xác thực, vì vậy Redis trả về lỗi:

Lệnh tiếp theo xác thực bằng mật khẩu được chỉ định trong tệp cấu hình Redis:

Redis acknowledges:

Sau đó, chạy lại lệnh trước đó sẽ thành công:

get key1 truy vấn Redis cho giá trị của khóa mới.

Sau khi xác nhận rằng bạn có thể chạy các lệnh trong ứng dụng Redis sau khi xác thực, bạn có thể thoát redis-cli:

Tiếp theo, chúng ta sẽ xem xét đổi tên các lệnh Redis, nếu nhập nhầm hoặc do tác nhân độc hại nhập vào, có thể gây ảnh hưởng nghiêm trọng đến dữ liệu của bạn.

Bước 5 – Đổi tên các lệnh nguy hiểm

Tính năng bảo mật khác được tích hợp trong Redis liên quan đến việc đổi tên hoặc vô hiệu hóa hoàn toàn một số lệnh được coi là nguy hiểm.

Khi được điều hành bởi người dùng trái phép, các lệnh như vậy có thể được sử dụng để cấu hình lại, phá hủy hoặc xóa sạch dữ liệu của bạn. Giống như mật khẩu xác thực, các lệnh đổi tên hoặc tắt được định cấu hình trong cùng một phần SECURITY của tệp /etc/redis/redis.conf.

Một số lệnh được coi là nguy hiểm bao gồm: FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM,RENAMEDEBUG. Đây không phải là danh sách toàn diện, nhưng đổi tên hoặc tắt tất cả các lệnh trong danh sách đó là một điểm khởi đầu tốt để tăng cường bảo mật cho máy chủ Redis của bạn.

Việc bạn nên tắt hay đổi tên lệnh tùy thuộc vào nhu cầu cụ thể của bạn hoặc nhu cầu của trang web của bạn. Nếu bạn biết rằng bạn sẽ không bao giờ sử dụng một lệnh có thể bị lạm dụng, thì bạn có thể vô hiệu hóa nó. Nếu không, bạn nên đổi tên nó.

Để đổi tên hoặc tắt các lệnh Redis, hãy mở tệp cấu hình một lần nữa:

Cảnh báo: Các bước sau đây chỉ ra cách tắt và đổi tên lệnh là ví dụ. Bạn chỉ nên chọn tắt hoặc đổi tên các lệnh phù hợp với bạn. Bạn có thể xem lại danh sách đầy đủ các lệnh cho chính mình và xác định cách chúng có thể bị sử dụng sai tại redis.io/commands.

Để tắt một lệnh, hãy đổi tên nó thành một chuỗi trống (được biểu thị bằng một cặp dấu ngoặc kép không có ký tự nào giữa chúng), như được hiển thị bên dưới:

Để đổi tên một lệnh, hãy đặt cho nó một tên khác như thể hiện trong các ví dụ bên dưới. Các lệnh được đổi tên sẽ khó đoán đối với người khác, nhưng dễ nhớ đối với bạn:

Lưu các thay đổi và đóng file.

Sau khi đổi tên một lệnh, hãy áp dụng thay đổi bằng cách khởi động lại Redis:

Để kiểm tra lệnh mới, hãy nhập dòng lệnh Redis:

Sau đó, xác thực:

Giả sử rằng bạn đã đổi tên lệnh CONFIG thành ASC12_CONFIG, như trong ví dụ trước. Đầu tiên, hãy thử sử dụng lệnh CONFIG ban đầu. Nó sẽ không thành công, vì bạn đã đổi tên nó:

Tuy nhiên, việc gọi lệnh đã đổi tên sẽ thành công. Nó không phân biệt chữ hoa chữ thường:

Cuối cùng, bạn có thể thoát khỏi redis-cli:

Lưu ý rằng nếu bạn đang sử dụng dòng lệnh Redis và sau đó khởi động lại Redis, bạn sẽ cần xác thực lại. Nếu không, bạn sẽ gặp lỗi này nếu nhập lệnh:

Cảnh báo: Về cách đổi tên lệnh, có một cảnh báo ở cuối phần SECURITY trong /etc/redis/redis.conf có nội dung:

Xem thêm Cách xóa bộ nhớ cache của Redis

Kết luận

Trong hướng dẫn này, bạn đã cài đặt và định cấu hình Redis, xác thực rằng cài đặt Redis của bạn đang hoạt động chính xác và sử dụng các tính năng bảo mật tích hợp của nó để làm cho nó ít bị tấn công hơn từ các tác nhân độc hại.

Hãy nhớ rằng khi ai đó đã đăng nhập vào máy chủ của bạn, bạn rất dễ dàng vượt qua các tính năng bảo mật dành riêng cho Redis mà chúng tôi đã áp dụng. Do đó, tính năng bảo mật quan trọng nhất trên máy chủ Redis của bạn là tường lửa (bạn đã định cấu hình tường lửa nếu bạn làm theo hướng dẫn Thiết lập máy chủ ban đầu tiên quyết), vì điều này khiến các tác nhân độc hại cực kỳ khó có thể nhảy qua hàng rào đó.

Link bài gốc: digitalocean

Bạn nghĩ sao về bài viết này?
+1
0
+1
0
+1
0
+1
0
+1
0


Lưu ý:
→ Vui lòng bình luận bằng tiếng Việt có dấu.
→ Hãy dùng tên và email thật của bạn khi comment.
→ Không sử dụng keyword trong ô Name.
→ Nếu có ý định Spam link thì hãy quên đi nhé.
→ Tất cả bình luận đều được kiểm duyệt vì thế hãy cẩn thận trước khi comment.
Xin cám ơn!

Add Comment

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.