iptables无法识别远程代码执行(rce)应用层行为,仅能基于ip、端口、协议、连接状态等网络/传输层特征设防;需通过精简开放端口、限制通信方向与网段、封禁异常连接、结合waf与系统加固实现纵深防御。

iptables 本身不识别“远程代码执行”这类应用层行为,它只能基于网络层和传输层特征(如端口、协议、IP、连接状态)做规则匹配。真正要阻断未知 RCE 尝试,得靠精准限制入口、收紧通信面、结合基础行为特征设防,而不是指望 iptables 主动识别漏洞利用载荷。
明确哪些流量根本不需要开放
绝大多数 RCE 攻击都从暴露的服务入口发起(如 Web、SSH、数据库、管理后台)。先砍掉非必要端口:
- 检查当前监听端口:
ss -tuln或netstat -tuln - 停掉不用的服务(比如关掉 telnet、ftp、rpcbind、exim 等老旧服务)
- 只保留业务必需的端口(如仅 22、443、8080),其余一律不监听
用连接状态和方向控制通信边界
RCE 往往依赖建立新连接或反弹 shell。iptables 可以从连接生命周期角度压制异常模式:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 默认 INPUT 策略设为 DROP:
iptables -P INPUT DROP - 放行已建立连接的返回包(关键!否则 SSH 会断):
iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - 限制新连接只来自可信网段(如运维网段):
iptables -I INPUT 2 -p tcp -s 192.168.10.0/24 --dport 22 -j ACCEPT - 禁止所有新建的出站连接(防反弹 shell):
iptables -P OUTPUT DROP,再白名单放行必要出口(如 DNS、时间同步、日志上报)
封禁高频扫描与异常连接行为
虽然 iptables 没有内置速率限制模块,但可借助 limit 和 hashlimit 抑制暴力探测类 RCE 尝试:
- 对 SSH 端口限速(防爆破+试探):
iptables -I INPUT 3 -p tcp --dport 22 -m hashlimit --hashlimit-above 3/minute --hashlimit-burst 3 --hashlimit-mode srcip --hashlimit-name ssh -j DROP - 对 Web 端口限制单 IP 新建连接频率:
iptables -I INPUT 4 -p tcp --dport 80 -m hashlimit --hashlimit-above 20/sec --hashlimit-burst 50 --hashlimit-mode srcip --hashlimit-name http -j DROP - 封禁已知恶意 IP 段(可定期更新):
iptables -I INPUT 5 -s 185.188.0.0/16 -j DROP
配合系统级加固形成纵深防御
iptables 是第一道网关,但不能替代应用层防护:
- Web 服务务必启用 WAF(如 ModSecurity),它能识别 SQLi、XSS、命令注入等典型 RCE 前置手法
- 禁用危险函数(PHP 的
system()、exec();Python 的os.system())并开启 disable_functions - Web 目录设置不可执行权限(
chmod -R 755 /var/www/html,脚本目录单独隔离) - 用
unshare --user --net或容器运行服务,限制进程网络能力










