Webshell反弹通信关键特征包括:出站连接目标IP异常(如境外或黑产C2地址段)、非常规端口高频外连(如4444/5555/6666)、短时突发性TCP连接(无HTTP头或TLS握手)、载荷含/dev/tcp/或bash -i >&等字符串;iptables可基于元数据拦截,需结合conntrack日志与多层加固协同防御。

识别Webshell反弹通信的关键特征
Webshell一旦被植入,常通过HTTP、DNS或TCP协议主动连接攻击者服务器(C2),形成反弹Shell。这类通信有明显痕迹:
- 出站连接目标IP异常:连接非业务必需的境外IP、黑产常用C2地址段(如185.220.101.0/24、193.108.167.0/24)
-
非常规端口高频外连:如向外部发起大量
tcp/4444、tcp/5555、tcp/6666等典型反弹端口连接 - 短时突发性连接行为:同一进程在数秒内建立多个到同一IP:PORT的TCP连接,且无HTTP头或TLS握手
-
可疑协议载荷:如
/dev/tcp/、nc -e、bash -i >& /dev/tcp/等字符串虽在应用层,但iptables本身无法解析内容;需结合日志+conntrack辅助判断
用iptables限制高危出站连接(OUTPUT链)
iptables不能深度检测HTTP body,但可基于连接元数据做有效拦截。重点加固OUTPUT链,防止服务器“主动外联”:
- 默认拒绝所有出站连接:
iptables -P OUTPUT DROP(启用前确保已放行DNS、NTP等基础服务) - 只允许业务必需的出口IP和端口,例如仅允许访问CDN、API网关、数据库代理等白名单地址:
iptables -A OUTPUT -d 10.10.20.0/24 -p tcp --dport 443 -j ACCEPT - 显式封禁常见反弹端口的外发请求:
iptables -A OUTPUT -p tcp --dport 4444 -j DROPiptables -A OUTPUT -p tcp --dport 5555 -j DROPiptables -A OUTPUT -p tcp --dport 6666 -j DROPiptables -A OUTPUT -p tcp --dport 12345 -j DROP - 封禁全部到公网私有IP段(如192.168.x.x、10.x.x.x、172.16–31.x.x)的出站TCP连接(防横向渗透):
iptables -A OUTPUT -d 192.168.0.0/16 -p tcp -j DROPiptables -A OUTPUT -d 10.0.0.0/8 -p tcp -j DROPiptables -A OUTPUT -d 172.16.0.0/12 -p tcp -j DROP
结合conntrack与日志增强检测能力
单纯静态规则不够,需让iptables“记住”异常连接模式:
- 记录频繁新建连接的源端口(常为Web服务worker进程):
iptables -A OUTPUT -p tcp -m connlimit --connlimit-above 10 --connlimit-mask 32 -j LOG --log-prefix "OUT-CONNLIMIT: " - 标记并丢弃5秒内对同一目的IP:PORT发起≥3次新连接的流量:
iptables -A OUTPUT -p tcp -m recent --name C2_ATTEMPT --rcheck --seconds 5 --hitcount 3 --rttl -j LOG --log-prefix "C2-ATTEMPT: "iptables -A OUTPUT -p tcp -m recent --name C2_ATTEMPT --rcheck --seconds 5 --hitcount 3 --rttl -j DROPiptables -A OUTPUT -p tcp -m recent --name C2_ATTEMPT --set -j ACCEPT - 将上述日志输出到
/var/log/messages或专用日志文件,配合rsyslog转发至SIEM系统分析
配套必须做的安全加固项
iptables只是网络层防线,必须与其它措施协同才真正有效:
-
禁用危险PHP函数:在
php.ini中设置disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,pcntl_exec -
Web目录权限最小化:上传目录(如
/upload)禁止执行脚本,用nginx配置location ~ \.php$ { deny all; } -
部署WAF规则:在Nginx/Apache前置WAF,拦截含
eval(、base64_decode(、file_put_contents等Webshell特征的HTTP请求 -
启用RASP运行时防护:如OpenRASP、Java Agent类工具,可在
Runtime.exec()或ProcessBuilder调用时实时阻断 -
定期扫描Web目录:使用
linux-malware-detect或自定义find+grep脚本排查可疑PHP/JSP文件

















