近一段时间内发现自己的服务器总是警告被挖矿,然处理挖矿程序中也引发了许多其他的问题,也从中学到了其他的知识,趁今天未加班梳理一下便于巩固,记录日常

一、查找进程

进入服务使用top 查看cpu 使用情况

1、使用 ll /proc/pid号 查找进程

2、使用 lsof 查找进程打开的文件

也可以使用 lsof -p pid(有的linux 需要先安装yam install lsof)


lsof -p /proc/24143
// 或者
lsof|grep 进程名称

然后就能根据显示的文件路径找到对应的程序位置

根据如下的提示初步判断是postgresql这个所引起的,因为服务器宿主机并未安装相关的postgres,所以第一反应就是docker容器中的postgres在作怪

还有其他相关命令

   #lsof -p pid                         #查看该进程打开的文件
    #cat /proc/pid/maps                   #查看pid线程内存分配
    #ls -l /proc/$PID/exe                   #查看PID启动文件的路径
    #ls -l /proc/$PID/cwd                   #查看PID执行目录的路径
    #cat /proc/$PID/status                  #查看PID详细的内存占比

3、处理挖矿程序

首先进入到容器使用top发现该进程疯狂占用cpu

干掉进程

kill -9 18552

随后登录到postgres修改用户密码

root@f82e7d3a9755:/# su postgres
postgres@f82e7d3a9755:/$ passwd
Changing password for postgres.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
postgres@f82e7d3a9755:/$ exit
exit

也可以不登录postgres, 直接进入容器就修改,如

root@f82e7d3a9755:/# passwd root
Enter new UNIX password:
Retype new UNIX password:
Sorry, passwords do not match
passwd: Authentication token manipulation error
passwd: password unchanged

现在再看

一切正常了

4、重启docker

这个修改后重启一下docker

  systemctl restart  docker

然后把需要的容器再启动起来 docker start containerId

二、postgres 连接超时


接上处理挖矿程序后,运行自己的项目,发现pg 数据库无法连接了,尝试使用navicat进行连接也不行,于是又开始了解决postgres 无法被连接的问题

1. 容器操作

首先我的postgres是使用docker 制作的一个容器,所以先要进入这个容器

docker exec -it 容器id /bin/bash

进入容器后再登录postgres

root@f82e7d3a9755:/# su postgres
postgres@f82e7d3a9755:/$ psql

然后使用了如下命令查看postpres 的配置文件位置

postgres=# select name, setting from pg_settings where category='File Locations' ;


找到后,再使用 \q 退出postpres 数据库

2. vim 安装

这里我们需要在容器里安装vim 命令来进行文件编辑

先执行

mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && \
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources

开始安装

apt-get update && apt-get install vim -y

最后安装还是失败了,这个种柑橘你懂的
后来选择了使用echo 来修改配置,而这个可想而知,没vi 好用了

3. 使用echo修改配置

这里需要去看看看echo相关配置echo linux 官网详解

  • 语法

echo [短选项]... [字符串]...
  • echo 主要有
  1. 命令操作符 >(输出重定向)
    echo -n Hello,Binn > tmp.txt
    这句话的意思即是:输出Hello,Binn字符串到一个位置,如果tmp.txt存在,我们即【清空其内容,更新为Hello,Binn】,不存在,创建它
  2. 命令操作符 >>(输出追加重定向
    echo Hello,C >> tmp.txt
    查看tmp.txt的内容(此时可以看到,原来的字符串B并没有被替换,而是在B的下一行新增字符串C,即追加操作)
  -n 不尾随换行符
-e 启用解释反斜杠的转义功能
-E 禁用解释反斜杠的转义功能(默认)
--help 显示此帮助信息并退出
--version 显示版本信息并退出
若-e 可用,则以下序列即可识别:
\\ 反斜杠
\a 响铃声
\b 退格
\c 不再产生新的输出
\e 转义符
\f 换页
\n 新行
\r 回车
\t 水平制表符
\v 竖直制表符
\0NNN 字节数以八进制数 NNN (1至3位)表示
\xHH 字节数以十六进制数 HH (1至2位)表示

这里使用用 >> 进行追加不行,我们是需要修改配置,那
这里比较实用的就是 -e 了,因为那个pg_hba.conf里面类容很多而且有换行
拷贝原来的配置内容,再每一个结尾使用 \r 进行换行,和 \n 增加新行来格式配置

最后使用 echo -e " 修改的内容" > /etc/postgresql/9.6/main/pg_hba.conf

如这就是修改后的片段

然鹅修改完配置后在重启容器,外部进行pg 连接,任然提示超时???

4. 问题初见端倪

如上方法试了一大堆还是不行,只好试试重新创建一个容器来用

这一运行 屏幕出现了一行醒目的 IPv4被禁用的提示 WARNING: IPv4 forwarding is disabled. Networking will not work.
看见这句猛然如梦中惊醒(成年人的崩溃就在这一瞬间),这才知道了为啥一直无法链接(网络都没了)

找到了原因接下来就好处理了,直接找到对应的网络处理方案

解决方法
第一步:在宿主机上执行echo “net.ipv4.ip_forward=1” >>/usr/lib/sysctl.d/00-system.conf
第二步:重启network和docker服务

[root@localhost /]# systemctl restart network && systemctl restart docker
第三步:验证是否成功
[root@localhost /]# docker start f82e7d3a9755
f82e7d3a9755
成功了

然后让配置生效

pg_ctl reload

创建用户

postgres@f82e7d3a9755:/$ psql
psql (9.6.11)
Type "help" for help. postgres=# create role dbasuper superuser password '访问密码' login;
CREATE ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
dbasuper | Superuser | {}
dex | | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} postgres=#

