Nginx配置Basic_Auth登录认证

前言~

闲来无事查看日志,发现新搬家的web服务器频繁遭到僵尸网络的扫描,虽然web服务加固的还不错,但如果web框架组件出现了新的nday,而自己又没及时留意到漏洞的存在去修补,那么服务器沦陷的风险就增大了;一般来说,僵尸网络的扫描行为都是全互联网大范围进行的,并且所探测的漏洞大多都是一些新爆发的cms漏洞(ThinkPHP)、或者是一些常见的框架组件漏洞(如Struts2),针对该特性,我们可以配置Basic Auth登录认证(ngx_http_auth_basic_module),来减少僵尸网络对我们web服务的侵扰。

注:Basic Auth登录认证适用于我们公开在互联网上但同时又希望不让他人访问的站点,因此,对于大流量网站,Basic Auth登录认证则不适用!




1、密码创建

在开始配置Basic Auth登录认证前,我们需要使用htpasswd生成账号及密码(密码存放路径没有限制,可自定义路径)

注:htpasswd 是开源 http 服务器 apache httpd 的一个命令工具,用于生成 http 基本认证的密码文件。

密码创建命令:

htpasswd -c -d /www/tools/Auth/auth_file user 

密码创建成功后,可先查看:

[root@VM_16_3_centos ~]# cat /www/tools/Auth/auth_file 
xxx_user:aRR7B12lK021w

htpasswd其它常用命令如下:
更新密码:

[root@VM_16_3_centos 123.com]# htpasswd -b /www/tools/Auth/auth_file user password
Updating password for user user

删除认证:

[root@VM_16_3_centos conf]# htpasswd -D /www/tools/Auth/auth_file user
Deleting password for user user

更多命令可使用htpasswd --help查看

密码创建完成后,可进行下一步的规则匹配



2、规则匹配

找到nginx配置文件,以我的服务器为例:/www/server/nginx/conf/nginx.conf

在server头中添加以下配置信息:

auth_basic "TETS";  //名称可自定义
auth_basic_user_file /usr/local/nginx/conf/passwd; //路径即htpasswd账号密码存放路径

注:

auth_basic 可设置为off或其它字符串,为off时表示不开启密码验证,或者#注释效果一样
auth_basic_user_file 为包含用户名和密码的文件,具体位置就是我们上一步使用htpasswd生成账号及密码的存放路径

以我服务器为例:

server
    {
        listen 1234;
        server_name 123.com;
        index index.html index.htm index.php;
        root  /www/wwwroot/123.com;

        #error_page   404   /404.html;
        include enable-php.conf;
        
        #auth_basic  "xx"; #全局认证
        #auth_basic_user_file  /www/tools/Auth/auth_file;
        
	    #location = /xxxx { #目录认证
   		    #auth_basic    "xxx";
    	    #auth_basic_user_file  /www/tools/Auth/auth_file;   
    #}

注:全局认证auth_basic要位于php解析之前

对于多个目录或单个目录保护,可使用Location规则,

**location匹配命令**

~      #波浪线表示执行一个正则匹配,区分大小写
~*    #表示执行一个正则匹配,不区分大小写
^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
=      #进行普通字符精确匹配
@     #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

语法:
location = /login {
          #规则
      }

注:如果Nginx服务存在xss平台的话,那么建议不要开启全局配置,因为全局Basic Auth会致使xss反弹失效,无法拿到cookie,切记!!!

效果

未做Bauth_basic 密码认证页面
在这里插入图片描述

Basic Auth登录认证保护页面

在这里插入图片描述

添加了Basic_Auth登录认证,扫描器无法正常扫描
在这里插入图片描述

抓个包看看Basic Auth登录认证的数据
在这里插入图片描述

可以看到认证字段是简单的base64加密传输,Basic_Auth认证只是http的一道简单的认证,很少僵尸网络会对针对单个ip进行渗透,用来应对互联网大范围的扫描活动却也足矣。
在这里插入图片描述


小结

从上面可以看出,Basic_Auth登录认证并非所以站点适用,而且该认证也较为粗劣,对于个人站点使用可大大减小服务器沦陷的风险,但也并非配置了Basic_Auth登录认证就万无一失了,在配置完成之余,还要多多增加安全意识,遇到很多网络安全应急事件,往往都是由于人的安全意识不足所导致的,多关注安全新动态,爆发新漏洞及时修补,这样存在的风险会大大降低。

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值