端口扫描防护核心在于系统层和网络层阻断,apache仅能辅助隐藏指纹和拦截http层扫描行为;需关闭非必要端口、用防火墙限制访问范围,并配置apache隐藏版本、拦截恶意ua及限制请求速率。

Apache 本身不负责端口扫描防护,它只处理已到达 80/443 等监听端口的 HTTP 请求。所谓“防止内部网络敏感端口扫描”,关键不在 Apache 配置,而在于**阻断扫描流量抵达 Apache 所在主机的过程**。Apache 可配合做两件事:一是隐藏自身服务特征降低被识别概率,二是拦截已进入 HTTP 层的扫描行为(如目录爆破、UA 探测)。真正起效的端口级防护必须由系统层或网络层完成。
关闭非必要服务端口
攻击者常从常见管理端口入手(如 SSH 22、MySQL 3306、Redis 6379、Web 管理后台 8080/8443)。这些端口若暴露在内网,极易被横向扫描利用。
- 检查当前监听端口:
ss -tuln | grep ':'或netstat -tuln - 停用不用的服务:例如禁用 telnet、ftp、rpcbind、cups 等默认开启但业务无需的服务
- 将管理类服务(如 phpMyAdmin、Jenkins)绑定到
127.0.0.1或内网特定 IP,而非0.0.0.0 - 数据库服务配置
bind-address = 127.0.0.1,仅允许本地应用连接
用防火墙限制内网访问范围
即使端口必须开放,也应严格控制谁可以连——尤其在内部网络中,不应默认信任所有终端。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 使用
ufw(Ubuntu)或firewalld(RHEL/CentOS)设置白名单规则 - 示例(仅允许运维网段访问 SSH):
sudo ufw allow from 192.168.10.0/24 to any port 22222 - 对 Apache 自身端口(80/443),可限制仅允许办公网段或负载均衡器 IP 访问,拒绝其他内网地址
- 启用连接状态跟踪,自动丢弃非法 SYN 包或短时高频新连接(防 SYN 扫描)
Apache 层面辅助防御扫描行为
当扫描流量已绕过防火墙、命中 Apache 时,可通过以下方式增加探测成本、留下痕迹、阻断高频请求:
-
隐藏服务器指纹:设
ServerTokens Prod和ServerSignature Off,避免泄露 Apache 版本与模块,让自动化工具无法精准匹配漏洞 -
拦截扫描器 UA:用
mod_rewrite拦截含Wfuzz、Fuzz、buster、sqlmap等关键字的 User-Agent:RewriteCond %{HTTP_USER_AGENT} (Wfuzz|Fuzz|buster|sqlmap) [NC]RewriteRule ^ - [F] -
禁止目录遍历与敏感路径:用
FilesMatch拒绝访问.htaccess、.env、config.php等文件;用DirectoryMatch "/\."拦截以点开头的路径 -
启用速率限制:通过
mod_evasive或mod_ratelimit对单 IP 每秒请求数设限,缓解暴力扫描和目录爆破
补充:避免 Apache 成为扫描跳板
若 Apache 启用了代理模块(mod_proxy)且配置不当,可能被用作内网端口扫描的代理出口。务必确认:
-
ProxyRequests Off(禁用正向代理) - 如需反向代理,用
ProxyPass显式定义目标,不开放通配规则 - 检查是否意外启用了
mod_cgi或mod_cgid,它们可能执行任意脚本发起内网探测