创建好用户再一次测试连接

三、从容器中备份数据库

有了这些经历,我决定把postgres中的数据备份起来,免得下次在出现这种情况,我可以直接删库跑路,哈哈哈,扯远了,可以删掉容器,重建,导入数据,不需要那么麻烦去容器中追查木马,搞出来一堆问题。

docker ps

进入目标容器:

docker exec -u root -it 容器名 /bin/bash

docker 中,以root用户,创建备份目录,直接执行如下命令,


pg_dump -h localhost -p 5432 -U odoo xxx(数据库名) > /数据库dump备份文件目录/export_XXX(数据库名)_bak_2018xxx.dmp

看实际操作如下:

root@f82e7d3a9755:/# pg_dump -h localhost -p 5432 -U dbasuper lszz > /usr/export_lszz_backups.dmp
Password:
root@f82e7d3a9755:/# ls /usr
bin export_lszz_backups.dmp games include lib local sbin share src
root@f82e7d3a9755:/#

现在备份了但是在容器里需要将其拷贝到宿主机来
拷贝文件从容器里

1、从容器里面拷文件到宿主机?

     答:在宿主机里面执行以下命令

             docker cp 容器名:要拷贝的文件在容器里面的路径       要拷贝到宿主机的相应路径 

     示例: 假设容器名为testtomcat,要从容器里面拷贝的文件路为:/usr/local/tomcat/webapps/test/js/test.js,  现在要将test.js从容器里面拷到宿主机的/opt路径下面,那么命令应该怎么写呢?

     答案:在宿主机上面执行命令

1
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt
   2、从宿主机拷文件到容器里面 答:在宿主机里面执行如下命令 docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径 示例:假设容器名为testtomcat,现在要将宿主机/opt/test.js文件拷贝到容器里面的/usr/local/tomcat/webapps/test/js路径下面,那么命令该怎么写呢? 答案:在宿主机上面执行如下命令 1
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js

实际操作

[root@dex leshan]# docker cp postgresql:/usr/export_lszz_backups.dmp /opt


【最终】为了安全我在阿里云安全组把对应的数据库端口改成了只允许本机ip访问,这个每次解决被攻击太麻烦了,不再这里浪费时间了。


OK 这次经历就记录到此,没有什么技术含量只是记录日常采坑谢谢

