Redis Made Easy: Hướng dẫn từng bước cài đặt Redis trên AlmaLinux 9

theanh

Administrator
Nhân viên
Redis là kho lưu trữ dữ liệu khóa-giá trị trong bộ nhớ mã nguồn mở và phổ biến. Nó hỗ trợ nhiều cấu trúc dữ liệu khác nhau như Hash, List, Set, String và nhiều cấu trúc khác nữa. Redis được thiết kế để chỉ chạy trong môi trường đáng tin cậy, nó có thể được sử dụng làm cơ sở dữ liệu, bộ nhớ đệm và môi giới tin nhắn. Redis được biết đến rộng rãi vì khả năng hỗ trợ rộng rãi, hiệu suất cao, tính khả dụng cao và tính linh hoạt.

Bạn có thể cài đặt Redis dưới dạng độc lập cho triển khai nhỏ. Đối với triển khai lớn, họ cung cấp các thành phần bổ sung như Redis Sentinel cho tính khả dụng cao và Redis Cluster để phân vùng dữ liệu trên nhiều máy chủ nút Redis.

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt và cấu hình Redis trên máy chủ AlmaLinux 9. Ngoài ra, chúng tôi cũng sẽ chỉ cho bạn cách bảo mật Redis thông qua Redis ACL (Danh sách kiểm soát truy cập) và Firewalld.

Điều kiện tiên quyết​

Để hoàn thành hướng dẫn này, bạn phải có những điều sau:
  • Máy chủ AlmaLinux 9 - Ví dụ này sử dụng máy chủ AlmaLinux với tên máy chủ 'alma-linux' và địa chỉ IP '192.168.5.21'.
  • Người dùng không phải root có quyền quản trị viên sudo/root.
  • Tường lửa đã được cấu hình, thiết lập và chạy.
Bây giờ, chúng ta hãy cùng tìm hiểu.

Cài đặt Redis​

Redis là kho lưu trữ dữ liệu mã nguồn mở, hiệu suất cao có thể được sử dụng làm cơ sở dữ liệu, bộ nhớ đệm, trình môi giới tin nhắn và công cụ phát trực tuyến. Redis có sẵn trên hầu hết các bản phân phối Linux, bao gồm cả AlmaLinux. Có thể cài đặt thông qua kho lưu trữ phân phối mặc định.

Trước khi cài đặt Redis, hãy chạy lệnh sau để xây dựng lại bộ đệm gói và lấy phiên bản thông tin gói mới nhất.
Mã:
sudo dnf makecache

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2290%22%3E%3C/svg%3E


Bây giờ, hãy chạy lệnh dnf bên dưới để cài đặt Redis. Nhập y khi được nhắc, sau đó nhấn ENTER để tiếp tục.
Mã:
sudo dnf install redis

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22167%22%3E%3C/svg%3E


Khi Redis được cài đặt, hãy chạy các lệnh systemctl sau để khởi động và kích hoạt Redis dịch vụ.
Mã:
sudo systemctl start redis
sudo systemctl enable redis

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2293%22%3E%3C/svg%3E


Cuối cùng, hãy xác minh trạng thái dịch vụ Redis bằng lệnh bên dưới.
Mã:
sudo systemctl is-enabled redis
sudo systemctl status redis
Đầu ra sau đây xác nhận rằng Redis đang chạy và được bật, điều này có nghĩa là nó sẽ tự động chạy khi hệ thống khởi động.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22290%22%3E%3C/svg%3E

Bảo mật Redis bằng Firewalld​

Trong phần, bạn sẽ thiết lập firewalld để bảo mật cài đặt Redis. Và cách tốt nhất để đạt được điều này là tạo vùng trên firewalld và cho phép các mạng/mạng con cụ thể vào dịch vụ.

Chạy lệnh sau để tạo vùng firewalld mới có tên là 'svcs', sau đó thêm giao diện mạng nội bộ vào đó. Trong ví dụ này, Redis sẽ được chạy trên một địa chỉ IP nội bộ dưới giao diện 'enp0s8', bạn phải thêm giao diện của mình vào vùng 'svcs'.
Mã:
sudo firewall-cmd --new-zone=svcs --permanent
sudo firewall-cmd --zone=svcs --add-interface=enp0s8 --permanent
Bây giờ, hãy chạy lệnh sau để cho phép mạng '192.168.5.1/24' truy cập các cổng trên vùng 'svcs'.
Mã:
sudo firewall-cmd --zone=svcs --add-source=192.168.5.1/24
Sau đó, thêm cổng Redis '6379/tcp' vào vùng 'svcs', sau đó áp dụng các thay đổi cho tường lửa.
Mã:
sudo firewall-cmd --zone=svcs --add-port=6379/tcp
sudo firewall-cmd --runtime-to-permanent

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22295%22%3E%3C/svg%3E


