购买的服务器难免会遇到被攻击的情况,当我们发现服务器状态异常时,可以通过连接当前服务器的ip排查一下,并对可疑ip进行封锁禁止。我们可以通过路由跟踪来查看可疑ip。以下是两种解决方案。
netstat是一个用于监视网络连接和网络统计信息的命令行工具。通过ChatGPT我们可以了解到它有以下功能:
那么本次我们需要用到iptables的功能主要是1、2、3。
# 查看连接当前服务器的所有ip
netstat -nat
这样我们可以排查到连接到当前服务器的所有ip。攻击者往往通过击垮服务器的某些服务来达到数据破坏,并以此为要挟的目的。当然,MySQL服务便是这一现象的重灾区。所以,我们需要排查服务对应的端口连接数,查看连接是否异常。
假设我们的MySQL服务对应的端口是3306
netstat -nat|grep -i '3306'|wc -l
此时会返回当前端口的连接数:
更详细的数据可以使用命令:
netstat -nat|grep -i '3306'
查看那些ip正在访问指定端口:
netstat -tn | grep ':3306' | awk '{print $5}'
接下来可以通过统计nginx的数据访问量和数据访问次数来判断访问ip是否攻击ip。
请参考:
通过nginx日志统计一段时间内ip的访问次数进行排序&访问量统计
以上命令较多,我更建议使用可视化图形,即NextTrace工具
安装:
# Linux 一键安装脚本
bash <(curl -Ls https://raw.githubusercontent.com/sjlleo/nexttrace/main/nt_install.sh)
# GHPROXY 镜像(国内使用)
bash <(curl -Ls https://ghproxy.com/https://raw.githubusercontent.com/sjlleo/nexttrace/main/nt_install.sh)
# macOS brew 安装命令
brew tap xgadget-lab/nexttrace && brew install nexttrace
使用手册:
开始执行:
nexttrace 1.0.0.1
可以看到有一些境外ip在访问,我的服务器一般是作为我的开发环境来用,所以一般不会出现有境外ip访问的情况。那么我可以把这些ip视为攻击ip。
执行命令后,我们可以通过工具返回的MapTrace URL可视化的看到ip信息,点击访问即可。
找到攻击ip后,可以通过以下命令来禁止该ip的访问:
iptables -I INPUT -s ***.***.***.*** -j DROP
当需要解封ip时,需要使用:
iptables -D INPUT -s ***.***.***.*** -j DROP
再次查看访问当前服务器的ip:
nexttrace 1.0.0.1
可以看到境外ip已经消失不见了。