Redis的安装以及日常使用

1. 安装前的准备

1、Redis是c语言开发的。
2、安装redis需要c语言的编译环境。如果没有gcc需要在线安装。
命令行:yum install gcc-c++

2. 安装步骤

第一步:redis的源码包上传到linux系统。
官方下载地址:

https://redis.io/download

第二步:解压缩redis。
命令行:tar -zxvf redis-3.0.0.tar.gz

第三步:编译。进入redis源码目录。
命令行:make

第四步:安装。
命令行:make install PREFIX=/usr/local/redis
注意:PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下

3. 连接redis

3.1. redis的启动

1、前端启动模式
在redis的安装目录下直接启动redis-server。
[root@localhost bin]# ./redis-server
在这里插入图片描述
注意:前端启动模式下,终端窗口就会占用,结束方式:快捷键*Ctrl+C*。

2、后台启动模式(推荐使用)
(1)把/root/redis-3.0.0/redis.conf复制到/usr/local/redis/bin目录下。
[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/

(2)修改配置文件。
[root@localhost bin]# vim redis.conf
在这里插入图片描述
加载配置文件启动
[root@localhost bin]# ./redis-server redis.conf

(3)查看redis进程。
[root@localhost bin]# ps aux|grep redis
在这里插入图片描述
(4)通过进程关闭方式,关闭redis服务。
[root@localhost bin]# kill pid(进程id),例如:kill 63780
注意:kill -9 pid 表示强制关闭。Kill pid 表示正常完成当前任务后关闭

(5)远程连接端口开放解决方案:
CentOS7.x版本(firewall-cmd防火墙):
开放端口:firewall-cmd --zone=public --add-port=6380/tcp --permanent

扫描二维码关注公众号,回复: 12870657 查看本文章

重启防火墙:firewall-cmd --reload

其他命令:
#查看firewall防火墙状态 systemctl status firewalld
#查看firewall防火墙开放端 firewall-cmd --list-ports
#打开firewall防火墙 systemctl start firewalld.service
#关闭firewall防火墙 systemctl stop firewalld.service
#禁止firewall开机启动 systemctl disable firewalld.service

3.2. redis-cli

[root@localhost bin]# ./redis-cli
默认连接localhost运行在6379端口的redis服务。

[root@localhost bin]# ./redis-cli -h 192.168.113.100 -p 6379 -a "密码"
-h:连接的服务器的地址
-p:服务的端口号
-a:密码登录

关闭redis:[root@localhost bin]# ./redis-cli shutdown
修改了端口号关闭命令:./redis-cli -p 端口号 shutdown

针对修改了监听地址和端口号的关闭命令使用:kill -9 pid(进程号)

3.3. Redis五种数据类型

1)String:key-value(做缓存)
Redis中所有的数据都是字符串。命令不区分大小写,key是区分大小写的。Redis是单线程的。Redis中不适合保存内容大的数据。
set(设置)、get(得到)、del(删除)、keys *(查看所有)
incr:加一(生成id),decr:减一

2)Hash:key-fields-values(做缓存)
相当于一个key对于一个map,map中还有key-value
使用hash对key进行归类。
Hset:向hash中添加内容
Hget:从hash中取内容

3)List:有顺序可重复(双向链表)

192.168.113.100:6379> lpush list1 a b c d
(integer) 4
192.168.113.100:6379> lrange list1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
192.168.113.100:6379> rpush list1 1 2 3 4
(integer) 8
192.168.113.100:6379> lrange list1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "1"
6) "2"
7) "3"
8) "4"
192.168.113.100:6379> 
192.168.113.100:6379> lpop list1 
"d"
192.168.113.100:6379> lrange list1 0 -1
1) "c"
2) "b"
3) "a"
4) "1"
5) "2"
6) "3"
7) "4"
192.168.113.100:6379> rpop list1
"4"
192.168.113.100:6379> lrange list1 0 -1
1) "c"
2) "b"
3) "a"
4) "1"
5) "2"
6) "3"
192.168.113.100:6379> 