记一次处理挖矿程序引发的postgres 连接超时的更多相关文章

  1. zigw 和 nanoWatch, libudev.so 和 XMR 挖矿程序查杀记录

    最近这两天以来,服务器一致声音很响.本来以为有同事在运行大的程序,结果后来发现持续很长时间都是这样,并没有停的样子.后来查了一下,发现有几个可疑进程导致,干掉之后,果然服务器静悄悄了. 但是,问题并没 ...

  2. 记录遭遇挖矿程序kthrotlds的失败处理经历

    1 发现问题 在腾讯云上购买了一个centos7的服务器,平时用来练手,偶尔也安装一些程序进行测试,上面安装了mysql和redis,前段时间数据库经常掉线,连不上,到腾讯云后台进行查看,通过服务器实 ...

  3. windows服务器解决挖矿程序问题

    前几天发现服务器报警,cpu使用率已达100%,查资料知道正是最近比较流行的挖矿程序在捣鬼.我们使用的是阿里云的服务器,操作系统是windows server.网上有大量的资料讲如何处理,我把自己处理 ...

  4. 服务器被疑似挖矿程序植入,发现以及解决过程(建议所有使用sonatype/nexus3的用户清查一下)

    此次服务器被植入挖矿程序发现起来较为巧合,首先是上周三开始,我通过sonatype/nexus3搭建的仓库间歇性崩溃,但是每次重新start一下也能直接使用所以没有彻底清查,去docker logs里 ...

  5. 阿里云windows 2008 服务器处理挖矿程序 Miner

    阿里云盾最近报发现wanacry蠕虫病毒和挖矿进程异常 仔细检查进程后,发现两个奇怪的进程 Eternalblue-2.2.0.exe,winlogins.exe 特别是伪装成 winlogins.e ...

  6. 挖矿程序的工作原理(BTC为例)

    Mining时代进化:CPU挖矿 -> GPU挖矿 -> FPGA挖矿 -> ASIC挖矿CPU挖矿时代:SENGENERATEGPU挖矿时代:GETWORK Miner:挖矿的程序 ...

  7. 阿里云服务器被挖矿程序minerd入侵的终极解决办法[转载]

    突然发现阿里云服务器CPU很高,几乎达到100%,执行 top c 一看,吓一跳,结果如下: root 386m S : /tmp/AnXqV -B -a cryptonight -o stratum ...

  8. SSH 暴力破解趋势——植入的恶意文件属 DDoS 类型的恶意文件最多,接近70%,包括 Ganiw、 Dofloo、Mirai、 Xarcen、 PNScan、 LuaBot、 Ddostf等家族。此外挂机、比特币等挖矿程序占5.21%

    SSH 暴力破解趋势:从云平台向物联网设备迁移 | 云鼎实验室出品 from: http://www.freebuf.com/articles/paper/177473.html 导语:近日,腾讯云发 ...

  9. 解决centos被minerd挖矿程序入侵方法

    记录一次服务器被入侵的解决方法 一:问题说明 1.我的服务器是使用的阿里云的CentOS,收到的阿里云发来的提示邮件如下 然后我查看了运行的进程情况(top 命令),看到一个名为minerd的进程占用 ...

  10. 生产Server遭挖矿程序入侵,暴力占用CPU

    区块链的火热,利益驱使必然导致不少PC或Server,被变成肉鸡,执行挖矿程序进行挖矿,进而导致我们正常的程序无法正常. (Centos7 Server)使用top命令查看服务器进程运行情况,发现几个 ...

随机推荐

  1. Android笔记--SQL

    SQL基本语法 基本语法在Python和Java那里都已经重复过了,这里就不再重复了 SQLiteDatabase--SQLite的数据库管理类 主要分为以下3类: 管理类 相关实现: 事务类 数据库 ...

  2. Echarts中slider滑块调整样式

    今天遇到了一个问题,记录一下. 效果图. 原型图 一个页面中,引入了echarts的柱状图来动态显示数据,由于柱状图太高,echarts没有自动生成的滚动条,所以就用slider滑块手写了一个,但是效 ...

  3. web初始:html记忆

    12.13html框架 <! DOCTYPE html> <html lang="zh-CN"> <head> <meta charset ...

  4. 全网最详细中英文ChatGPT接口文档(四)30分钟快速入门ChatGPT——Models模型

    @ 目录 Models Overview 概述 GPT-4 Limited beta GPT-3.5 Feature-specific models 特定功能的模型 Finding the right ...

  5. ChatGPT能给IOT行业带来哪些改变

    引言 随着移动互联网.传感器的发展,移动互联的潮流逐渐转移到物联网行业,每个设备成为了物联网连接的终端. 与传统的设备相比,智能设备最突出的特点就是智能化.目前,在市场上的智能设备通过智能程序设定或者 ...

  6. 通知短信 API 接入全流程(超详细整理)

    随着移动互联网和智能手机的普及,短信成为了一种便捷.快速且有效的通信方式,尤其在向用户发送重要信息或提醒方面具有很大的优势. 本文将会深入探讨如何在程序中接入通知短信 API 实现短信通知功能,此外, ...

  7. Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内

    Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内 语法 element.scrollIntoView(); // 等同于element.scrollInt ...

  8. JAVA网络编程样例

    这篇文章主要用来总结Java在网络编程中的知识点 下面是一个Java客户端与服务端通信的样例程序 //Server public class Server { public static void m ...

  9. SELinux入门学习总结

    前言 安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统. SELinux 主要由美国国家 ...

  10. ARouter源码分析

    源码看过好几遍了,但是总是会忘记,特此记录下 先从注解处理器开始 BaseProcessor是其他三个注解处理器的抽象类,子类去实现process方法.在其中的init方法中会获取我们的module模 ...