阿里云Centos7.6上面部署基于redis的分布式爬虫scrapy-redis将任务队列push进redis

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取。但是当我们要爬取的页面非常多的时候,单个服务器的处理能力就不能满足我们的需求了(无论是处理速度还是网络请求的并发数),这时候分布式爬虫的优势就显现出来。

而Scrapy-Redis则是一个基于Redis的Scrapy分布式组件。它利用Redis对用于爬取的请求(Requests)进行存储和调度(Schedule),并对爬取产生的项目(items)存储以供后续处理使用。scrapy-redi重写了scrapy一些比较关键的代码,将scrapy变成一个可以在多个主机上同时运行的分布式爬虫。
_1
说白了,就是使用redis来维护一个url队列,然后scrapy爬虫都连接这一个redis获取url,且当爬虫在redis处拿走了一个url后,redis会将这个url从队列中清除,保证不会被2个爬虫拿到同一个url,即使可能2个爬虫同时请求拿到同一个url,在返回结果的时候redis还会再做一次去重处理,所以这样就能达到分布式效果,我们拿一台主机做redis 队列,然后在其他主机上运行爬虫.且scrapy-redis会一直保持与redis的连接,所以即使当redis 队列中没有了url,爬虫会定时刷新请求,一旦当队列中有新的url后,爬虫就立即开始继续爬

首先分别在主机和从机上安装需要的爬虫库
pip3 install requests scrapy scrapy-redis redis

在主机中安装redis

安装redis

yum install redis

启动服务
systemctl start redis

查看版本号
redis-cli –version

设置开机启动
systemctl enable redis.service

修改redis配置文件 vim /etc/redis.conf 将保护模式设为no,同时注释掉bind,为了可以远程访问,另外需要注意阿里云安全策略也需要暴露6379端口

改完配置后,别忘了重启服务才能生效
systemctl restart redis
然后分别新建爬虫项目
scrapy startproject myspider
在项目的spiders目录下新建test.py

导包

import scrapy
import os
from scrapy_redis.spiders import RedisSpider

定义抓取类

class Test(scrapy.Spider):

class Test(RedisSpider):

#定义爬虫名称,和命令行运行时的名称吻合
name = "test"

#定义redis的key
redis_key = 'test:start_urls'

#定义头部信息
haders = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.86 Chrome/73.0.3683.86 Safari/537.36'
}

def parse(self, response):
    print(response.url)
    pass

然后修改配置文件settings.py,增加下面的配置,其中redis地址就是在主机中配置好的redis地址:
BOT_NAME = ‘myspider’

SPIDER_MODULES = [‘myspider.spiders’]
NEWSPIDER_MODULE = ‘myspider.spiders’

设置中文编码

FEED_EXPORT_ENCODING = ‘utf-8’

scrapy-redis 主机地址

REDIS_URL = ‘redis://root@39.106.228.179:6379’

队列调度

SCHEDULER = “scrapy_redis.scheduler.Scheduler”

不清除缓存

SCHEDULER_PERSIST = True

通过redis去重

DUPEFILTER_CLASS = “scrapy_redis.dupefilter.RFPDupeFilter”

不遵循robots

ROBOTSTXT_OBEY = False

最后,可以在两台主机上分别启动scrapy服务
此时,服务已经起来了,只不过redis队列中没有任务,在等待状态
进入主机的redis
redis-cli
将任务队列push进redis
lpush test:start_urls http://baidu.com
lpush test:start_urls http://chouti.com
可以看到,两台服务器的爬虫服务分别领取了队列中的任务进行抓取,同时利用redis的特性,url不会重复抓取
121
爬取任务结束之后,可以通过flushdb命令来清除地址指纹,这样就可以再次抓取历史地址了。

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

CentOS 7- 配置阿里镜像源

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

阿里镜像官方地址http://mirrors.aliyun.com/

1、点击官方提供的相应系统的帮助 :
_1
2、查看不同版本的系统操作:
_2

下载源
1、安装wget
yum install -y wget
2、下载CentOS 7的repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、更新镜像源
清除缓存:yum clean all
生成缓存:yum makecache

