记一次服务器中挖矿病毒ddgs.3011

今天早晨起来看见腾讯昨天晚上给我发短信说有人正在暴力破解我的密码,然后我用小程序看了下云主机的cpu占用情况,发现cpu使用率100%,应该是我的主机中毒了。
登录后用top指令查了下使用情况,有2个进程的cpu使用率很高,而且不是我自己装的程序,名字很陌生,ddgs.3011和qW3xT.1。
然后通过 cd /proc/{PID} 查看进程,发现它在tmp下。
tmp目录下的病毒文件
然后我rm -f ddgs.3011 和rm -f qW3xT.1将它们删除,重启后发现又自动运行起来了,然后tmp目录也有个这2个文件。
这时搜索了下ddgs.3011发现一般都会注册定时任务,然后我用crontab -e查看了确实加了2个定时任务。
2个定时任务
定时任务就是去这个网址上去下载脚本
定时任务下载的脚本文件
删除保存就可以了,然后重新删除了那2个文件,然后重启电脑解决。
但是还有一个疑问没有得到解决,中毒后我登录上去发现我docker上的nginx,mysql,wordpress都被停止了,不过数据都在就不深究了,因为我用的不是同一套密码,碰撞不上吧。

nginx配置文件配置共用80端口

  1. 先修改监听的端口号,即共用的端口号,http.server.listen的值改成80
  2. 添加子服务器,新建location,每一个location代表一种匹配方式,如果访问能够匹配上则会跳转到proxy_pass定义的其他端口号提供的服务上去,location可以写多个
#user       www www;  ## Default: nobody
    worker_processes  5;  ## Default: 1
    error_log  logs/error.log;
    pid        logs/nginx.pid;
    worker_rlimit_nofile 8192;

    events {
      worker_connections  4096;  ## Default: 1024
    }

    http {

      default_type application/octet-stream;
      log_format   main '$remote_addr - $remote_user [$time_local]  $status '
        '"$request" $body_bytes_sent "$http_referer" '
        '"$http_user_agent" "$http_x_forwarded_for"';
      access_log   logs/access.log  main;
      sendfile     on;
      tcp_nopush   on;
      server_names_hash_bucket_size 128; # this seems to be required for some vhosts


      server { # simple reverse-proxy
        listen       80;
        server_name  oxoxo.xyz;
        access_log   logs/domain2.access.log  main;

        location / {
          proxy_pass      http://172.21.0.15:81/;
        }
        location /wx {
          proxy_pass      http://172.21.0.15:83/;
        }
      }


    }

natapp后台运行查看随机域名

  1. 注册的service的指令后面是可以加参数的如下
    ./natapp -log=-log=stdout
  2. 配置文件config.ini的log参数和logevel参数调整一下
    config.ini
#将本文件放置于natapp同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意config.ini文件
[default]
authtoken=xxxxxxxx                      #对应一条隧道的authtoken
clienttoken=                    #对应客户端的clienttoken,将会忽略authtoken,若无请留空,
log=stdout                        #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none
loglevel=DEBUG                  #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
http_proxy=                  #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空
  1. systemctl restart后再status就能从log里看到随机域名是什么了

安装docker版wordpress

指令

docker run --name wordpress --restart=always -d -p 81:80 -e WORDPRESS_DB_NAME=wordpress -e WORDPRESS_DB_HOST=172.21.0.1 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD='xxxxxxx' -v /home/dockerapp/wordpress:/var/www/html 61
指令 含义
–name wordpress 实例名字
–restart=always 自动重启
-p 81:80 端口映射,虚拟机内的80对应宿主机的81,wordpress默认占用80端口
-e WORDPRESS_DB_NAME=wordpress 需要先建一个mysql数据库,名字在这里指定
-e WORDPRESS_DB_USER=root 数据库的用户名
-e WORDPRESS_DB_PASSWORD=’xxxxxxx’ 数据库的密码
-v 代码文件映射到宿主机

指令末端是镜像的名字

安装docker版mysql

通用指令

docker run -d -p 3306:3306 --restart=always --name mysql -v /home/dockerapp/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxx  0d

说明:

指令 说明
-d 后台运行
-p 3306:3306 端口映射,冒号前面的是宿主机的端口,后面的是mysql在docker虚拟机的端口,固定的,如果有多个端口那么就写多个-p
–restart=always 自动重启
–name mysql docker实例的名字
-v /home/dockerapp/mysql:/var/lib/mysql 数据卷映射,冒号前面的是宿主机上的文件位置,后面的是mysql在docker虚拟机里的文件位置,docker虚拟机里的文件位置是固定的 ,如果有多个数据卷就写多个-v
-e MYSQL_ROOT_PASSWORD=xxx 环境变量,root账号的密码,是必要的设置,不能少 ,如果有多个环境变量就写多个-e

指令的结尾是镜像的名字