龙空技术网

nginx进阶——访问限制的一些骚操作

linux爱好者 305

前言:

此刻朋友们对“nginx访问”大致比较着重,我们都想要学习一些“nginx访问”的相关资讯。那么小编在网摘上汇集了一些对于“nginx访问””的相关文章,希望小伙伴们能喜欢,姐妹们一起来了解一下吧!

前言

公司开发了后台系统网站,用于对接各种公司开发的设备;

网站部署在机房,通过防火墙将内网服务器和公网ip进行了映射;

场景一:只允许域名访问网站,不允许通过ip访问

描述:如果你的网站没有配置此类的拦截规则,那么大概率会遭到恶意请求攻击。全球的公网ip是都是暴露在大众下的,每天都有大量的扫描工具在不停的扫描,一旦扫描到你的公网ip,继而进行端口扫描,你的web也就不可避免的暴露出来。

示例:

...server {	listen 80;	server_name ;	if ($host != ';) {		return 403;	}	location / {		...	}}...

通过上述配置,只有web端使用 的域名访问才不会被拦截,其余的都会返回403的错误;

杠精抬杠:我通过ip可以反查到对应的域名啊,这样也就可以攻击了;

我:这个配置是拦截了大部分自动扫描的机器人,如果通过反查再进行攻击,就属于人为的定向攻击了,另当别论;出门左转,不送!

场景二:允许多个域名访问网站,不允许通过ip访问

描述:如果有多个域名指向同一个公网ip呢?对,通常我们也会用域名的方式进行功能区分。比如:blog.abcd.com 是博客网站,是公司系统网站......

示例配置:

...server {	listen 80;	server_name  blog.abcd.com;	set $flag 0;	if ($host = ';) {	    set $flag 1;	}	if ($host = 'blog.abcd.com') {	    set $flag 1;	}	if ($flag != 1) {	    return 403;	}	location / {		...	}}...

看懂了不,先设置一个变量flag,初始值为0;如果使用 访问的,flag就会变成1,后面以此类推,最后判断 flag 的值,为0还是为1;如果不是使用www或blog来访问的,flag就还保持默认值,判断flag不为1,则返回403;满足任意条件,则flag为1,则通过。

场景三:多网卡ip,配置拦截和放行规则

在实际环境中刚改完,问题就来了,另一个开发部门的同事找过来,说请求403了。排查、对接发现,他们使用了内网的网卡进行的请求,被我配置的ip访问限制给拦截了;

系统有两个网卡,一个是 192.168.10.10(通过防火墙和公网ip做了映射),一个是 172.10.10.10(另一个部门开发的设备通过vpn来访问的,设备的请求通过vpn到达172.10.10.10,例如:)。

示例配置:

...server {	listen 80;	server_name  blog.abcd.com;	set $flag 0;	if ($host = ';) {	    set $flag 1;	}	if ($host = 'blog.abcd.com') {	    set $flag 1;	}	if ($host = '172.10.10.10') {		set $flag 1;	}	if ($flag != 1) {	    return 403;	}	location / {		...	}}...

再加一个flag参数的判断就ok了;

标签: #nginx访问