更改配置文件(很重要)
1、备份CentOS 7系统自带yum源配置文件/etc/yum.repos.d/CentOS-Base.repo命令:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2、找到yum源的配置路径
cd /etc/yum.repos.d

3、(可以省略该步骤)查看该目录下的所有文件目录:
ls
_3
4、打开CentOS-Base.repo文件:
vim CentOS-Base.repo

或者

vi CentOS-Base.repo

5、将文件中的所有http开头的地址更改为https(下图中只是列出部分内容,并不完善):
_4
6、更新yum:
yum update

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

如何申请阿里云免费SSL证书(可用于https网站)并下载下来

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

前提条件:你要有阿里云的账号,并且要有一个域名。
注意:阿里云系统也在不断更新,界面以后可能会有稍许变化,但是原理是相通的。

具体步骤:

1.登录到阿里云后台,并选择 “SSL证书(应用安全)” 菜单
_1

2.点击购买证书按钮
_2

3.选择免费型DV SSL,Symantec,点击立即购买按钮。
(这里需要注意,阿里云免费证书一次只能购买一年)
_3

4.进行支付

_4

_5

5.进入证书控制台,并点击申请按钮【可以从第四步跳转过来,也可以按照第一步的方式进来】

_6
6.填写相关信息并点击下一步。

_7
7.点击验证按钮对证书进行验证,也可以在第6步完成后,根据提示进行验证,并等待ca机构审核

_8
8.审核通过后,点击下载按钮,即可下载免费证书。

_9

_10
至此,整个过程完成。 经测试,证书完全可用。
了解更多产品详情可点击加关注-SSL证书安装指南

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

企业云服务器的配置与选择指南

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

现在企业信息化,使用云服务器的越来越普遍了,做为企业上云,在选择云服务器时,应该需要了解哪些方面呢?云服务器 的配置选择,和网站或应用的类型、访问量、数据量大小、程序质量等因素有关,建议和您的网站或应用的开发技术人员沟通,选择最适合您的配置。下面我们就来说说企业如何选择阿里云服务器配置:
614_jpeg

如果您没有技术人员可提供建议,可以参考我们的建议进行配置选择。网站初始阶段访问量小,只需要一台低配置的服务器即可,应用程序、数据库、文件等所有资源均在一台服务器上。

云服务器具有强大的弹性扩展和快速开通能力。随着业务的增长,你可以随时在线增加服务器的CPU、内存、硬盘以及带宽等配置,或者增加服务器数量,无需担心低配服务器在业务突增时带来的资源不足问题,不让一个用户流失。

企业云服务器一般是用来放网站、APP、或者小程序之类的应用,网站也分很多种,不同网站对于云服务器的配置要求也不一样,下面我们从不同网站所需的云服务器配置来了解。

企业展示类网站
企业展示类网站一般只用来放企业介绍、产品展示、企业动态等这类静态内容,访问流量一般也不会很大,对于云服务器的配置要求不是很高,可以选择下面两种配置的云服务器:
1核CPU | 1G内存 | 1Mbps带宽
2核CPU | 4G内存 | 1Mbps带宽

企业功能型网站
企业功能型网站一般有在线购物功能、在线直播功能、论坛功能等等,这类网站因为程序本身所需的配置比较大,如果访问量大一点的话,对于云服务器的配置要求就比展示类网要高,推荐下面两种配置的云服务器:
4核CPU | 4G内存 | 3Mbps带宽
4核CPU | 8G内存 | 5Mbps带宽

另外阿里云官网其实也针对一些不知道如何选择云服务器配置的用户做了专门的推荐购买配置,很有指导意义的。
阿里云官网推荐购买页

_
对于一些大企业网站,如果访问量特别大的情况下,就需要8核CPU | 16G内存 | 10Mbps带宽或者以上配置的云服务器了,当然前期可以选择配置稍低一点,如果不够用再升级也是可以的。

服务器搭配负载均衡
当您的业务需求较高时,您可以选择较高配置的服务器,或者采用多台稍微低配的服务器,搭配负载均衡服务,通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。
6142_

环境配置
云服务器购买好了之后,还需要配置网站或应用所需要的环境才能够正常运行,您可以根据自己的实际情况,选择以下几种方式进行服务器环境配置:

自主配置环境

