游客发表

IIS配置只能域名访问不能ip访问

发帖时间:2026-10-17 04:35:47

上周帮朋友排查一个线上故障,域能他的名访站点被人用IP直接访问到了后台登录页,黑客正在暴力破解密码。问不问查了半天,域能问题就出在IIS允许了IP直连——域名能访问,名访IP也能访问,问不问等于把家门钥匙挂在门口。域能

IIS默认绑定所有未分配的名访主机头。你装好站点,问不问绑了域名,域能以为万事大吉。名访实际上,问不问只要有人用服务器IP访问,域能IIS照样响应。名访这就像你给门装了把高级锁,问不问但窗户没关。

解决思路很简单:让IIS只认域名,不认IP。具体操作分两步。

第一步,在IIS里新建一个空白站点,绑定服务器IP的80端口,主机头留空。这个站点的物理路径随便指一个空文件夹,或者干脆指向一个只包含空白index.html的目录。重点来了——给它配上拒绝所有请求的规则。用URL重写模块,或者直接在web.config里写一段规则,把所有请求重定向到一个不存在的地址,或者直接返回403。

第二步,把你真正的站点绑定改成“全部未分配”或者具体域名。注意,如果绑定的是“全部未分配”加80端口,那IP访问还是会落到你站点上。必须改成“需要主机头”模式——也就是在绑定编辑里,主机名填上你的域名,IP地址选“全部未分配”或者具体IP都行,关键是主机头不能空。

有人会问,那空白站点干嘛用的?它是用来“接住”那些不带主机头的请求。当访客用IP访问时,IIS找不到匹配的域名主机头,就会把请求扔给那个默认的空白站点。因为空白站点配置了拒绝规则,请求直接被掐断。而带域名的请求,因为主机头匹配成功,直接进入真正站点,完全不受影响。

这里有个坑,容易踩。如果你服务器上还有其他站点,比如API服务或者测试环境,它们也绑定了IP。那IP访问可能先落到那些站点上。解决办法是把所有不需要IP直连的站点都加上主机头绑定,然后保留一个默认的“黑洞”站点处理所有漏网之鱼。

还有更狠的做法,直接在防火墙层面封掉80和443端口的IP直连,只允许域名解析后的IP访问。但这样做有个麻烦——如果你的域名解析到CDN或者负载均衡器,那真实服务器IP反而不能从外网直接访问了。这种情况下,IIS层面的配置更合适。

配置完记得重启IIS,然后自己用IP访问试试,应该会看到403或者连接被重置。再用域名访问,一切正常。这个改动对SEO也有好处,搜索引擎不会收录到重复内容的IP页面,权重更集中。

朋友后来跟我说,黑客攻击日志当天就停了。一个小小的配置,省去了半夜爬起来处理安全事件的麻烦。IIS这东西,默认配置往往太“宽容”,生产环境必须收紧。别等到被入侵了才想起来补漏洞,那代价可比配置麻烦多了。

    热门排行

    友情链接