监控IO性能
iostat -x 磁盘使用,关注%util,超过50%就要重视 iotop 磁盘使用
free 查看内存使用情况 free -m / -g / -h buffer/cache 区别 公式:total=used+free+buffer/cache avaliable包含free和buffer/cache剩余部分
buffer 缓冲 cache 缓存
0000(磁盘)---> 内存(cache)------>cpu
cpu(0000)---->内存(buffer)---->-----磁盘
* buffers/cached(used):实际使用的buffers与cache总量,也是实际使用的内存;buffers/cached(free):未被使用的buffers与cached和未被分配的内存之和,这就是系统当前实际可用的内存。* buffers也是即将被写入磁盘的,cache是被从磁盘中读出来的。
ps命令
ps 查看系统进程 用法:ps aux、ps -elf(查看某个进程存不存在:ps aux | grep xxx)
PID:进程ID,在linux中内核管理进程靠PID来识别和管理某一个进程,终止某个进程,用kill进程的PID有时不能杀掉,则需要加个-9参数, kill -9 进程PID,kill -HUP 进程PID 表示重新加载该进程。
ls -l /proc/PID/ 可以查询到进程是从哪里启动的,对于找攻击源有帮助。
STAT部分说明(STAT表示进程的状态,分为以下几种) D 不能中断的进程(通常为IO) R run状态的进程 S sleep状态的进程(worker process) T 暂停的进程 X 已经死掉的进程 Z 僵尸进程 < 高优先级进程 N 低优先级进程 L 内存中被锁了内存分页 s 主进程(master process) l 多线程进程
- 前台进程
查看网络状态
netstat 查看网络状态 netstat -lnp 查看监听端口 netstat -an 查看系统的网络连接状况 netstat -lntp 只查看tcp的,不包含socket ss -an 和 nestat异曲同工
socket是同台服务器不同进程间进行通信的,而tcp、udp、ip是不同服务器间进行通信的。
三次握手和四次挥手
小技巧:
统计连接状态:
netstat -an | awk '/^tcp/ {++sta[$NF]} END { for(key in sta ) print key , "\t",sta[key]}'
关注ESTABLISHED数值,这个数值即并发连接数,一般几千个。
SYN网络攻击: 原理:
在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。
查看是否有大量的”SYN_RECEIVED“状态,可以排查是否招到攻击。
linux下抓包
tcpdump抓包工具,yum install -y tcpdump
用法:tcpdump -nn
tcpdump -nn -i 网卡名称
tcpdump -nn -i 网卡 port 80
tcpdump -nn -i eth0 tcp and host 192.168.0.1 and port 80 (-nn :显示IP和端口,否则显示主机名和服务名称 ; -i:指定某个网卡)
tcpdump -nn not port 22 and host 192.168.0.100
tcpdump -nn -i 网卡 -vs0 tcp and port not 22 -c 100 -w 1.cap (-v :显示详细信息 ; s0:不限定包的小大 ; not 22 (不抓22端口的包); -c 100 :只抓100个包 ; -w 1.cap : 抓的包写入1.cap文件)
tcpdump -r 1.cap 查看抓包文件
wireshark :yum install -y wireshark
* 抓包分析http请求:tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
类似web访问日志
-R 抓包后过滤 -f 抓包前过滤 -T,-e: 指的是打印这两个字段 -e: 如果-T fields选项指定,-e用来指定输出哪些字段;
以下可以抓取mysql的查询
tshark -n -i eth1 -R 'mysql.query' -T fields -e "ip.src" -e "mysql.query"
或者
tshark -i eth1 port 3307 -d tcp.port==3307,mysql -z "proto,colinfo,mysql.query,mysql.query"
以下可以抓取指定类型的MYSQL查询
tshark -n -i eth1 -R 'mysql matches "SELECT|INSERT|DELETE|UPDATE"' -T fields -e "ip.src" -e "mysql.query"
统计http的状态
tshark -n -q -z http,stat, -z http,tree
这个命令,直到你ctrl + c 才会显示出结果
tshark 增加时间标签
tshark -t ad
tshark -t a