您可以找技术人员进行环境配置,或者通过学习网上的环境配置教程,自己尝试进行配置(通过搜索php环境配置,java环境配置等关键词,可找到大量教程),现在有很多环境集成安装包,一个环境包就可以安装好所有的环境软件,比如目前使用很多的宝塔管理系统、WDCP管理系统等等。但我们不推荐非技术人员自己进行环境配置。

服务商代维
现在有阿里云有合作的云服务器代运维服务商,可以通过阿里云市场找这样的服务商代配置环境,不过是需要费用的,但可以省心很多。

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

阿里云免费套餐上云实践

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

一、进入首页,最新活动 —》新手上路 –》阿里云免费套餐 –》免费领取
_1

领取完之后,为了接下来在服务器上发布项目一切顺利,需要修改些许配置。
修改实例密码:
控制台 –》云服务器ECS –》云服务器 –》 重置实例密码
_2

然后修改下服务器的安全组,这样才可以在远程浏览器访问服务器和连接数据库:
控制台 –》云服务器ECS –》网络与安全 –》安全组 –》配置规则 –》添加安全组规则
可以根据需要进行限制,下面这样配置就什么访问都放行了:
_3

加入安全组后,重启服务器,就可以通过Shell连接阿里云服务器了。
_4

二、连接配置服务器环境
Shell连接阿里云服务器:账号就是服务器的IP,密码是刚刚修改的重置实例密码,连接成功如下:
我修改了服务器的自己名字,之前是:i-wz9dg8xo32rid090o9tu,我改为:tjt
_5

刚刚购买的阿里云服务器里面空空如也,什么也没有,根据自己的项目都需要,在服务器上配置必要的环境;
这里初步简单安装了:JDK、Mysql、Redis和Tomcat;

1、安装JDK:
由于是完全空的服务器,不用卸载之前的openJDK,直接上传JKD安装,安装了太多遍了…..
安装好之后检查下:
_6

2、安装Tomcat
Tomcat安装步骤也是很简单,安装了好多遍啊……
Tomcat安装OK后检查下:
_7

运行tocmat,访问apace首页:
[root@tjt bin]# startup.sh
Using CATALINA_BASE: /usr/tomcat/apache-tomcat-8.5.39
Using CATALINA_HOME: /usr/tomcat/apache-tomcat-8.5.39
Using CATALINA_TMPDIR: /usr/tomcat/apache-tomcat-8.5.39/temp
Using JRE_HOME: /opt/jdk1.8.0_181
Using CLASSPATH: /usr/tomcat/apache-tomcat-8.5.39/bin/bootstrap.jar:/usr/tomcat/apache-tomcat-8.5.39/bin/tomcat-juli.jar
Tomcat started.
[root@tjt bin]#

可以访问如下界面则tocmat安装OK了:
_8

3、安装Mysql
Mysql安装好后同样也检查下:
[root@tjt bin]# mysql -V
mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper
[root@tjt bin]# mysql -uroot -p
_9

可以设置Mysql开机启动:
[root@tjt bin]# systemctl enable mysqld
mysqld.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysqld on
[root@tjt bin]# systemctl daemon-reload
[root@tjt bin]#

4、安装Redis
想装就装,接下来的项目运行需要Redis,所以我才勉为其难的安装下;
Redis装好后同样也检查下时候OK:
[root@tjt ~]# cd /opt/redis-5.0.5
[root@tjt redis-5.0.5]# redis-server
_10

三、发布项目
万事具备只欠东风,接下来只需要把项目放到服务器上就大功告成了,这里没有发布War包,是一个Springboot项目的Jar包。
1、准备好项目之后,为了方便起见,在本地连接远程服务器的Mysql数据库,运行项目的sql脚本;
测试链接远程服务器Mysql:
_11
本地执行好项目数据库脚本后也可以到服务器的Mysql检查下是否有相应的表:
_12

2、在Idea或者Eclipse或者直接使用命令将项目打包,注意修改数据库和Redis配置与阿里云服务器安装的配置一致,主要想要修改的就这些配置,然后直接打包:
_13

打包:Run As–》Maven Install:
_14

