Mục lục

Không có mục lục
Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly

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

Ngày đăng: 30 tháng 3 năm 2023

Ubuntu

Giới thiệu

Redis là kho lưu trữ key-value trong bộ nhớ, nổi tiếng về tính linh hoạt, hiệu suất và hỗ trợ nhiều ngôn ngữ. Hướng dẫn nhanh này trình bày cách cài đặt, thiết lập cấu hình và bảo mật Redis trên máy chủ Ubuntu 20.04.

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

Để 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 20.04 có non-root user với đặc quyền sudo và tường lửa được thiết lập cấu hình bằng ufw. Bạn có thể thiết lập điều này bằng cách làm theo hướng dẫn Thiết lập Máy chủ Ban đầu cho Ubuntu 20.04 của chúng tôi.

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

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

  1. sudo apt update

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

  1. sudo apt install redis-server

Tiếp theo, mở tệp cấu hình Redis bằng trình soạn thảo văn bản ưa thích của bạn:

  1. sudo nano /etc/redis/redis.conf

Bên trong tệp, tìm chỉ thị supervised cho phép bạn khai báo một hệ thống init để quản lý Redis dưới dạng dịch vụ. Vì bạn đang chạy Ubuntu, sử dụng hệ thống init systemd, hãy thay đổi giá trị của nó từ no thành systemd:

/etc/redis/redis.conf
. . .

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
#       They do not enable continuous liveness pings back to your supervisor.
supervised systemd

. . .

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 thực hiện việc này bằng cách nhấn CTRL + X, Y, rồi 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:

  1. sudo systemctl restart redis.service

Để 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:

  1. redis-cli

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

  1. ping
Output
PONG

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

  1. set test "It's working!"
Output
OK

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

  1. get test

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

Output
"It's working!"

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

  1. exit

Bước 2 — Thiết lập cấu hình Mật khẩu Redis

Bạn có thể thiết lập cấu hình mật khẩu Redis trực tiếp trong tệp cấu hình của Redis, /etc/redis/redis.conf. Mở lại tệp đó bằng trình chỉnh sửa ưa thích của bạn:

  1. sudo nano /etc/redis/redis.conf

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

/etc/redis/redis.conf
. . .
# requirepass foobared
. . .

Bỏ ghi chú bằng cách xóa dấu # và thay đổi foobared thành mật khẩu an toàn:

/etc/redis/redis.conf
. . .
requirepass your_redis_password
. . .

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

  1. sudo systemctl restart redis.service

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

  1. redis-cli

Phần sau đây hiển thị 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 giá trị trước khi xác thực:

  1. set key1 10

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

Output
(error) NOAUTH Authentication required.

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:

  1. auth your_redis_password

Redis thừa nhận:

Output
OK

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

  1. set key1 10
Output
OK

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

  1. get key1
Output
"10"

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

  1. quit

Bước 3 — Đổ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. 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. Bằng cách vô hiệu hóa hoặc đổi tên các lệnh này và các lệnh khác, bạn sẽ gây khó khăn hơn cho những người dùng trái phép trong việc thiết lập cấu hình lại, hủy hoặc xóa sạch dữ liệu của bạn.

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

  1. sudo nano /etc/redis/redis.conf

Cảnh báo: Các bước sau đây cho biết cách tắt và đổi tên các lệnh là các 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 mình. Bạn có thể tự mình xem lại danh sách đầy đủ các lệnh và xác định xem chúng có thể bị lạm dụng như thế nào tại redis.io/commands.

Để vô hiệu hóa một lệnh, chỉ cần đổ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ư minh họa bên dưới:

/etc/redis/redis.conf
. . .
# It is also possible to completely kill a command by renaming it into
# an empty string:
#
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
. . .

Để đổi tên một lệnh, hãy đặt cho nó một tên khác như minh họa 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:

/etc/redis/redis.conf
. . .
# rename-command CONFIG ""
rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG
. . .

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

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

  1. sudo systemctl restart redis.service

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

  1. redis-cli

Sau đó xác thực:

  1. auth your_redis_password
Output
OK

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

  1. config get requirepass
Output
(error) ERR unknown command `config`, with args beginning with:

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

  1. asc12_config get requirepass
Output
1) "requirepass" 2) "your_redis_password"

Kết luận

Trong hướng dẫn nhanh này, bạn đã cài đặt và thiết lập 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 bởi các tác nhân độc hại.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời