系统排查
系统基本信息
CPU 信息
CPU 信息:lscpu
操作系统信息
操作系统信息:uname -a
操作系统信息:cat /proc/version
模块信息
模块信息:lsmod
账户信息
系统所有账户
系统所有账户:cat /etc/passwd
超级权限账户
超级权限账户:awk -F: ‘{if($3==0)print $1}’ /etc/passwd
可登录账户
可登录账户:cat /etc/passwd | grep ‘/bin/bash’
最近20条登录失败信息
最近20条登录失败信息:lastb | head -n 20
所有账号最后登录信息
所有账号最后登录信息:lastlog
最近20条登录信息
最近20条登录信息:last | head -n 20
当前登录账号信息
当前登录账号信息:who
空口令账号
空口令账号:awk -F: ‘{if($2==0)print $1}’ /etc/shadow
启动项
启动项:ls -lat /etc/init.d/
启动项:cat /etc/init.d/rc.local
启动项:cat /etc/rc.local
计划任务
当前计划任务
当前计划任务:crontab -l
Linux Crontab 计划任务
/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
/etc/crontab 这个文件负责调度各种管理和维护任务。
/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
crontab [-u username] //省略用户表表示操作当前用户的crontab
-e (编辑工作表)
-l (列出工作表里的命令)
-r (删除工作作)
我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。
crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有
- 取值范围内的所有数字
/ 每过多少个数字
- 从X到Z
,散列数字
实例1:每1分钟执行一次myCommand
-
-
-
-
- myCommand
-
-
-
实例2:每小时的第3和第15分钟执行
3,15 * * * * myCommand
实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand
实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb
0 */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
0 23-7/1 * * * /etc/init.d/smb restart
创建、编辑计划任务的命令为crontab -e
查看当前计划任务的命令为crontab -l
删除某条计划任务的命令为crontab -r
另外,如果您是以管理员的身份登录的系统,还可以在crontab命令中加上-u参数来编辑他人的计划任务。
crontab命令的参数及其作用
参数 作用
-e 编辑计划任务
-u 指定用户名称
-l 列出任务列表
-r 删除计划任务
分、时、日、月、星期 命令
如果有些字段没有被设置,则需要使用星号(*)占位
使用crond设置任务的参数字段说明
字段 说明
分钟 取值为0~59的整数
小时 取值为0~23的任意整数
日期 取值为1~31的任意整数
月份 取值为1~12的任意整数
星期 取值为0~7的任意整数,其中0与7均为星期日
命令 要执行的命令或程序脚本
在crond服务的配置参数中,一般会像Shell脚本那样以#号开头写上注释信息,这样在日后回顾这段命令代码时可以快速了解其功能、需求以及编写人员等重要信息。
计划任务中的“分”字段必须有数值,绝对不能为空或是*号,而“日”和“星期”字段不能同时使用,否则就会发生冲突。
cron是Linux中默认的计划任务。使用cron,你可以安排一个计划(比如:命令或者shell脚本)周期性地运行或者在指定的分钟、小时、天、周、月等特定时间运行。cron在你安排不同的常规维护任务时是很有用的,比如周期性地备份、日志循环、检查文件系统、监测磁盘空间等等
每个cron任务的格式如下。
<分钟> <小时> <日> <月> <星期> <命令>
查看计划任务文件
查看计划任务文件:ls -lat /etc/cron*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/*
/etc/anacrontab
进程排查
网络连接
网络连接:netstat -antlp
查找对应运行程序
查找对应运行程序:ls -lat /proc/20583
查看程序打开文件
查看程序打开文件:lsof -p 20583
结束进程
结束进程:kill -9 20583
Linux kill命令
Linux kill 命令用于删除执行中的程序或工作。
linux 的 kill 命令是向进程发送信号,kill 不是杀死的意思,-9 表示无条件退出,但由进程自行决定是否退出,这就是为什么 kill -9 终止不了系统进程和守护进程的原因。
Linux pkill 命令
Linux pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令。
kill 命令杀死指定进程 PID,需要配合 ps 使用,而 pkill 直接对进程对名字进行操作,更加方便。
pkill -9 php-fpm //结束所有的 php-fpm 进程
Linux killall 命令
Linux killall 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程。
kill 命令杀死指定进程 PID,需要配合 ps 使用,而 killall 直接对进程对名字进行操作,更加方便。
killall -9 php-fpm //结束所有的 php-fpm 进程
查看文件属性
查看文件属性:lsattr filename
移除 i 属性
移除 i 属性:chattr -i filename
查看隐藏进程
ps -ef | awk ‘{print}’ | sort -n | uniq > 1
ls /proc | sort -n | uniq > 2
diff 1 2
查看资源占用率较高的进程
查看资源占用率较高的进程:top
服务排查
系统运行服务
系统运行服务:chkconfig –list
Centos7 查看自启动列表systemctl list-unit-files以及设置服务自启动
系统运行服务:systemctl list-unit-files
所有服务状态
所有服务状态:service --status-all
所有服务状态:
显示所有的服务状态—空格翻页 q推出
systemctl list-units --type service –all
查看启动成功的服务列表
systemctl list-unit-files | grep enabled
查看启动失败的服务列表
systemctl --failed
查看所有服务的状态—空格翻页 q推出
systemctl list-unit-files --type service
文件痕迹排查
敏感目录
/tmp
/usr/bin/
/usr/sbin/
~/.ssh/
/etc/ssh/
时间点查找
find:在指定目录下查找文件
-type b/d/c/p/l/f:查找块设备、目录、字符设备、管道、符号链接、普通文件
-mtime -n +n:按文件更改时间来查找文件,-n 指 n 天以内,+n 指 n 天前。
-atime -n +n:按文件访问时间来查找文件,-n 指 n 天以内,+n 指 n 天前。
-ctime -n +n:按文件创建时间来查找文件,-n 指 n 天以内,+n 指 n 天前。
查找一天内新增的 sh 文件
查找一天内新增的 sh 文件:find / -ctime 0 -name “*.sh”
查看排序后前10行的内容
查看排序后前10行的内容:ls -lat | head -n 10
排查文件创建、修改、访问时间
排查文件创建、修改、访问时间:stat /etc/passwd
特殊文件
特殊权限文件
特殊权限文件:find /tmp -perm 777
WebShell
WebShell:find /var/www/ -name “*.php”
系统命令检测
系统命令检测:ls -lat /bin/ /sbin/
系统命令检测:ls -lah /bin/ /sbin/
后门检测
后门检测:chkrootkit -q | grep INFECTED
SUID 程序排查
SUID 程序排查:find / -type f -perm -04000 -ls -uid 0 2>/dev/null
日志分析
日志概述
/var/log/
/var/log/wtmp 登录进入、退出、数据交换、关机和重启,即last
/var/log/cron 计划任务有关的日志信息
/var/log/messages 系统启动后的信息和错误日志
/var/log/apache2/access.log Apache 访问日志
/var/log/auth.log 系统授权信息,包括账号登录和使用的权限机制
/var/log/userlog 所有等级账号信息日志
/var/log/vftpd.log FTP 日志
/var/log/lastlog 登录的账号,也可以使用命令 lastlog 查看
/var/log/secure 大多数应用输入的账号和密码,以及登录成功与否
/var/log/faillog 登录系统失败的账号信息
日志分析
grep
sed
sort
awk