Cài đặt và bảo mật Redis Server trên Debian 10

theanh

Administrator
Nhân viên
Redis còn được gọi là "Remote Dictionary Server" là một cơ sở dữ liệu mã nguồn mở và trong bộ nhớ 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 hỗ trợ nhiều cấu trúc dữ liệu khác nhau, chẳng hạn như chuỗi, băm, danh sách, tập hợp và nhiều hơn nữa. Redis được viết bằng ngôn ngữ lập trình C và hoạt động trong hầu hết các hệ thống POSIX như Linux, Free BSD và OS X. Redis có thể chạy hàng nghìn lệnh mỗi giây. Redis đi kèm với một bộ tính năng phong phú bao gồm Sao chép, Tự động chuyển đổi dự phòng, Tập lệnh Lua, Loại bỏ khóa LRU, Giao dịch và nhiều tính năng khác.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt và bảo mật Redis trên máy chủ Debian 10.

Yêu cầu​

  • Máy chủ chạy Debian 10.
  • Mật khẩu gốc được thiết lập cho máy chủ của bạn.

Bắt đầu​

Trước khi bắt đầu, bạn sẽ cần cập nhật hệ thống của mình lên phiên bản mới nhất. Bạn có thể thực hiện việc này bằng cách chạy lệnh sau:
Mã:
apt-get update -y
apt-get upgrade -y
Sau khi máy chủ của bạn được cập nhật, hãy khởi động lại máy chủ để áp dụng các thay đổi.

Cài đặt Redis​

