这里的服务器系统我想特指为Ubuntu/centos,因为其他操作系统我还没接触过,指令可能不互通,但想法是可以互通的。
服务器运行变得迟缓
发现问题
先从怀疑开始吧,如果你发现自己的服务器响应及运行变慢了(持续性的),或者是部署在上面的某些应用崩了,这些情况可能是运行了某些应用过多地消耗了服务器上的配置,或是被人运行了一些恶意程序。
尽管服务器的配置自己心里有点数,但有时候明明只跑了一个博客,或仅仅是搭了个梯子就变得运行迟缓,就应该看看服务器的实时情况。
监控系统状况:top
查看内存情况:free -m
查看进程:ps aux
查看端口状况:netstat -lntp
查看磁盘空间:df -h
以上均为基本的信息查询,如果发现可疑点要进一步查询的,可以自行找相关指令语法。
解决问题
cpu占用率冒高
查看进程,观察有哪些非系统进程占据了过多资源,可视情况选择性关闭。先选择要关闭的进程,记录其PID(第一列):
kill -9 PID
如果不知道当前进程跑的是什么文件,可以到/proc
文件夹里查找相应PID的文件夹,里面会有相应的虚拟文件。
内存不足
这类错误信息往往还会打印在终端上,如果数量不多,可根据显示内容进行操作,一般警告内容会为:
kill process XXX
运行该操作即可。但如果不想关闭该应用或是配置不足导致的,可临时添加swap分区应急。该方法也极度经济实惠,相当于划分部分磁盘当作内存,具体划分多少自行分配:
# cd /var/
# dd if=/dev/zero of=swapfile bs=1M count=1024
# /sbin/mkswap swapfile
# /sbin/swapon swapfile
# echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
相应指令分析:
1,进入/var
目录
2,创建大小为[count值]
的文件块,单位为MB,swap大小可在这里修改
3,创建swap文件,文件名为[swapfile]
,可自行改名
4,激活swap文件
5,令swap开机自启动
建议一步到位,swap转换率不高,内存设置过低需设置多个swap,过高的话删除比较麻烦,至少先要另外设置一个swap,使得被删除的swap不被占用。
rm -rf /var/swapfile
删除后台进程&&释放端口
我遇到的此类进程一般为python脚本,尤其是用gunicorn部署的项目,因为是后台运行的,不懂如何温柔的关闭,只好暴力关闭。
这类进程都是占用端口的,先查看端口命令:
netstat -lntp
如果想关闭特定端口port,则:
netstat -lntp | grep port
然后记录对应PID并关闭即可:
kill -9 PID
磁盘空间不足
首先建议亲去升级配置呢。。。
如果没办法,就删除部分文件吧。
慎重使用,保证删的干干净净,找不回来了
删除文件:
rm file
删除文件夹:
rm -rf dir
还可以写正则表达式批量删除文件:
[先挖个坑,有空回来填]
服务器疑似被入侵
发现问题
发现服务器多了一些不认识的文件,发现部分文件的最新修改日期不在自己的操作时间段,甚至收到vps运行商的安全警告邮件。
贴一些简单的排查指令:
查看服务器的历史操作指令:history
查看上一次登录时间:last
查看在线用户:who
查看上一次登录失败信息:lastb
可结合使用上一部分的指令,发现排查可疑的进程,及时关闭。(可备份研究)
分析问题&&解决问题
历史指令分析
使用history
查看服务器过去所执行的语句(最多记录最近的1000条),从中发现可疑的信息,可快速定位问题根源。
问题不一定是黑客入侵主机引起,有可能是自己的操作不当引起的。
黑客入侵排查
这里主要排查黑客有没有成功登录主机。
由于口令泄露,口令爆破等问题导致黑客入侵主机(或未遂),可以从日志中找到蛛丝马迹。
日志位置:
/var/log
里面记录着各种系统日志,如wtmp(last指令),btmp(lastb指令)等。
根据日志查看可疑的登录操作,若发现帐号在可疑时间段登录,那建议赶紧修改密码:
# passwd
# {输入当前密码}
# {输入新密码}
# {再次输入新密码}
查看所有用户命令:
cat /etc/passwd |cut -f 1 -d :
若发现有新的可疑用户,赶紧删除:
userdel -r username
对服务器杀毒
rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。
使用chkrootkit来杀毒:
# apt install chkrootkit
# chkrootkit
chkrootkit可以在Linux系统中运行基于签名和进程来检查系统中是否存在rootkit。
亦可安装其他杀毒工具。
声明:文中方法可能非常不靠谱!!