Bây giờ, hãy tải lại firewalld bằng lệnh sau để đảm bảo rằng những thay đổi mới được áp dụng cho firewalld.
Mã:
sudo firewall-cmd --reload
Cuối cùng, hãy chạy lệnh sau để kiểm tra danh sách các vùng đang hoạt động trên firewalld. Và bạn sẽ thấy vùng 'svcs' đang hoạt động.
Mã:
sudo firewall-cmd --get-active-zones
Bây giờ bạn có thể xác minh danh sách các quy tắc có sẵn trong vùng 'svcs'. Khi thành công, bạn sẽ thấy cổng Redis '6379/tcp' trên phần Cổng và mạng con '192.168.5.1/24' trên Nguồn.
Mã:
sudo firewall-cmd --list-all --zone=svcs

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22642%22%20height=%22370%22%3E%3C/svg%3E

Cấu hình Redis​

Trong phần này, bạn sẽ cấu hình cài đặt Redis bằng cách sửa đổi cấu hình Redis mặc định '/etc/redis/redis.conf'.

Mở tệp cấu hình Redis '/etc/redis/redis.conf' bằng lệnh nano editor bên dưới.
Mã:
sudo nano /etc/redis/redis.conf
Thay đổi giá trị trên tham số 'liên kết' bằng địa chỉ IP nội bộ của máy chủ. Trong ví dụ của mình, Redis sẽ chạy trên địa chỉ IP cục bộ '192.168.5.21'.
Mã:
bind 192.168.5.21

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22697%22%20height=%22118%22%3E%3C/svg%3E


Bây giờ, hãy tắt 'protected-mode' bằng cách thay đổi giá trị của tham số thành 'no'. Để cho phép kết nối từ xa từ ứng dụng của bạn đến máy chủ Redis, bạn phải tắt 'protected-mode'.
Mã:
protected-mode no

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22703%22%20height=%22130%22%3E%3C/svg%3E


Trên AlmaLinux, trình quản lý dịch vụ mặc định là 'systemd'. Bỏ ghi chú tham số 'supervised' và thay đổi giá trị mặc định thành 'systemd' để kích hoạt tích hợp Redis với systemd.
Mã:
supervised systemd

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22738%22%20height=%22359%22%3E%3C/svg%3E


Cuối cùng, bỏ ghi chú Tham số 'aclfile' để bật ACL (Danh sách kiểm soát truy cập) của Redis qua tệp. Kể từ Redis v6, sử dụng ACL là cách được khuyến nghị để bảo mật Redis và Redis hỗ trợ các phương pháp khác nhau để sử dụng ACL, bạn có thể tạo ACL qua shell Redis hoặc tệp ACL đã xác định. Ví dụ này sẽ sử dụng ACL qua tệp.
Mã:
aclfile /etc/redis/users.acl

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22717%22%20height=%22246%22%3E%3C/svg%3E


Lưu và đóng tệp khi hoàn tất.

Bây giờ, hãy chạy lệnh sau để tạo tệp ACL '/etc/redis/users.acl'.
Mã:
touch /etc/redis/users.acl
Sau đó, chạy lệnh bên dưới để khởi động lại dịch vụ Redis và áp dụng các thay đổi bạn đã thực hiện.
Mã:
sudo systemctl restart redis
Với lệnh này, redis sẽ hoạt động với các cấu hình mới. Bước tiếp theo bạn sẽ thực hiện là xác minh cấu hình Redis của bạn thông qua Redis CLI.

Kết nối với máy chủ Redis bằng lệnh 'redis-cli' bên dưới. Trong ví dụ này, bạn sẽ chỉ định địa chỉ IP cho máy chủ Redis.
Mã:
redis-cli -h 192.168.5.21
Sau khi đăng nhập, hãy chạy lệnh sau để đảm bảo kết nối thành công. Bạn sẽ thấy đầu ra 'test redis' khi kết nối thành công.
Mã:
PING "test redis"

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22465%22%20height=%22135%22%3E%3C/svg%3E


