迪巴拉 发表于 2023-3-6 17:26:37

网站运维安全:用nginx限制非指定IP访问网站管理后台的方法


  今天和Discuz的官方工作人员在群里面聊,我向维护人员 @老周部落 提了一个建议,是这样说的:
@老周部落 老周,有个建议。就是全局-访问控制,允许访问管理中心的IP列表,看这个列表能不能不写进数据库,而写在config文件里面?因为本地IP变化之后,自己登录不了后台,而改数据库操作起来又比较麻烦..  然后另外一个维护人员@popcorner 就回复我,说:那不就没法在后台修改了么?
  我表示,也可以在后台修改呀,只是不写数据库,改成写文件了。
  popcorner继续表示:不可能为了一个这个开编辑config的先例。
  然后我又仔细描述了一下相关场景:
嗯。现在的应用场景是:后台设好限制IP,黑客登录不了,非常耐思。但某一天本地电信IP改变了,管理员自己也登录不了后台,无法更改限制IP,只得登录数据库进行操作,时间长不说,还有可能数据库误操作,网站直接崩溃。
我设想的场景是,后台设好限制IP,黑客登录不了,非常耐思。但某一天本地电信IP改变了,管理员自己也登录不了后台,无法更改限制IP,登录一下服务器,找到文件更新一下允许登录的IP列表,就OK了,很便捷,不操作数据库,风险也低。  popcorner说,2个方案,第1个应该已经有了,就是在tools里一键清除ip限制;再1个就是可以考虑添加1个强制禁用ip过滤的配置项,先保证能进后台,然后就可以自己改掉错误的设置了。
  我说,第2个方法很耐斯。
  这时候,popcorner又说:想改文件的话,其实更好的办法是在服务器端操作,对admin.php路径设置ip过滤即可,这样做可以让黑客连页面都碰不到,最安全。
  他的这个想法启发了我。我以前一直想从应用程序方面防备入侵,如果从服务端方面下手,可能真的会简单很多。于是,我就网上搜索了一下相关的解决方案,果然,一百度发现有现成的nginx配置代码,稍微修改一下就可以直接应用到自己服务器上,测试一下效果相当好。代码如下:
#限制后台访问IP开始                location ~ .*admin.* {      allow 118.118.0.0/16;#你的IP,可以是具体IP,也可以是IP区间      deny all;      location ~ \.php$ {                        root         /website/www;#网站所在的目录                        try_files      $uri =404;                        fastcgi_pass   127.0.0.1:9000;                        fastcgi_indexindex.php;                        fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;                        include      fastcgi_params;      }    }#限制后台访问IP结束  注意,上面的代码要放在
location ~ \.php$ {...  这一行之前。
  特地记录下本次交流内容,分享给需要的朋友们。
页: [1]
查看完整版本: 网站运维安全:用nginx限制非指定IP访问网站管理后台的方法

创宇盾启航版免费网站防御网站加速服务