记录一次服务器被攻击,导致的一系列连锁的问题
作者:小牛呼噜噜 | https://xiaoniuhululu.com
计算机内功、JAVA底层、面试、职业成长相关资料等更多精彩文章在公众号「小牛呼噜噜」
大家好,我是呼噜噜。今天发现网站发布文章无法发布,由于我网站是用hexo框架生成的静态网站,在我执行完hexo clean && hexo g && hexo d
后发现,之前一直都没问题,竟然报错了:
1 | Please make sure you have the correct access rights |
这异常信息提示不靠谱,点开链接和这个问题没有太大相关,由于之前从没有遇到过hexo这类问题,笔者第一反应是node_modules
缺少依赖?
- 进入站点根目录
cd D:\GitBog3.0
- 先把
node_modules
目录删除,重新下载依赖 - 清除缓存
npm cache clear --force
- 重新安装依赖包
npm install
重新执行hexo clean && hexo g && hexo d
,发现还是这种异常信息,那应该不是依赖的问题
遇事不决直接上网去百度查Error: Spawn failed
,网上的解决方案:
- 进入站点根目录
cd D:\GitBog3.0
- 删除git提交内容文件夹
rm -rf .deploy_git
- 执行命令:
git config --global core.autocrlf false
- 最后
hexo clean && hexo g && hexo d
但试了一下,很不幸还是不行,不能乱折腾了,我们得分析一下问题,突然发现异常信息上面还有一段信息被忽略了
1 | ssh: connect to host 121.xx.xx.xx port 22: Connection timed out |
虽然不知道下面这段异常信息是什么东东,但是上面这2句,很明显说的就是ssh连接失败!
这就让我想到了最近服务器一直被频繁攻击,24号那天还被恶意登陆,短短2分钟给我塞了一堆木马文件
当时呼噜噜还在快乐地和平精英吃着鸡,被腾讯一顿提醒,手机短信微信邮箱全是警告,手机响个不停
呼噜噜当时丝毫不慌,直接登录服务器后台,不管三七二十一,直接选择关闭服务器,然后继续打游戏去了。
等和小伙伴那把游戏结束了,再开始着手处理这件事:
- 查看登录日志,发现登录的是root账户,还是国外这种可疑的ip地址,问题还是非常严重的。
- 首先把root账号的密码给升级了
- 由于服务器里有一堆木马文件,如果直接去服务器里面找的话,是找不到的,他们被恶意攻击者隐藏了。但是笔者推荐一个简单的常规处理方法,呼噜噜这里以腾讯云举例,其他服务商类似:
登录腾讯云(服务器是腾讯云的),进入控制台 -> 搜索 “主机安全” ->点击左侧”主机列表”,选择你的主机->点击左侧导航菜单“入侵检测”>文件查杀,把所有可疑的文件全部隔离就可以了
都是挖矿什么的,我服务器配置那么垃圾,也看到上?
然后就是,检查服务器其他端口,cpu,内存,磁盘等各项指标,都没啥问题了,开始慢慢恢复网站服务,还有重启各种中间件的容器服务,折腾了一晚上。如果还不行的话,可以参考Linux 入侵类问题排查思路https://cloud.tencent.com/document/product/296/9604
但是过了几天,服务器又被人在国外ip异常登录了,这时候我发现攻击者电脑性能太好了,密码都加了20几位了,还是没几天被破解了。能够想象到服务器的常用端口一直被扫描,特别是ssh默认22端口,稳一手,直接把默认的22端口给禁了,换了一个不常用的端口。
- 以root权限登陆系统,输入
vim /etc/ssh/sshd_config
- 找到
#Port 22
- 在其下面输入新的端口号如:
Port 9999
(这个自己定,最大不能超过65535,也不要把端口泄漏出去)- 编辑好,先按ESC键,再输入 wq 保存退出。
- 接着重新启动ssh ,
systemctl restart sshd.service
#删除或新增都需重启SSH服务,否则不生效。- 最后不要忘了,在防火墙上放开这个
端口9999
大家为了安全可以进一步把root用户给禁了,权限太高有时也很麻烦。
这时候呼噜噜意识到了,我之前把ssh默认端口给改了,hexo d
通过git将网站部署到服务器上时,会去访问ssh登录端口的,我服务器ssh登录端口改了,但是我网站里面的配置文件没同步更改,那我们直接去电脑网站根目录下修改_config.yml
1 | deploy: |
由于我们使用hexo-deployer-git
插件来确保git部署,但是它无法直接修改ssh默认登录端口,我们需要使用下面这种写法
1 | deploy: |
其中:
git
就是用户名111.11.1.11
是服务器的ip地址port
就是端口master
是git私有库的分支/home/git/hexo.git
是服务器上git仓库路径
保存配置文件的修改后,最后我们执行hexo clean && hexo g && hexo d
,发现网站内容正常推送到服务器上了!
其实本文各个解决方案并不复杂,如何找到原因才是更重要的;找到问题的原因,解决起来就事半功倍。另外当我们服务器被攻击后,不用慌张,按照流程一步步就解决问题,校验服务器资源,最后恢复服务。
遇到问题,就一步步的分析异常信息,实在看不出来,可以去尝试尝试,再根据反馈进一步分析,直到找到原因,从而解决问题。最后善于搜索,但是不能完全依赖搜索引擎。
相关阅读:
https://cloud.tencent.com/document/product/296/9604
https://mp.weixin.qq.com/s/whSckb0H9xhKMt-DFgp4TA
https://mp.weixin.qq.com/s/O_-dAgKxk64hiClul0vDQw
本篇文章到这里就结束啦,很感谢靓仔你能看到最后,如果觉得文章对你有帮助,别忘记关注我!
计算机内功、JAVA源码、职业成长、项目实战、面试相关资料等更多精彩文章在公众号「小牛呼噜噜」