Tiếp theo, chạy các truy vấn sau để lấy cấu hình Redis hiện tại. Trong ví dụ này, bạn sẽ kiểm tra các thiết lập 'bind', 'supervised' và protected-mode'.
Mã:
CONFIG GET bind
CONFIG GET supervised
CONFIG GET protected-mode
Khi thành công, cấu hình của bạn sẽ khớp với các thiết lập bạn đã thực hiện trước đó.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22450%22%20height=%22282%22%3E%3C/svg%3E


Cuối cùng, chạy truy vấn ACL sau đây để lấy danh sách các ACL khả dụng trên Redis.
Mã:
ACL LIST
Bạn sẽ thấy đầu ra như thế này - Cài đặt Redis mặc định đi kèm với người dùng ACL 'mặc định', xác thực là 'nopass' hoặc đăng nhập mà không cần mật khẩu và quyền '+@all', cho phép người dùng 'mặc định' thực hiện bất kỳ truy vấn Redis nào.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22412%22%20height=%22118%22%3E%3C/svg%3E


Lúc này, bạn đã hoàn tất cấu hình cơ bản của Redis. Ở bước tiếp theo, bạn sẽ tìm hiểu sâu hơn về cấu hình Redis ACL (Danh sách kiểm soát truy cập) để bảo mật cài đặt Redis.

Bảo mật Redis bằng ACL (Danh sách kiểm soát truy cập)​

Kể từ Redis 6.x, cách tốt nhất để bảo mật Redis là triển khai ACL (Danh sách kiểm soát truy cập). Điều này cho phép bạn thiết lập người dùng và quyền trên máy chủ Redis và có thể vô hiệu hóa các tham số 'requirepass' và 'rename-command' trên phiên bản Redis cũ.

Bạn có thể thiết lập ACL trên Redis bằng hai phương pháp khác nhau:
  • Thiết lập ACL thông qua lệnh ACL\
  • Thiết lập ACL thông qua tệp ACL bên ngoài
Với máy chủ Redis mà bạn đã định cấu hình, bạn sẽ thiết lập ACL Redis thông qua tệp ACL bên ngoài.

Đầu tiên, hãy mở tệp ACL '/etc/redis/users.acl' bằng trình chỉnh sửa nano sau lệnh.
Mã:
sudo nano /etc/redis/users.acl
Chèn các cấu hình sau để tạo hai người dùng cho Redis.
Mã:
user alice on -DEBUG +@all ~* >AliceP4ssw0rd
user bob on +@all -@dangerous ~* >BobP4ssw0rd
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22477%22%20height=%22104%22%3E%3C/svg%3E


Với cấu hình này, bạn sẽ tạo hai người dùng:
  • Người dùng alice có mật khẩu 'AliceP4ssw0rd' và được phép thực hiện tất cả các truy vấn '+@all' ngoại trừ DEBUG '-DEBUG' và cũng được phép chạy các truy vấn đối với tất cả các giá trị khóa có sẵn '~*' có sẵn.
  • Người dùng bob có mật khẩu 'BobP4ssw0rd' và cho phép người dùng bob thực hiện tất cả các truy vấn '+@all' ngoại trừ '-@dangerous'. Danh mục lệnh '-@dangerous' bao gồm FLUSHALL, MIGRATE, RESTORE, SORT, KEYS, CLIENT, DEBUG, INFO, CONFIG, SAVE, REPLICAOF và nhiều lệnh khác nữa. Ngoài ra, người dùng này được phép thực hiện truy vấn tới tất cả các giá trị khóa khả dụng trên máy chủ Redis.
Lấy danh sách đầy đủ các danh mục lệnh trên Redis.

Bây giờ, hãy chạy lệnh systemctl sau để khởi động lại dịch vụ Redis và áp dụng các thay đổi.
Mã:
sudo systemctl restart redis
Sau khi Redis khởi động lại, hãy kết nối với máy chủ Redis bằng lệnh redis-cli sau bên dưới.
Mã:
redis-cli -h 192.168.5.21
Sau khi đăng nhập, hãy chạy truy vấn ACL sau để kiểm tra danh sách người dùng khả dụng trên Redis.
Mã:
ACL LIST
Tại thời điểm này, bạn sẽ thấy ba người dùng alice, bob và default.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22147%22%3E%3C/svg%3E


