应急响应分为5个阶段,准备->事件检测->抑制->根除->恢复->报告
0x01 基础命令:
1、tar -cvf .tar 打包不压缩
tar -zxvf .tar.gz
tar -zcvf .tar.gz c创建文件
tar -jcvf .tar.bz2
gzip .gz
2、uniq
-c 在输出行前面加上每行在文本中出现的次数
(结合sort一起使用)此参数只针对连续出现的相同行做统计,
一旦相同内容行中间有其他内容,则中断统计,然后重新对下面的内容进行统计。
-d 仅显示重复行
-u 仅显示不重复的行
3、sort
-b 忽略每行前面开始出的空格符号。
-n 依照数值大小排序
-r 以相反的顺序来排序
-t 指定栏位分隔字符
4、awk
#cat /etc/passwd |awk -F ':' '{print $1"\t"$7}'
#cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'
显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。
awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。
awk -F: '/root/' /etc/passwd
搜索含有root关键字的所有行
awk -F:
awk -F: '/root/{print $7}' /etc/passwd
‘’ 单引号中可以包含命令(action)
5、sed
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
替换一行中的某部分
格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
# sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替换ruby为bird
# sed -n '/ruby/p' ab | sed 's/ruby//g' #删除ruby
6、wc
-l 统计数量
7、cut
8、scp 利用ssh传输文件
a) 从服务器下载文件到本地
scp username@servername:/path/filename /var/www/local_dir(本地目录)
b)上传本地文件到服务器
scp /path/filename username@serverip:/path
9、stat 查看文件基本信息 stat filename
显示文件的mtime、ctime、atime
----------------------------------------------------------
0x02 预备知识:
1、history -c 清除历史命令
2、如果日志在更新,实时查看 tail -f /var/log/messages
或者 watch -d -n 1 cat /var/log/messages
-d 表示高亮不同的地方,-n表示多少秒刷新一次。
该指令,不会直接返回命令行,而是实时打印日志文件中新增加的内容,
这一特性,对于查看日志是非常有效的。如果想终止输出,按 Ctrl+C 即可
3、linux日志文件说明
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
/var/log/wtmp
4、LINUX中的七种文件类型
d 目录文件。
l 符号链接(指向另一个文件,类似于瘟下的快捷方式)。
s 套接字文件。
b 块设备文件,二进制文件。
c 字符设备文件。
p 命名管道文件。
- 普通文件,或更准确地说,不属于以上几种类型的文件
=>>>>
*ubuntu/var/log/下各个日志文件,方便出现错误的时候查询相应的log
/var/log/alternatives.log-更新替代信息都记录在这个文件中
/var/log/apport.log -应用程序崩溃记录
/var/log/apt/ -用apt-get安装卸载软件的信息
/var/log/auth.log -登录认证log
/var/log/boot.log -包含系统启动时的日志。
/var/log/btmp -记录所有失败启动信息
/var/log/Consolekit - 记录控制台信息
/var/log/cpus - 涉及所有打印信息的日志
/var/log/dist-upgrade - dist-upgrade这种更新方式的信息
/var/log/dmesg -包含内核缓冲信息(kernel ringbuffer)。在系统启动时,显示屏幕上的与硬件有关的信息
/var/log/dpkg.log - 包括安装或dpkg命令清除软件包的日志。
/var/log/faillog - 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
/var/log/fontconfig.log -与字体配置有关的log。
/var/log/fsck - 文件系统日志
/var/log/faillog -包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
/var/log/hp/
/var/log/install/
/var/log/jokey.log
/var/log/kern.log –包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog —记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/faillog –包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
/var/log/lightdm/
/var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
/var/log/mail.err -类似于上面的
/var/log/news/
/var/log/pm-powersave.log
/var/log/samba/ –包含由samba存储的信息。
/var/log/syss.log
/var/log/speech-dispacher/
/var/log/udev
/var/log/ufw.log
/var/log/upstart/
/var/log/uattended-upgrades/
/var/log/wtmp —包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
/var/log/xorg.*.log— 来自X的日志信息
----------------------------------------------------------
0x03 linux下apache日志分析
a) 找到apache日志的位置(locate apache2)
b) 查看访问次数最多的10个IP
awk '{print $1}' access.log|sort|uniq -c|sort -nr|head -n 10
c) 查看访问的时间
d) 查看访问最多的页面
awk '/113.5.x.11/{print $6}{print $7}' access.log|sort|uniq -c |sort -nr
1、查看apache进程:
ps -aux|grep 'httpd'
2、查看80端口的tcp连接:
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
3、通过日志查看当天ip连接数:
cat access_log | grep "19/May/2011" | awk '{print $2}' | sort | uniq -c | sort -nr
4、用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr
5、当前WEB服务器中联接次数最多的20条ip地址:
netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r | head -n 20
6、查看最近访问量最高的文件
cat access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less
tail -f xxx.log
---------------------------------------------------------
0x04 mysql日志:
*主要包含:(修改日志设置,需要到mysql的配置文件my.cnf中进行修改
或者
在mysql下执行set global slow_query_log=1;)
错误日志、查询日志、慢查询日志、事物日志、二进制日志;
错误日志:默认开启,不可禁止。主机名.err
查询日志:默认关闭。该日志默认情况下会记录用户所有的操作,包括增删改查等信息。general_log
慢查询日志:记录执行时间超过指定时间的查询语句。可以找到效率低的查询语句。
事物日志:(InnoDB特有的日志,存储引擎修改表数据时只需要修改其内存拷贝,再把修改行为记录到事物日志当中)
二进制日志(变更日志):*log_bin。
记录修改数据或者有可能引起数据改变的mysql语句,并记录语句发生时间、执行时长、操作的数据等。
->查看二进制文件
mysql>show binary logs; 显示当前服务器使用的二进制文件及大小
mysql>show master logs; 显示主服务器使用的二进制文件的大小
mysql>show master status; 当前使用的二进制文件及其所处位置
*日志的输出位置一般有三种方式:file(文件),table(表),none(不保存);
*查询日志服务是否开启:
show global variables like '%log%';
设置变量:
(使用set session 变量名=value;即表示只在这个session中生效)
set global 变量名=value;
*命令行下查看二进制文件 mysqlbinlog mysql-bin.000017
---------------------------------------------------------
1、检测rootkit:使用chkrootki
2、获取系统日志:
比较重要的二进制日志文件:
utmp,用w工具访问;
wtmp,用last工具访问;
lastlog,用lastlog工具访问;
进程记账日志,用astcomm工具访问
在这些日志文件中,最有用的是messages,secure这两个,从日志中我们可以看到哪些时候哪些用户从哪些地方登陆进系统,这对我们的响应取证非常有用
3、检查用户情况
w 查看当前在线用户
last 查看历史登录用户
4、查看系统、文件异常
查看/etc/passwd文件
查找最近5天内更改的文件: find -type f -mtime 5
bash_history文件
5、系统状态
系统服务: chkconfig
进程:ps -ef 以全格式显示当前所有的进程
ps -aux 显示以用户为主的格式情况下、不以终端机来区分、包括其他用户的进程的所有程序,。
ps -aux |grep 'httpd' 查看apache进程
监听端口:netstat -utnpl
系统所有端口情况:netstat -ano