• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    开发环境下如何进行安全加固呢

    发布者: 雪落无声 | 发布时间: 2025-7-26 15:15| 查看数: 60| 评论数: 0|帖子模式

    由于公司机房和办公环境是在一起的,默认情况下公司出口IP是禁止80/443访问【运营商侧有限制】。目前采用的是阿里云进行中转,即将开发环境的域名解析到阿里云,然后通过Nginx反向代理到公司出口非80端口。开发环境部分接口涉及到第三方回调和校验,所以完全禁止开发环境对外网访问不现实。
           

            目前合理的需求如下:

    •                 公司网络地址段可以访问开发环境不受限制       
    •                 允许部分第三方IP地址段加入白名单       
    •                 若第三方IP不固定,需支持第三方回调的URL加入白名单       
    •                 不在上述条件内全部禁止外网访问。
            面对上述简单的需求场景,我们如何实现呢?
            方案一:采用防火墙白名单策略进行实现,目前看只能实现 1 和 2 的条件
            方案二:采用Nginx的allow、deny等策略,目前看也只能实现 1 和 2 的条件
            方案三:采用Nginx+Lua 通过access_by_lua_file策略,目前看能实现上述所有条件而且实现起来比较简单,改造成本较小。

    •                 在Nginx的server层配置:access_by_lua_file 'scripts/filter_white.lua'       
    •                 filter_white.lua 脚本配置信息:

    •                 root@develop:/usr/local/nginx/scripts# cat filter_white.lua        
    •                 -- 默认配置        
    •                 local redis = require 'resty.redis'        
    •                 local allow = false        
    •                        
    •                 -- 连接Redis        
    •                 local red = redis:new()        
    •                 local ok, err = red:connect('172.17.173.183', 26379)        
    •                 if not ok then        
    •                 ngx.log(ngx.ERR, 'connect to redis failed: ' .. err)        
    •                 end        
    •                        
    •                 local res, err = red:auth('Huajianghu@123')        
    •                 if not res then        
    •                 ngx.log(ngx.ERR, 'failed to authenticate: ' .. err)        
    •                 end        
    •                        
    •                 -- 过滤精确IP        
    •                 --if red:sismember('white:dev:ip', ngx.var.remote_addr) == 1 then        
    •                 -- allow = true        
    •                 --end        
    •                        
    •                 -- 过滤IP地址段        
    •                 local iputils = require("resty.iputils")        
    •                 iputils.enable_lrucache()        
    •                 local white_ips =red:smembers('white:dev:ip')        
    •                 local whitelist = iputils.parse_cidrs(white_ips)        
    •                 if iputils.ip_in_cidrs(ngx.var.remote_addr, whitelist) then        
    •                 allow = true        
    •                 end        
    •                        
    •                 -- 过滤URL        
    •                 if not allow then        
    •                 local url = ngx.var.http_host .. ngx.var.uri        
    •                 local white_urls = red:smembers('white:dev:url')        
    •                 for index, white_url in ipairs(white_urls) do        
    •                 if url:match(white_url) then        
    •                 allow = true        
    •                 break        
    •                 end        
    •                 end        
    •                 end        
    •                        
    •                 -- 默认策略        
    •                 if not allow then        
    •                 ngx.log(ngx.ERR, "not allow: " .. ngx.var.http_host .. ngx.var.uri)        
    •                 ngx.status = ngx.HTTP_FORBIDDEN        
    •                 ngx.say('请申请白名单')        
    •                 ngx.exit(200)        
    •                 end
            3.此脚本仅供参考使用,特殊场景需要进行修改lua脚本
            原文链接:https://www.toutiao.com/a7036249978200801830/

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表