linux应急常用命令+技巧总结

简介: 不输的办法只有一个,就是不上场

常用命令

top # 命令可以直接看到进程实时情况。
ps aux --sort=pcpu | head -10 # 查看cpu占用率前十的进程,有时候可以发现top发现不了的东西
netstat -anpl  # 检查当前存在的连接与监听端口
ps -ef #查看当前系统上运行的所有进程与其使用的命令
w # 查看活动用户
who # 查看当前登录用户(tty 本地登陆  pts 远程登录) /var/log/utmp
last # 查看用户登录日志,查看我们系统的成功登录、关机、重启等情况 /var/log/wtmp
lastb # 查看登陆失败的用户日志 /var/log/btmp
lastlog # 查看所有用户登陆日志 /var/log/lastlog
lsof -i :3306 # 查看谁在使用某个端口
lsof -nPi 查看内部对外的网络连接
Strace 集诊断、调试、统计一体的工具。  `strace -f -p pid` 查看进行的行为
busybox是应急常用的工具。 如果系统命令被替换了可以使用此命令来查看系统相关信息

查看History详细

设置history显示时间和用户名,更方便排查谁在什么时间执行了什么

export HISTTIMEFORMAT="%F %T `whoami` "  #设置history显示时间和用户名






查看文件改动

检查最近创建的php、jsp文件和上传目录 例如要查找24小时内被修改的JSP文件:

find ./ -mtime 0 -name "*.php"

stat /etc/passwd #查看密码文件上一次修改的时间,如果最近被修改过,那就可能存在问题。
cat /etc/passwd | grep -v nologin #查看除了不可登录以外的用户都有哪些,有没有新增的
cat /etc/passwd | grep x:0 #查看哪些用户为root权限,有没有新增的
cat /etc/passwd | grep /bin/bash #查看哪些用户使用shell

与测试环境目录做对比

diff -r {生产dir} {测试dir}

账号

1、查询特权用户特权用户(uid 为0)
root@drunk:~#  awk -F: '$3==0{print $1}' /etc/passwd
root
2、查询可以远程登录的帐号信息
root@drunk:~# awk '/\$1|\$6/{print $1}' /etc/shadow
root:$6$xJe1PRKN$U33UxLJ6zr3Iar4TQuaLdLSu9cmEo3DfKwE6mBmzq2Du5QeW5UOa6545wPADMpWbPrCSALA6cU6FSU8IcE9XwL1:18652:0:99999:7:::
root@drunk:~#

域名hosts

有一些挖矿程序会修改 /etc/hosts文件,请看一下其中内容是否被更改过

前两天在另外的项目组上发现的某个挖矿病毒就会修改hosts文件

这是从那台服务器上提取的一些恶意的配置内容

0.0.0.0 aliyun.one
0.0.0.0 evle.org

日志

secure是应急中最常用的文件,主要记录系统存取数据的文件。日志默认存放位置:/var/log/,日志总是能发现一些蛛丝马迹。

日志文件 说明
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
/var/log/utmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询
/var/log/secure 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

注:secure 在一些较新的linux已经被rsyslog替换,下面命令中的/var/log/secure 可以尝试换成/var/log/auth.log

1、定位有多少IP在爆破主机的root帐号:    
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些IP在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
2、登录成功的IP有哪些:     
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
或者last命令,它会读取位于/var/log/wtmp的文件,并把该文件记录的登录系统的用户名单,全部显示出来。
登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' 
3、增加一个用户kali日志:
Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali
, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
#grep "useradd" /var/log/secure 
4、删除用户kali日志:
Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
# grep "userdel" /var/log/secure
5、su切换用户:
Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)
sudo授权执行:
sudo -l
Jul 10 00:43:09 localhost sudo:    good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now

常用的shell命令

find、grep 、egrep、awk、sed

1、grep显示前后几行信息:

标准unix/linux下的grep通过下面參数控制上下文:
    grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行
    grep -B 5 foo file 显示foo及前5行
    grep -A 5 foo file 显示foo及后5行
    查看grep版本号的方法是
    grep -V

2、grep 查找含有某字符串的所有文件

grep -rn "hello,world!" 
    * : 表示当前目录所有文件,也可以是某个文件名
    -r 是递归查找
    -n 是显示行号
    -R 查找所有文件包含子目录
    -i 忽略大小写

3、如何显示一个文件的某几行:

cat input_file | tail -n +1000 | head -n 2000
#从第1000行开始,显示2000行。即显示1000~2999行

命令替换后门

黑客会替换替换top、ps等命令

检测

stat命令查看文件状态并且使用md5sum命令查看文件hash并将其与正常文件hash进行比较。如果确定被替换,使用正常文件替代坏文件即可



工具

1.利用自动化检测程序rookithunter进行检测

rookithunter可以自动化检查主机上可能存在的rookit木马文件,与被篡改的命令等,找到被篡改的命令后可以选择删除命令,然后重新安装命令。

# centos
yum install -y rkhunter
# ubuntu
apt-get install rkhunter
rkhunter --update #更新rkhunter版本
rkhunter --propupd #更新rkhunter的特征数据库
# 常见命令
rkhunter --check --sk #自动检测每个部分中间不需要暂停
rkhunter --check #自动检测每个部分,每监测完一个部分中断一次,输入enter之后会继续检测下个部分
rkhunter -c --sk --rwo #自动检测并只显示告警信息

webshell查杀

使用Webshell查杀工具 Windows下D盾等,Linux下河马等

河马webshell查杀:http://www.shellpub.com
深信服Webshell网站后门检测工具:http://edr.sangfor.com.cn/backdoor_detection.html


相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
4月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
504 1
二、Linux文本处理与文件操作核心命令
|
4月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
346 137
|
4月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
792 57
|
7月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
658 143
linux命令—tree
|
3月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
632 2
|
4月前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
376 0
Linux内存问题排查命令详解
|
4月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
356 16
|
6月前
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
1127 13
|
7月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
1298 21
|
7月前
|
监控 Linux
Linux系统中使用df命令详解磁盘使用情况。
`df`命令是Linux系统管理员和用户监控和管理磁盘空间使用的重要工具。掌握它的基本使用方法和选项可以帮助在必要时分析和解决空间相关问题。简洁但功能丰富,`df`命令确保了用户可以快速有效地识别和管理文件系统的空间使用情况。
505 13