3、运行Jar包
在LINUX系统下运行JAR包的命令如下:
1、java -jar xxxxx.jar // 当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
2、java -jar xxxxx.jar & //当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
3、nohup Java -jar xxxxxx.jar & //意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
4、nohup Java -jar xxxxxx.jar >aa.log //指定输出日志文件,意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
另外:
通过指令ps -ef | grep java 可以查看进程
kill -9 xxxxx 可以kill进程
这么运行Jar包,当关闭sh连接窗口后项目也随之终止:
[root@tjt test-wrs]# java -jar hrserver-0.0.1-SNAPSHOT.jar
_15
这么运行Jar包,就算关闭sh连接窗口后项目仍然可以继续骚:
[root@tjt test-wrs]# nohup java -jar hrserver-0.0.1-SNAPSHOT.jar 619.log
_16

最后在浏览器中测试访问远程服务器的IP加8082端口:http://47.XX.XX.1:8082/index.html
_17

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

阿里云ECS实例邮件发送不了的解决办法

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

最近要做一个定时任务错误信息实时转发到邮件,由于用的阿里云服务器一直不成功,在网上找了下原因:

是因为阿里云服务器关闭了25端口,发送邮件才会显示链接超时,而且官方不允许打开该端口,而且大部分邮件都是通过25端口,在网上找了个还不错,以网易163邮箱为例,使用SSL下的465端口。

具体操作:

一、请求数字证书

mkdir -p /root/.certs/ ####创建目录,用来存放证书

echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > ~/.certs/163.crt ####向163请求证书

certutil -A -n “GeoTrust SSL CA” -t “C,,” -d ~/.certs -i ~/.certs/163.crt ####添加一个SSL证书到证书数据库中

certutil -A -n “GeoTrust Global CA” -t “C,,” -d ~/.certs -i ~/.certs/163.crt ####添加一个Global 证书到证书数据库中

certutil -L -d /root/.certs ####列出目录下证书

二、配置发件人

输入命令: vi /etc/mail.rc

配置如下

For Linux and BSD, this should be set.

set bsdcompat

set from=xxxxxx@163.com

set smtp=smtps://smtp.163.com:465

set smtp-auth-user=xxxxxx@163.com

set smtp-auth-password=xxxxxxx #此密码为第三方登录密码

set smtp-auth=login

set ssl-verify=ignore

set nss-config-dir=/root/.certs

三、测试
echo “test” | mail -s “zabbix” xxxxxxx@qq.com

登陆收件人邮箱查看
看似成功但是linux中报错:证书不被信任

四、解决最后一个问题—–证书不被信任

cd /root/.certs/

certutil -A -n “GeoTrust SSL CA – G3” -t “Pu,Pu,Pu” -d ./ -i 163.crt

成功标志:
Notice: Trust flag u is set automatically if the private key is present.

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

域名dns的解析原理

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

DNS域名解析是互联网上非常重要的一项服务,上网冲浪(还有人在用这个词吗?)伴随着大量DNS服务来支撑,而对于网站运营来说,DNS域名解析的稳定可靠,意味着更多用户的喜欢,更好的SEO效果和更大的访问流量。我们先了解一下什么是DNS:

DNS,就是Domain Name System的缩写,翻译过来就是域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库。DNS能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。

下面这张图,详细说明了一个DNS域名解析的全过程:
11

下面来详细解释DNS域名解析的过程:

网络客户端就是我们平常使用的电脑,打开浏览器,输入一个域名。比如输入www.myshu.org,这时,你使用的电脑会发出一个DNS请求到本地DNS服务器。本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动。

查询m.myshu.org的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地DNS服务器还要向DNS根服务器进行查询。

根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址。

本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。

最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。

关于DNS解析的TTL参数:
我们在配置DNS解析的时候,有一个参数常常容易忽略,就是DNS解析的TTL参数,Time To Live。TTL这个参数告诉本地DNS服务器,域名缓存的最长时间。用阿里云解析来举例,阿里云解析默认的TTL是10分钟,10分钟的含义是,本地DNS服务器对于域名的缓存时间是10分钟,10分钟之后,本地DNS服务器就会删除这条记录,删除之后,如果有用户访问这个域名,就要重复一遍上述复杂的流程。