Theo mặc định, Redis có sẵn trong kho lưu trữ Debian 10. Bạn có thể cài đặt nó chỉ bằng cách chạy lệnh sau:
Mã:
apt-get install redis-server -y
Sau khi cài đặt Redis, hãy khởi động dịch vụ Redis và cho phép nó khởi động sau khi hệ thống khởi động lại bằng lệnh sau:
Mã:
systemctl start redis-server
systemctl enable redis-server
Bạn cũng có thể xác minh trạng thái của máy chủ Redis bằng lệnh sau:
Mã:
systemctl status redis-server
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
? redis-server.service - Kho lưu trữ khóa-giá trị nâng cao Đã tải: đã tải (/lib/systemd/system/redis-server.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ sáu 2019-09-06 05:57:45 EDT; 4 giây trước Tài liệu: http://redis.io/documentation, man:redis-server(1) Tiến trình: 2284 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS) PID chính: 2285 (redis-server) Nhiệm vụ: 4 (giới hạn: 1138) Bộ nhớ: 6,8M CGroup: /system.slice/redis-server.service ??2285 /usr/bin/redis-server 127.0.0.1:637906/09 05:57:45 debian systemd[1]: Đang khởi động kho lưu trữ khóa-giá trị nâng cao...06/09 05:57:45 debian systemd[1]: redis-server.service: Không thể mở tệp PID /run/redis/redis-server.pid (chưa?) sau khi bắt đầu: Không có tệp nào như vậy hoặc di06/09 05:57:45 debian systemd[1]: Đã bắt đầu lưu trữ khóa-giá trị nâng cao.
Theo mặc định, Redis đang lắng nghe trên máy chủ cục bộ ở cổng 6379. Bạn có thể kiểm tra bằng lệnh sau:
Mã:
ps -ef | grep redis
Bạn sẽ thấy đầu ra sau:
Mã:
redis 2285 1 0 05:57 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379root 2294 706 0 05:59 pts/0 00:00:00 grep redis
Tiếp theo, hãy kiểm tra kết nối Redis bằng lệnh sau:
Mã:
redis-cli
Bạn sẽ thấy kết quả sau:
Mã:
127.0.0.1:6379>
Bây giờ, hãy kiểm tra kết nối Redis bằng lệnh ping:
Mã:
127.0.0.1:6379> ping
Nếu mọi thứ đều ổn, bạn sẽ thấy kết quả sau:
Mã:
PONG
Sau khi hoàn tất. Bạn có thể tiến hành bước tiếp theo.

Cấu hình Redis làm Cache​

Bạn có thể cấu hình Redis làm Cache bằng cách chỉnh sửa tệp /etc/redis/redis.conf:
Mã:
nano /etc/redis/redis.conf
Thêm các dòng sau vào cuối tệp:
Mã:
maxmemory 64mbmaxmemory-policy allkeys-lru
Khi đạt đến bộ nhớ tối đa 64mb. Redis sẽ xóa bất kỳ khóa nào theo thuật toán LRU. Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi động lại dịch vụ Redis bằng lệnh sau:
Mã:
systemctl restart redis-server
Sau khi bạn hoàn tất. Bạn có thể tiến hành bước tiếp theo.

Cấu hình Xác thực Redis​

Theo mặc định, bạn có thể chạy bất kỳ lệnh nào trong shell Redis. Vì vậy, bạn nên cấu hình Xác thực Redis để máy khách yêu cầu mật khẩu trước khi chạy bất kỳ lệnh nào. Bạn có thể cấu hình xác thực mật khẩu trực tiếp trong tệp cấu hình của Redis. Để thực hiện, hãy mở tệp /etc/redis/redis.conf bằng trình soạn thảo bạn thích:
Mã:
nano /etc/redis/redis.conf
Trong phần BẢO MẬT, hãy tìm dòng sau:
Mã:
# requirepass foobared
Bỏ chú thích và thay thế bằng mật khẩu mong muốn của bạn như hiển thị bên dưới:
Mã:
requirepass AlsW34%#df
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi động lại dịch vụ Redis để áp dụng các thay đổi cấu hình:
Mã:
systemctl restart redis-server
Bây giờ, hãy truy cập shell Redis bằng lệnh sau:
Mã:
redis-cli
Bây giờ, hãy chạy lệnh sau mà không cần xác thực:
Mã:
127.0.0.1:6379> INFO server
Lệnh này sẽ không có tác dụng vì bạn không xác thực. Bạn sẽ nhận được lỗi sau:
Mã:
NOAUTH Authentication required.
Tiếp theo, hãy chạy lệnh sau để xác thực bằng mật khẩu được chỉ định trong tệp cấu hình Redis:
Mã:
127.0.0.1:6379> AUTH AlsW34%#df
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
OK
Bây giờ, hãy chạy lại lệnh trước đó:
Mã:
127.0.0.1:6379> Máy chủ INFO
Điều này sẽ chạy thành công và bạn sẽ thấy kết quả sau:
Mã:
# Máy chủredis_version:5.0.3redis_git_sha1:00000000redis_git_dirty:0redis_build_id:afa0decbb6de285fredis_mode:standaloneos:Linux 4.19.0-5-amd64 x86_64arch_bits:64multiplexing_api:epollatomicvar_api:atomic-builtingcc_version:8.3.0process_id:2308run_id:2cf0470a9492deddf98bcc72fa9ec94e941edf6ctcp_port:6379uptime_in_seconds:50uptime_in_days:0hz:10configured_hz:10lru_clock:7483371executable:/usr/bin/redis-serverconfig_file:/etc/redis/redis.conf
Sau khi hoàn tất. Bạn có thể tiến hành bước tiếp theo.

Đổi tên các lệnh cụ thể​

Vì lý do bảo mật, chúng tôi khuyên bạn nên đổi tên một số lệnh được coi là nguy hiểm.

Ở đây chúng tôi sẽ đổi tên lệnh "config". Lệnh config được sử dụng để lấy mật khẩu Redis. Chúng ta hãy xem ví dụ sau:

Trước tiên, hãy kết nối và xác thực shell Redis bằng lệnh sau:
Mã:
redis-cli
Mã:
127.0.0.1:6379> AUTH AlsW34%#df
Tiếp theo, hãy lấy mật khẩu Redis bằng lệnh sau:
Mã:
127.0.0.1:6379> config get requirepass
Bạn sẽ nhận được kết quả sau:
Mã:
1) "requirepass"2) "AlsW34%#df"127.0.0.1:6379>
Bạn có thể đổi tên lệnh config bằng cách chỉnh sửa tệp /etc/redis/redis.conf:
Mã:
nano /etc/redis/redis.conf
Tìm dòng sau:
Mã:
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
Bỏ chú thích và thay thế bằng chuỗi mong muốn của bạn:
Mã:
rename-command CONFIG H2sW_Config
Lưu và đóng tệp. Sau đó, khởi động lại dịch vụ Redis bằng lệnh sau:
Mã:
systemctl restart redis-server
Tiếp theo, kết nối và xác thực shell Redis bằng lệnh sau:
Mã:
redis-cli
 127.0.0.1:6379> AUTH AlsW34%#df
Tiếp theo, lấy lại mật khẩu Redis bằng lệnh config:
Mã:
127.0.0.1:6379> config get requirepass
Chúng tôi đã đổi tên lệnh này để bạn nhận được lỗi sau:
Mã:
(error) ERR unknown command `config`, with args starting with: `get`, `requirepass`,
Bây giờ, hãy chạy lệnh đã đổi tên như hiển thị bên dưới:
Mã:
127.0.0.1:6379> H2sW_Config get requirepass
Bạn sẽ nhận được kết quả sau:
Mã:
1) "requirepass"2) "AlsW34%#df"
Cuối cùng, thoát khỏi Redis shell bằng lệnh sau:
Mã:
127.0.0.1:6379> exit

Kết luận​

Xin chúc mừng! Bạn đã cài đặt và bảo mật thành công máy chủ Redis trên Debian 10. Tôi hy vọng bây giờ bạn đã có đủ kiến thức để bảo mật máy chủ Redis của mình bằng xác thực mật khẩu. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ thắc mắc nào.
 
Back
Bên trên