安全无小事—docker安装redis并设置密码验证
「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」
前言
我们在学习redis时总是忘了给redis加密码验证,这不,上一次就是因为我redis密码忘了设置并且端口暴露到外网,导致了我现在又要重新部署环境。详情请看# 小白被挖矿木马整emo的一天 。有了上一次服务器被挖矿病毒入侵的经验,这一次我在安装redis时首先想到的是要给redis加密码认证,并且要将端口号改一改。redis端口默认6379,不法分子在使用扫描工具扫描的时候就会扫描一些默认端口号,发现你的服务器端口开着就会尝试去入侵(太可恶了)。下面是我参考了网上的资料,大佬博客之后的操作,仅供大家参考。
redis镜像获取
在hub.docker.com里可以搜索redis镜像,查看redis版本
这里我选择了5.0版本,可以直接复制命令到你的linux机器执行
root@cj:~# docker pull redis:5.0
创建redis容器实例
pull完成,使用docker images
命令查看镜像和镜像id
另外提一点比较重要的命令,可以在你操作错误之后用到:
docker ps -a #查看容器(包含未启动的)
docker stop <容器id> #停止容器
docker rm <容器id> #删除容器 (删除容器必须先停止容器,当然你要加 -f 那就是强制删除)
docker rmi <镜像id> #删除镜像 (删除镜像必须先删除容器 -f强制删除)
镜像准备完毕,接下来就是创建容器实例了
docker run \
-d \
-p 7876:6379 \
--name redis-test \
c5da061a611a \
redis-server --appendonly yes --requirepass pass123
参数说明:
-d 让容器在后台运行
-p 指定容器暴露的端口 外网6379,容器6379,为了安全建议把前一个6379更改一下
--name 指定容器名字
c5da061a611a 使用的redis镜像id
redis-server 在容器内执行redis-server命令
--appendonly yes 打开redis持久化配置
--requirepass pass123 设置redis访问密码
执行上述命令之后我们查看是否成功,使用docker ps
命令
验证是否设置密码
使用以下命令进入redis-test容器
docker exec -it redis-test /bin/bash
打开客户端
redis-cli
执行ping命令
发现提示:(error) NOAUTH Authentication required.
,那么你的密码验证是设置成功了
使用刚刚设置的密码
auth 密码
再ping
,成功。
使用config set requirepass <新密码>
可以修改认证密码。
这是其中的一种方式,但是我在容器中并没有找到对应的redis.conf
文件。
那么如何使用指定配置文件启动呢?
指定配置文件创建redis容器
创建外部配置文件
mkdir -p docker/redis/{conf,data}
在conf目录创建redis.conf的配置文件
vi /docker/redis/conf/redis.conf
redis.config文件可以到redis官网下载复制
requirepass后的为密码
创建容器,挂载文件
docker run -d \
--privileged=true \
-p 7877:6379 \
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /docker/redis/data:/data \
--name redis-test c5da061a611a \
redis-server /etc/redis/redis.conf --appendonly yes
其中,
--privileged=true 容器内root拥有root权限
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf 映射配置文件
-v /docker/redis/data:/data 映射数据目录
redis-server /etc/redis/redis.conf 指定配置文件启动redis-server进程
验证是否设置密码
同上,这里就不重复写了。
最后
以上就是今天的学习分享,欢迎大家发表观点,指出不足。
转载自:https://juejin.cn/post/7062548655017820191