其实,如果网站已经进入稳定发展的状态,不会轻易更换IP地址,我们完全可以将TTL设置到协议最大值,即24小时。带来的好处是,让域名解析记录能够更长时间的存放在本地DNS服务器中,以加快所有用户的访问。设置成24小时,其实,还解决了Googlebot在全球部署的服务器抓取网站可能带来的问题。

阿里云之所以只将TTL设置成10分钟,是为了让域名解析更快生效而已。因为之前的解析会在最长10分钟之后失效(本地DNS服务器将对应的解析条目删除),然后新的解析生效。如果是24小时,这个生效的时间最长就是24小时,甚至更长(本地DNS服务器要有用户请求,才会发起查询)。
更多域名知识介绍,请参考阿里云官方产品文档-域名

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

如何导入本地镜像到阿里云ECS服务器

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

镜像导入的使用场景
在操作之前,我们来介绍一下镜像导入的使用场景。
一种情况是,我们需要把线下环境整体搬到云上,这种情况可能有以下特征。
1.线下预部署好的服务器
2.需要在线下进行测试和调试的服务
3.应用需要在线下激活且允许移动的服务
4.线下老旧的物理服务器需要上云
5.另一种情况是,阿里云当前没有可用的操作系统类型供选择。比如说,操作系统类型没有、操作系统版本已经下线、线下定制的操作系统。

阿里云镜像导入的限制
不同于本地服务器,阿里云服务器ECS的镜像导入还是有一些限制的。
791

对于Linux系统,我们在导入镜像之前可以使用阿里云提供的镜像规范检测工具,检测各项配置指标是否合规。
检测命令如下:
wget http://docs-aliyun.cn-hangzhou.OSS.aliyun-inc.com/assets/attach/73848/cn_zh/1557459863884/image_check

chmod +x image_check

sudo <检测工具所在路径>/image_check –p [目标路径]

sudo ./image_check
参考资料:阿里云帮助中心-镜像规范检测工具

导入镜像步骤
首先打开OSS的控制台选择一个bucket,选择上传文件,上传已经本地已经做好的镜像,支持RAW和VHD格式。792
这里我们已经上传了一个镜像,点击获取地址。793
在弹窗中点击获取并复制生成的地址。794
注意镜像文件上传的OSS区域,要和ECS同区域。接下来,我们进入ECS服务器控制台,进入镜像栏目,然后点击导入镜像。795
这里要注意,要先确认ecs官方服务账号可以访问对应的OSS权限。796
如果没有授权,点击授权即可。797
授权后重现回到导入镜像界面。798
镜像所在地:选择和OSS同一地域
OSS Object地址:填写刚才生成的OSS文件访问地址
镜像名称:我们这里填demo5
操作系统:我们选择Linux
系统盘大小:注意这个大小不是指镜像文件的大小,而是我们创建这个镜像时所占用的磁盘空间大小,我们这里填40
系统架构:选择对应的架构,我们这里是X86_64
系统平台:centOS
镜像格式:可选RAW和VHD,我们这里选择VHD

填写完成后,点击确认。799
这样我们就创建成功了,对应的镜像正在创建中,创建完成后,我们就可以用这个镜像部署服务器环境了。您掌握了吗?

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

阿里云学生优惠服务器购买并配置可视化CentOS7教程

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

免费套餐或学生套餐购买一台阿里云服务器
如果你是学生或者新注册用户,一般可以使用学生优惠或着有新用户的免费试用,用来学习部署云服务器最为合适。
学生套餐
https://promotion.aliyun.com/ntms/act/campus2018.html
_2

免费套餐
_1

:本教程使用的是阿里云学生套餐服务器,使用学生套餐或者免费套餐目的主要是节约开支,测试安装效果,毕竟学生或者免费套餐云服务器配置相对较低,如果您的应用对云服务器要求较高,建议购买更高配置的阿里云ECS云服务器。

购买服务器
服务器的地域都可以,我本人选的华南。
镜像版本
不论是CentOS还是Ubuntu,只要是Linux的版本都行,就是不建议Window Sever。
_3

2、去控制台查看服务器状态
_4

