简介
tcp的连接状态对于web服务器来说很重要,我们可以根据tcp状态判断服务器是否受到了攻击,打开的连接是否过多等。
tcp状态
LISTEN:等待从任何远端TCP 和端口的连接请求。
SYN_SENT:发送完一个连接请求后等待一个匹配的连接请求。
SYN_RECEIVED:发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。
ESTABLISHED:表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。
FIN_WAIT_1:等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。
FIN_WAIT_2:等待远端TCP 的连接终止请求。
CLOSE_WAIT:等待本地用户的连接终止请求。
CLOSING:等待远端TCP 的连接终止请求确认。
LAST_ACK:等待先前发送给远端TCP 的连接终止请求的确认(包括它字节的连接终止请求的确认)
TIME_WAIT:等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。
TIME_WAIT 两个存在的理由:
1.可靠的实现tcp全双工连接的终止;
2.允许老的重复分节在网络中消逝。
CLOSED:不在连接状态(这是为方便描述假想的状态,实际不存在)
主机安排
主机名 | IP地址 | 功能 |
n1 | 192.168.231.20 | zabbix-server |
n2 | 192.168.231.21 | zabbix-agent |
zabbix-agent客户端配置
获取tcp连接状态命令
[root@n4 ~]# ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
LISTEN 7
ESTAB 1
TIME-WAIT 22
创建获取tcp连接状态的脚本
[root@n4 ~]# mkdir /etc/zabbix/scripts
[root@n4 ~]# mkdir /etc/zabbix/tmp
改变tmp文件属主和属组为zabbix
[root@n4 ~]# chown -R zabbix.zabbix /etc/zabbix/tmp
[root@n4 ~]# vim /etc/zabbix/scripts/tcp_status.sh
#!/bin/bash
#tcp_status
[ $# -ne 1 ] && echo "Usage:CLOSE-WAIT|CLOSED|CLOSING|ESTAB|FIN-WAIT-1|FIN-WAIT-2|LAST-ACK|LISTEN|SYN-RECV SYN-SENT|TIME-WAIT" && exit 1
ss_file=/etc/zabbix/tmp/ss.txt
tcp_status_fun(){
tcp_stat=$1
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s)print k,s[k]}' > ${ss_file}
tcp_stat_value=$(grep ${tcp_stat} $ss_file | awk {'print $NF'})
if [ -z "$tcp_stat_value" ];then
tcp_stat_value=0
fi
echo $tcp_stat_value
}
tcp_status_fun $1
赋予执行权限
[root@n4 ~]# chmod +x /etc/zabbix/scripts/tcp_status.sh
创建自定义的key
[root@n4 ~]# vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf
UserParameter=tcp_status[*],/etc/zabbix/scripts/tcp_status.sh $1
修改客户端配置文件
[root@n4 ~]# egrep -v "^$|#" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.231.20 #zabbix-server的IP地址
ServerActive=127.0.0.1
Hostname=192.168.231.23 #设置主机名
Include=/etc/zabbix/zabbix_agentd.d/*.conf
重启zabbix-agent
[root@n4 ~]# systemctl restart zabbix-agent.service
zabbix-server服务端配置
获取ESTAB,打开的连接数
[root@n1 ~]# zabbix_get -s 192.168.231.23 -p 10050 -k tcp_status[ESTAB]
2
zabbix-server的web界面设置
配置-》主机-》创建主机
创建应用集(这里已经创建过)
创建监控项(名称自定义,键值为客户端设置的,"[ ]"中填写tcp状态变量)
创建完成的11个tcp状态监控项
创建图形
查看,监测-》图形-》选择群组,主机,图形