Web托管时如何禁用137、139端口?ASP.Net站点端口暴露问题咨询
137、139端口暴露的安全风险
137、139是Windows系统NetBIOS和SMB文件共享服务的默认监听端口,对外暴露存在明确的安全隐患:
- 攻击者可通过端口扫描直接枚举你的服务器主机名、工作组、域名、开放共享目录等敏感信息,还可对SMB服务发起暴力破解,尝试获取服务器访问权限
- 扩大了攻击面,即使你已经更新系统补丁,仍存在被针对NetBIOS/SMB的漏洞、反射型DDoS攻击利用的可能,轻则导致站点访问异常,重则引发数据泄露
- 共享服务器场景下,端口暴露还可能影响同节点其他用户的服务稳定性,触发服务商的安全规则导致站点被限制
共享服务器环境下关闭137、139端口的可行方案
因为你使用的是Interserver共享主机,没有操作系统级的管理员权限,优先尝试以下可操作的方案:
方案1:通过主机面板配置防火墙规则
大部分Windows共享主机会给用户开放自定义防火墙的权限:
- 登录你的Interserver主机控制面板,找到Windows防火墙或端口管理功能入口
- 分别新建TCP、UDP两种协议的入站规则,指定端口范围为137、139,操作选择阻止连接,规则应用到所有网络场景
- 保存配置后等待5分钟,用端口扫描工具验证是否生效
方案2:通过站点配置拦截请求
如果没有防火墙配置权限,可在ASP.NET站点的web.config中添加规则拦截对应端口的访问:
将以下代码添加到站点根目录web.config文件的<system.webServer>节点下即可:
<rewrite> <rules> <rule name="Block_137_139_Port" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{SERVER_PORT}" pattern="^(137|139)$" /> </conditions> <action type="AbortRequest" /> </rule> </rules> </rewrite>
注:该规则依赖IIS的URL Rewrite模块,若配置后不生效可联系服务商确认模块是否开启
方案3:要求服务商协助封禁
如果以上两种方案都无效,直接提交服务工单说明第三方漏洞报告的情况,要求运维人员在节点全局防火墙层面为你的主机单独屏蔽137、139端口的对外访问,这是共享主机场景下最稳妥的解决方案,服务商有义务处理这类合理的安全需求。
注意:不要尝试修改系统级服务配置(比如禁用NetBIOS服务),共享服务器上你没有对应的操作权限,违规修改可能会导致站点被暂停服务
内容的提问来源于stack exchange,提问作者manchakowski
相关产品推荐
相关产品推荐