_5
3、设置安全组
所谓的安全组,是指服务器开放什么端口,默认只开放22和3389端口。
其中,入方向指外网访问服务器的端口,出方向指服务器对外网进行访问的端口。
_6

配置安全组
_7

在入方向点击添加安全组规则,
_8

_9

安全组配置完成后,需要对具体的实例导入刚刚配置好的安全组规则:

_10
更多安全组设置教程,可参考阿里云帮助中心-云服务器ECS>安全>安全组>添加安全组规则

4、下载操作工具
工具:
MobaXterm:https://mobaxterm.mobatek.net/download.html
Navicat:(网上很多,自行百度)
1、连接登录:
_11

2、连接成功效果
_12

之后服务器就部署好了,之后只需要给服务器配置好对应的开发环境配置(如Java开发环境、Tomcat等),便可以耍起来啦!至此,我们利用使用阿里云学生云服务器配置可视化CentOS7就完成了。

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

阿里云ECS服务器被植入挖矿木马解决过程分享

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]

阿里云ECS服务器是目前很多网站我们在使用的,但是如果安全做的不够好,有时候就会被植入木马,例如我们有时候会收到阿里云的短信提醒,提醒服务器存在挖矿进程,请立即处理的安全告警。

出现这种情况往往网站都无法正常的打开,卡的连服务器SSH远程连接都进不去,给我们造成了很大的影响。

这时候我们就需要对云服务器做安全检测了,登录阿里云的控制平台,通过本地远程进去,发现我们服务器CPU达到百分之100,查看了服务器的CPU监控记录,平常都是在百分之20-35之间浮动,我们TOP查看进程,追踪查看那些进程在占用CPU,通过检查发现,有个进程一直在占用,从上面检查出来的问题,可以判断我们的服务器被植入了挖矿程序,服务器被黑,导致阿里云安全警告有挖矿进程。
原来是我们的服务器中了挖矿木马,我们来看下top进程的截图:
523

我们对占用进程的ID,进行查找,发现该文件是在linux系统的tmp目录下,我们对该文件进行了强制删除,并使用强制删除进程的命令对该进程进行了删除,CPU瞬间降到百分之10,挖矿的根源就在这里,那么黑客是如何攻击服务器,植入挖矿木马程序的呢?通过经验判断,我们的网站可能被篡改了,我们需要立即展开对我们网站的全面安全检测,如何我们使用的是dedecms建站系统,开源的php+mysql数据库架构,对所有的代码以及图片,数据库进行了安全检测,果不其然发现了问题,网站的根目录下被上传了webshell木马文件。

这次服务器被植入挖矿木马程序的漏洞根源就是网站存在漏洞,我们对dedecms的代码漏洞进行了人工修复,包括代码之前存在的远程代码执行漏洞,以及sql注入漏洞都进行了全面的漏洞修复,对网站的文件夹权限进行了安全部署,默认的dede后台帮我们做了修改,以及增加网站后台的二级密码防护。

清除木马后门,对服务器的定时任务里,发现了攻击者添加的任务计划,每次服务器重启以及间隔1小时,自动执行挖矿木马,对该定时任务计划进行删除,检查了linux系统用户,是否被添加其他的root级别的管理员用户,发现没有添加。对服务器的反向链接进行查看,包括恶意的端口有无其他IP链接,netstat -an检查了所有端口的安全状况,发现没有植入远程木马后门,对我们的端口安全进行了安全部署,使用iptables来限制端口的流入与流出。

至此我们服务器中挖矿木马的问题才得以彻底的解决,关于挖矿木马的防护与解决办法,总结一下几点:
1.定期的对网站程序代码进行安全检测,检查是否有webshell后门,对网站的系统版本定期的升级与漏洞修复,网站的后台登录进行二次密码验证,防止网站存在sql注入漏洞,被获取管理员账号密码,从而登录后台。
2.使用阿里云的端口安全策略,对80端口,以及443端口进行开放,其余的SSH端口进行IP放行,需要登录服务器的时候进阿里云后台添加放行的IP,尽可能的杜绝服务器被恶意登录。

如果您也遇到服务器被阿里云提示挖矿程序,不妨按上面的做法试试。

阿里云服务器:[活动地址]

购买可领取:[阿里云2000元代金券]