nginx限制域名访问

当遇到未备案域名恶意解析至服务器时,通过防火墙限制无法解决,因为DNS解析已在域名服务商处完成。解决方案转至Nginx前端代理,通过配置Nginx规则,对非注册域名进行访问限制,如设置403错误码阻止恶意域名。然而,此策略可能影响其他正常应用,需要精细配置以确保不影响服务。
摘要由CSDN通过智能技术生成

背景:一个未备案的域名恶意解析到我司的服务器,导致服务器托管服务商认为我司故意不备案域名,服务商准备停掉我们的服务器的接入

 

解决思路:

1.通过防火墙限制域名访问

2.设置代理服务器,对于域名不是我司注册的一律限制访问

 

       开始是希望通过防火墙去限制域名的访问,这样开销应该是最小的,但仔细想发现防火墙应该是解决不了这个需求,因为域名解析是在域名服务商那做的,在通过防火墙的时候,域名已经转换成ip地址了。

以下是摘自论坛的说法“

写道
目前的 iptables 是无法实现的
因为 iptables 工作在网络层,他看到的仅仅是数据包
domain 存放在两种数据包中
1、DNS 请求的 udp 包
2、HTTP 请求头部的 host 字段

对于 1 来说,我们得不到它,因为 DNS 请求是去放用户设置的 DNS 地址的,而且即便获得到了也做不了什么
对于 2 来说,我们虽然可以获得 host 字段具体域名,但如果在获得后再转向的话,前面的 connection 已经建立了,后面突然转向就未被了 TCP 工作原理,理论上是无法实现的

但是,利用 squid 或者 nginx 却是可以实现的,他们相当于七层代理,完全把 HTTP 请求截获,换成新的请求发向内网,得到信息再回传给客户,这样可行

至于前面有人说的 mark、tc 等,都是理论上行不通的,违反了 OSI 七层模型中 TCP 传输原理

 ”

      尝试了一段时间后,发现无法通过防火墙来解决这个问题,那就只能切换到nginx前端代理去禁止恶意域名访问了,其实是利用了nginx对不同来路的域名解析到不同服务器的规则实现的,以下为nginx的配置

user  nginx;
worker_processes  3;

error_log  /var/log/nginx/error.log warn;
pid     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值