每周一坑-生产环境出口流量报警排查 今天加班到7点,颇坑的,老板应该想把我弄死(这女的专业能力好菜,还不会分析问题,想问题不够全面),一路上他一直引导我如何挖掘问题本质,是个好老板,只能怪自己思考不周,下面是我总结好的经验,希望运维同胞们,别像我犯傻,然后要细心。幸好系统刚上线没造成什么影响。 这个是我手写总结下来的:
然后梳理如下:
在17点26分快下班的时候,收到入口出口流量报警,老板叫我查下是什么情况,我第一反应是一并告诉电信WAF技术,看看是不是有攻击IP,后来WAF那边确实查到有两个IP是访问比较多WAF技术查到的:
老板第一件事想了解清楚服务器端口究竟开了什么,开的情况又是怎么样的,这些过来的IP是否都是从WAF上转过来的。
怎么测试呢,在浏览器上输入这个报警服务器的公网IP,是否能访问到。当时测试的时候是可以的,现象是输入IP,IP会跳转到域名,虽然域名已经接入了WAF。当时我排查的时候,给安全组规则老板看,说80、443端口只开了WAF白名单,不应该会这样。
这个问题会导致,很难判断出,攻击IP究竟是直接从WAF那边过来攻击的,还是直接对这个服务器公网IP进行攻击(虽然ping这个域名返回的是WAF的IP,但是很难说人家)。正常情况下,公网IP访问是不行的,如下图:
后来从该服务器上查看iptables规则,下面这两条规则忘记注释,以至于浏览器打开服务器公网IP,直接跳转到域名。
iptables,这两条忘记注释了正常来说应该只能是:
-A INPUT -s 【WAF白名单IP段】 -p tcp -d 【服务器内网IP地址】 --dport 80 -j ACCEPT -A INPUT -s 【WAF白名单IP段】 -p tcp -d 【服务器内网IP地址】 --dport 443 -j ACCEPT
说到这里必须提下,在天翼云上,只需要在安全组或者服务器iptables,两者选其一,去设置就能达到效果,但阿里的服务器就比较严格了,控制台的安全组和服务器iptables都要设置才能生效,开其一,就会全开放。
另外排查过程中,不应该开ping,所以iptables加条这样的规则:
从系统默认的:-A INPUT -p icmp -j ACCEPT 改成
-A INPUT -p icmp -j DROP
第二个问题,这些访问高的IP过来访问什么了?
这个就要分析nginx日志了,先贴个nginx日志格式,用这个日志格式是因为能导入到elk5.2.1上,进而放到granfa分析日志
log_format elk_logs '{"@timestamp":"$time_iso8601",' '"host":"$hostname",' '"server_ip":"$server_addr",' '"client_ip":"$remote_addr",' '"xff":"$http_x_forwarded_for",' '"real_remote_addr":"$real_remote_addr",' '"domain":"$host",' '"url":"$uri",' '"referer":"$http_referer",' '"upstreamtime":"$upstream_response_time",' '"responsetime":"$request_time",' '"status":"$status",' '"size":"$body_bytes_sent",' '"protocol":"$server_protocol",' '"upstreamhost":"$upstream_addr",' '"file_dir":"$request_filename",' '"http_user_agent":"$http_user_agent"' '}';
这个是查报警时间段内,IP的数量
cat 日志名.log | sed -n '/2022-10-11T17:00:18+08:00/, /2022-10-11T17:30:29+08:00/p' | cut -d '"' -f 20 | sort -nr |uniq -c |sort -nr
特意说下时间段必须要精确,也就是说起始时间(2022-10-11T17:00:18+08:00),结束时间(2022-10-11T17:30:29+08:00)在nginx日志里,是能查到日志记录的,千万不要写成人为自以为有的但日志没有的,例如,2022-10-11T17:00:00+08:00和2022-10-11T17:30:00+08:00,我当时就是这样写,半天没有返回
然后找WAF给来的两个访问特别高的IP,在这段时间访问了什么url,这个时候就有问题了,
cat Nginx日志 | sed -n '/2022-10-11T17:00:18+08:00/, /2022-10-11T17:30:29+08:00/p' |grep 113.110.75.94 |cut -d '"' -f 32 |sort |uniq -c | sort -nr
然后老板就疑惑,WAF技术给来的IP访问的数量那么多,这里查不应该那么少,实际上是我后端nginx日志没开,只开了前端,我的锅
为啥老板会想到查后端应用服务器的nginx日志,因为云监控看到这台服务器内网流量很高,这台服务器是没有公网ip的,出口是通过报警那台服务器出的,所以有可能是这个应用服务器做了什么,但由于当时我后端nginx日志没有配置,查不出什么,所以,嗯,怪我
最后提醒下,nginx日志分析的那些命令,最好做个针对设置的nginx日志格式模板,这样拿来就用,我当时是直接数字段位置(通过双引号,人眼看在第几段),所以给老板看的时候挺慢的,而且忘记了时间要精确匹配,老板一度怀疑我是不会写命令的,问我是不是目录上没有这个文件(o(╯□╰)o 。。。 囧)
洗洗睡,经一事长一智 = =
标签:00,nginx,IP,报警,排查,一坑,WAF,服务器,日志 From: https://www.cnblogs.com/windysai/p/16782993.html