Thứ sáu, 01/05/2020 | 00:00 GMT+7

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

Redis là một repository key-value trong bộ nhớ đượ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 bắt đầu nhanh này trình bày cách cài đặt, cấu hình và bảo mật Redis trên server Ubuntu 20.04.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần quyền truy cập vào server Ubuntu 20.04 có user không phải root có quyền sudo và firewall được cấu hình bằng ufw . Bạn có thể cài đặt điều này theo hướng dẫn Cài đặt Server Ban đầu của ta cho Ubuntu 20.04 .

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

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

  • sudo apt update

Sau đó cài đặt Redis bằng lệnh :

  • sudo apt install redis-server

Tiếp theo, mở file cấu hình Redis bằng editor bạn muốn :

  • sudo nano /etc/redis/redis.conf

Bên trong file , hãy tìm chỉ thị được supervised cho phép bạn khai báo hệ thống init để quản lý Redis như một dịch vụ. Vì bạn đang chạy Ubuntu, sử dụng hệ thống systemd init, 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 file khi bạn hoàn tất. Nếu bạn đã sử dụng nano để chỉnh sửa file , 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 để áp dụng thay đổi bạn đã thực hiện đối với file cấu hình:

  • 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 server bằng redis-cli , ứng dụng dòng lệnh của Redis:

  • redis-cli

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

  • ping
Output
PONG

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

  • set test "It's working!"
Output
OK

Truy xuất giá trị bằng lệnh :

  • get test

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

Output
"It's working!"

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

  • exit

Bước 2 - Cấu hình password Redis

Bạn có thể cấu hình password Redis trực tiếp trong file cấu hình của Redis, /etc/redis/redis.conf . Mở lại file đó bằng editor bạn muốn :

  • sudo nano /etc/redis/redis.conf

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

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

Bỏ ghi chú nó bằng cách loại bỏ các # , và thay đổi foobared đến một password an toàn:

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

Sau khi đặt password , hãy lưu file , sau đó khởi động lại Redis:

  • sudo systemctl restart redis.service

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

  • redis-cli

Sau đây là một chuỗi các lệnh được sử dụng để kiểm tra xem password 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:

  • 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ề một lỗi:

Output
(error) NOAUTH Authentication required.

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

  • 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:

  • set key1 10
Output
OK

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

  • get key1
Output
"10"

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

  • 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 tắt 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 tắt hoặc đổi tên các lệnh này và các lệnh khác, bạn sẽ khiến user lạ khó cấu hình lại, phá hủy hoặc xóa sạch dữ liệu hơn.

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

  • sudo nano /etc/redis/redis.conf

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 mình và xác định cách chúng có thể bị sử dụng sai 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ư được hiển thị 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ư 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:

/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 một lệnh, hãy áp dụng thay đổi bằng cách khởi động lại Redis:

  • sudo systemctl restart redis.service

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

  • redis-cli

Sau đó xác thực:

  • 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ẽ không thành công, vì bạn đã đổi tên nó:

  • 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:

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

Kết luận

Trong hướng dẫn bắt đầu nhanh này, bạn đã cài đặt và 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 từ các tác nhân độc hại.


Tags:

Các tin liên quan

Cách cài đặt và bảo mật Redis trên Ubuntu 20.04
2020-05-01
Cách cài đặt và bảo mật Redis trên Ubuntu 18.04
2020-04-30
Cách di chuyển dữ liệu Redis với sao chép trên Ubuntu 18.04
2019-12-04
Cách thêm Sidekiq và Redis vào ứng dụng Ruby on Rails
2019-11-22
Cách quản lý các bộ được sắp xếp trong Redis
2019-11-22
Cách hết hạn khóa trong Redis
2019-10-08
Cách quản lý bản sao và khách hàng trong Redis
2019-10-08
Cách thực hiện giao dịch trong Redis
2019-10-01
Cách phân tích thống kê database Redis được quản lý bằng cách sử dụng elastic trên Ubuntu 18.04
2019-09-27
Cách quản lý bộ trong Redis
2019-09-26