Bạn cũng có thể xác minh người dùng chi tiết trên Redis bằng truy vấn sau.
Mã:
ACL GETUSER alice
ACL GETUSER bob
Bạn sẽ thấy rằng người dùng alice được phép thực thi tất cả các lệnh khả dụng trên Redis, với nhóm lệnh '+@all'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22702%22%20height=%22346%22%3E%3C/svg%3E


Đối với người dùng bob, bạn có thể thấy lệnh được phép '+@all', nhưng nhóm lệnh 'nguy hiểm' cũng bị vô hiệu hóa.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22697%22%20height=%22306%22%3E%3C/svg%3E

Vô hiệu hóa Người dùng Redis mặc định​

Khi người dùng mới alice và bob được tạo, bạn phải vô hiệu hóa người dùng 'mặc định' bằng truy vấn sau.
Mã:
ACL SETUSER default OFF
Sau đó, kiểm tra lại danh sách người dùng khả dụng trên Redis bằng lệnh bên dưới.
Mã:
ACL LIST
Bạn nên mong đợi người dùng 'mặc định' với trạng thái tắt hoặc vô hiệu hóa như thế này:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22152%22%3E%3C/svg%3E


Nhấn Ctrl+d để thoát khỏi shell Redis.

Sau đó, đăng nhập lại vào Redis bằng lệnh sau.
Mã:
redis-cli -h 192.168.5.21
Sau đó, nhập truy vấn PING sau để xác minh kết nối hiện tại.
Mã:
PING
Khi người dùng Redis "mặc định" bị vô hiệu hóa, bạn sẽ nhận được lỗi như sau - Bạn cần phải là người dùng đã xác thực để chạy truy vấn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22159%22%3E%3C/svg%3E

Xác minh người dùng alice​

Tiếp theo, bạn sẽ xác minh người dùng Redis mới là alice và bob mà bạn đã tạo.

Chạy lệnh sau để xác thực với tư cách là người dùng 'alice'. Nếu thành công, bạn sẽ nhận được kết quả đầu ra là 'OK'.
Mã:
AUTH alice AliceP4ssw0rd
Bây giờ hãy chạy các truy vấn sau để đảm bảo rằng bạn đã xác thực với Redis thông qua người dùng alice.
Mã:
PING
ACL WHOAMI
Bạn sẽ thấy thông báo PONG và được xác thực là người dùng alice.

Bây giờ, hãy chạy các truy vấn sau để đảm bảo rằng người dùng alice có thể thực hiện tất cả các truy vấn khả dụng, bao gồm cả quản lý Redis liên quan.
Mã:
CONFIG GET bind
CONFIG GET supervised
Khi thành công, bạn sẽ nhận được đầu ra của cấu hình Redis hiện tại cho tham số bind và supervised.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22426%22%20height=%22325%22%3E%3C/svg%3E

Xác minh Người dùng bob​

Chạy truy vấn sau để đăng nhập và xác thực với tư cách là người dùng bob.
Mã:
AUTH bob BobP4ssw0rd
Sau khi xác thực, hãy chạy truy vấn PING bên dưới. Nếu thành công, bạn sẽ nhận được thông báo PONG.
Mã:
PING
Tiếp theo, trong tệp Redis ACL, người dùng bob có danh mục lệnh '-@dangerous', lệnh này ngăn người dùng này thực thi một số lệnh nguy hiểm như FLUSHALL, CONFIG và nhiều lệnh khác trên máy chủ Redis.

Nếu bạn chạy các truy vấn sau với tư cách là người dùng bob, bạn sẽ nhận được kết quả đầu ra như 'NOPERM', nghĩa là người dùng bob không có quyền thực thi lệnh.
Mã:
FLUSHALL
CONFIG GET bind
SAVE

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22269%22%3E%3C/svg%3E


Với điều này, bây giờ bạn đã bảo mật thành công Redis với ACL (Danh sách kiểm soát truy cập) thông qua tệp ACL.

Kết luận​

Xin chúc mừng! Bây giờ bạn đã cài đặt thành công Redis trên AlmaLinux 9. Bạn cũng đã học cách thiết lập ACL (Access Control Lists) thông qua tệp ACL để bảo mật cài đặt Redis. Ngoài ra, bạn cũng đã bảo mật Redis bằng firewalld bằng cách tạo một vùng cụ thể cho dịch vụ Redis.
 
Back
Bên trên