4)Set:元素无顺序,不能重复

192.168.113.100:6379> sadd set1 a b c c c d
(integer) 4
192.168.113.100:6379> smembers set1
1) "b"
2) "c"
3) "d"
4) "a"
192.168.113.100:6379> srem set1 a
(integer) 1
192.168.113.100:6379> smembers set1
1) "b"
2) "c"
3) "d"
192.168.113.100:6379> 

5)SortedSet(zset):有顺序,不能重复

192.168.113.100:6379> zadd zset1 2 a 5 b 1 c 6 d
(integer) 4
192.168.113.100:6379> zrange zset1 0 -1
1) "c"
2) "a"
3) "b"
4) "d"
192.168.113.100:6379> zrem zset1 a
(integer) 1
192.168.113.100:6379> zrange zset1 0 -1
1) "c"
2) "b"
3) "d"
192.168.113.100:6379> zrevrange zset1 0 -1
1) "d"
2) "b"
3) "c"
192.168.113.100:6379> zrange zset1 0 -1 withscores
1) "c"
2) "1"
3) "b"
4) "5"
5) "d"
6) "6"
192.168.113.100:6379> zrevrange zset1 0 -1 withscores
1) "d"
2) "6"
3) "b"
4) "5"
5) "c"
6) "1"
192.168.113.100:6379> 

3.4. Key命令

设置key的过期时间。
Expire key second:设置key的过期时间
Ttl key:查看key的有效期
Persist key:清除key的过期时间。Key持久化。

192.168.113.100:6379> expire Hello 100
(integer) 1
192.168.113.100:6379> ttl Hello
(integer) 77

4. Redis 安全配置(绝对重要)

1、安全配置缘由

Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。

2、入侵特征

Redis 可能执行过 FLUSHALL 方法,整个 Redis 数据库被清空;
在 Redis 数据库中新建了一个名为 crackit(网上流传的命令指令) 的键值对,内容为一个 SSH 公钥;
在 /root/.ssh 文件夹下新建或者修改了 authorized_keys 文件,内容为 Redis 生成的 db 文件,包含上述公钥;

3、解决方案

1)修改Redis的默认端口,避免使用熟知的端口,降低被初级扫描的风险。
在redis.conf中配置如下:port 6379修改成其他端口号,例如6380,记得防火墙的开发端口也要修改成改后的端口号;
在这里插入图片描述
移除开放默认端口(针对CentOS7.x):

firewall-cmd --zone= public --remove-port=6379/tcp –permanent

添加开放端口(针对CentOS7.x):

firewall-cmd --zone= public --add-port=6380/tcp –permanent

2)限制内网访问或者只本机访问,多个IP使用空格隔开。
在redis.conf中配置如下:bind 192.168.113.100或者bind 127.0.0.1
在这里插入图片描述
3)开启redis密码认证并设置高复杂度密码
在redis.conf中配置如下:requirepass+空格+复杂密码(8-20位)
在这里插入图片描述
4)禁用或重命名危险命令,设置为空即为禁用该命令。(重命名一定要让其他人不易猜中)
在redis.conf中添加如下:

rename-command CONFIG CONFIG_boss
rename-command SHUTDOWN SHUTDOWN_boss
rename-command FLUSHDB ""
rename-command FLUSHALL ""

如图所示。
在这里插入图片描述
5)仅对特定IP开放访问Redis的使用端口。
设置命令如下:

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="特定IP" port protocol="tcp" port="Redis的使用端口" accept"

针对一个网段:

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.113.0/24" port protocol="tcp" port="6380" accept"

6)修改redis文件目录访问权限。(暂定)
redis根目录设置为 chmod 700 redis
redis.conf 设置为 chmod 600 redis
在这里插入图片描述

7)禁止root用户启动redis(暂定)

useradd -s /sbin/nolog -M redis 
setsid sudo -u redis /usr/bin/redis-server /etc/redis.conf

注意添加用户

猜你喜欢

转载自blog.csdn.net/rao991207823/article/details/105345207