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

一、查找进程

进入服务使用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. linux服务器已知目录下根据特定字符串查找文件

    很久不用的一个项目的测试环境迁移后,启动项目时,发现日志一直报错,在opt/下缺少一个jar包,思路是:查看配置文件,想找到具体是哪个配置文件写了需要用到这个jar包,然后修改到正确路径下重新启动尝试 ...

  2. 如何基于 React Native 快速实现一个视频通话应用

    今天,我们将会一起开发一个包含 RTE (实时互动)场景的 Flutter 应用. 项目介绍 靠自研开发包含实时互动功能的应用非常繁琐,你要解决维护服务器.负载均衡等难题,同时还要保证稳定的低延迟. ...

  3. Java面试——Tomcat

    更多内容,前往个人博客 一.Tomcat 顶层架构 ​ Tomcat 中最顶层的容器是 Server,代表着整个服务器,从上图中可以看出,一个 Server可以包含至少一个 Service,用于具体提 ...

  4. FutureTask 类

    更多内容,前往IT-BLOG 一.什么是 Future和 FutureTask FutureTask 的 Future就源自于它的异步工作机制,如果我们在主线程中直接写一个函数来执行任务,这是同步的任 ...

  5. C#中抽象方法与虚方法的区别详解及示例

    1. 抽象方法与虚方法的区别   先说两者最大的区别:抽象方法是需要子类去实现的.虚方法是已经实现了的,可以被子类覆盖,也可以不覆盖,取决于需求.因为抽象类无法实例化,所以抽象方法没有办法被调用,也就 ...

  6. ASP.NET CORE开发 (三)

    1. 在使用singleton时出现 Cannot resolve scoped service 'AlgoTag.Models.AlgoContext' from root provider. ht ...

  7. AlphaFold2无痛安装教程(超级详细)

    目录 介绍 环境 安装 CMAKE安装 hmmer安装 HHsuite安装 Kalign安装 OpenMM安装 PDBfixer安装 Python依赖包安装 AlphaFold安装 AlphaFold ...

  8. 把一个列表拆成N个子列表的四种方法

    编程的方法往往不止一种,比如怎么把一个Python种的列表拆成N个子列表,我们可以很容易找到N种方法,也许这就是编程的魅力所在. 一.列表表达式法 这种方法最为简洁,不过可读性差一些 这个方法中,即使 ...

  9. How to implement UDP protocal

    Server implementation Open a socket on the server that listens to the UDP requests. (I've chosen 888 ...

  10. [数据结构]二叉搜索树(BST) VS 平衡二叉排序树(AVL) VS B树(平衡多路搜索树) VS B+树 VS 红黑树(平衡二叉B树)

    1 二叉排序树/二叉查找树/Binary Sort Tree 1种对排序和查找都很有用的特殊二叉树 叉排序树的弊端的解决方案:平衡二叉树 二叉排序树必须满足的3条性质(或是具有如下特征的二叉树) 若它 ...