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

一、查找进程

进入服务使用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. 数据库中1NF,2NF,3NF的判别

    参照:https://blog.csdn.net/qq_28888837/article/details/98733448 1NF:每一个都是最原子化.  2NF:找到主键后,每一个非主键对主键都是完 ...

  2. University of Toronto Faculty of Arts and Science MAT344– Final Assessment Combinatorics Instructors: Stanislav Balchev and Max Klambauer 19 August 2020

    目录 随便找的一份测试题 T7 T9 T6 T5 solution to (a) solution to (b) solution to (c) solution to (d) T1 T2 T3 T4 ...

  3. Opengl ES之矩阵变换(上)

    前言 说到矩阵变换,我们第一时间想到的就是大学时代的线性代数这些复杂的东西,突然有了一种令人从入门到放弃的念头,不慌,作为了一个应用层的CV工程师, 在实际应用中线性代数哪些复杂的计算根本不用我们自己 ...

  4. flex弹性盒子中flex-grow与flex的区别

    ​大家在使用flex布局的时候很多情况下都会用到flex-grow这个属性, flex-grow 属性用于设置父元素剩余空间的瓜分比例, flex 属性是 flex-grow.flex-shrink  ...

  5. vue双向监听proxy

    console.log('判断页面是否有滚动条', this.hasScrollbar) const that = this that.count = 0 // 计数 that.scrollProxy ...

  6. 【译】使用 ChatGPT 和 Azure Cosmos DB 构建智能应用程序

    原文 | Mark Brown 翻译 | 郑子铭 随着对智能应用程序的需求不断增长,开发人员越来越多地转向人工智能(AI)和机器学习(ML),以增强其应用程序的功能.聊天机器人已经成为提供对话式人工智 ...

  7. 为什么wait()需要在同步代码块内使用

    我们还是通过源代码和代码注释来学习这个问题 我们先来看看wait方法的注释,这里截取最根源的native方法给的注释 Causes the current thread to wait until e ...

  8. 11.getshell常见思路与技巧

    getshell常见思路与技巧 1.常规打点思路 信息收集: 绕开CDN找到所有靶标的真实IP 找到所有目标真实的C段 对所有的C段进行基础服务器的探测,端口的扫描.识别 对所有目标的子域名进行收集 ...

  9. 南昌航空大学-软件学院-22206104-段清如-JAVA第一次Blog作业

    南昌航空大学-软件学院-22206104-段清如-JAVA第一次Blog作业 前言: 这个学期才开始接触java,到现在一个多月的时间,已经差不多可以写出一些基本的简单的程序了.对比上个学期学习的C语 ...

  10. vue中新的状态管理器-pinia

    背景 对于pinia的使用,可参考官方文档在这不做过多赘述.这边主要来讲讲pinia中 少用且好用的方法,为什么我们选择pinia而不用vuex ps: 以下写法全部基于组合式API 使用方式: 先下 ...