宝塔面板可通过netstat/ss命令监控TCP连接状态,结合防火墙限流、计划任务快照及网站日志分析,识别并防御恶意扫描、SYN Flood等攻击。

如果您在宝塔面板中运行网站服务,但发现响应变慢或出现异常连接激增,则可能是由于恶意扫描、SYN Flood 或长连接耗尽等 TCP 层攻击行为所致。以下是监控站点 TCP 连接状态并识别潜在攻击风险的具体操作方法:
一、通过宝塔终端执行 netstat 命令实时查看连接状态
该方法直接调用 Linux 内核网络栈统计信息,可快速获取当前所有与 Web 服务端口(如 80、443)相关的 TCP 连接详情,包括连接数、状态分布及来源 IP,是识别异常连接模式的基础手段。
1、登录宝塔面板,点击左侧菜单栏的【终端】进入命令行界面。
2、输入以下命令查看监听在 80 和 443 端口上的所有 TCP 连接状态:
netstat -tn | grep ':80\|:443' | awk '{print $6}' | sort | uniq -c | sort -nr
3、若需进一步关联来源 IP,执行:
netstat -tn | grep ':80\|:443' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
4、观察输出中 ESTABLISHED 数量是否远超正常并发水平,以及是否存在大量 TIME_WAIT、SYN_RECV 或 FIN_WAIT2 状态连接。
二、使用 ss 命令替代 netstat 获取更高效连接统计
ss 是 iproute2 套件中的现代工具,比 netstat 更快、更准确,尤其适合高并发场景下对连接状态进行低开销采样,能有效减少误判延迟。
1、在宝塔终端中执行以下命令统计 80/443 端口各状态连接数:
ss -tn state all '( dport = :80 or dport = :443 )' | awk '{print $1}' | sort | uniq -c | sort -nr
2、单独筛选疑似攻击特征的 SYN_RECV 连接:
ss -tn state syn-recv '( dport = :80 or dport = :443 )' | wc -l
3、当该数值持续高于 50 且伴随 CPU 使用率上升时,需立即检查是否遭受半连接洪水攻击。
三、配置宝塔防火墙规则并启用连接数限制
宝塔内置防火墙支持基于 IP 的连接频率控制,可在不依赖外部工具的前提下,对单 IP 的新建连接速率实施硬性约束,从而抑制扫描类和连接耗尽类攻击。
1、进入宝塔面板,点击【安全】→【防火墙】→【添加规则】。
2、选择【TCP 协议】,目标端口填写 80,443,动作设为【允许】。
3、在同一条规则下方勾选【启用连接数限制】,设置:单 IP 每分钟新建连接数 ≤ 60,超过后自动拒绝 300 秒。
4、保存规则后,点击【重载防火墙】使配置生效,并观察【防火墙日志】中是否开始记录被限流的 IP 地址。
四、利用宝塔计划任务定期采集并导出连接状态快照
通过定时执行连接状态采集脚本,可形成时间序列数据,便于人工比对突增时段与业务日志,辅助定位攻击发生时间窗口及影响范围。
1、进入【计划任务】→【添加计划任务】,任务类型选择【Shell 脚本】。
2、执行周期设为 每5分钟,脚本内容为:
echo "$(date '+%Y-%m-%d %H:%M') $(ss -tn state established '( dport = :80 or dport = :443 )' | wc -l)" >> /www/wwwlogs/tcp_est_count.log
3、另建一个每日归档任务,执行周期为每天凌晨 1 点,脚本内容为:
mv /www/wwwlogs/tcp_est_count.log /www/wwwlogs/tcp_est_count_$(date -d 'yesterday' +\%Y\%m\%d).log 2>/dev/null; touch /www/wwwlogs/tcp_est_count.log
4、完成设置后点击【添加任务】,确保【状态】为启用。
五、结合宝塔网站日志分析高频异常请求源IP
虽然 TCP 连接层与 HTTP 应用层分离,但大量无效连接常伴随高频无意义请求(如反复访问不存在路径、User-Agent 异常),可通过日志反向验证连接异常是否具有攻击意图。
1、进入【网站】→ 选择目标站点 → 【日志】→ 【访问日志】。
2、点击【搜索】,在“客户端 IP”字段留空,在“请求路径”中输入 /wp-login.php|/xmlrpc.php|/phpmyadmin(根据实际框架调整)。
3、勾选【仅显示匹配行】,点击【搜索】,查看返回结果中同一 IP 出现次数是否超过 50 次/小时。
4、对命中结果中出现频次最高的前 5 个 IP,执行以下命令临时封禁:
bt firewall add 80,443 deny [IP地址]










