让nginx网关扛下所有攻击

勿以君子之心度小人之腹

我的小破网站也玩了几年,也就是我个人在线简历啊,个人音乐网站啊,数据管理系统等内容,没有啥值钱的数据,我就觉得安全性没有那么重要,谁会吃饱了撑的来破坏我这些东西?做那些损人而不利己的事?

但是我的网站遭遇过一次几乎灭顶之灾,几年积攒的数据被清空,能改的被改动,但是我的后台服务没有日志功能,我完全查不到是谁操作了啥。

后来我给服务加了日志系统,发现每天凌晨都有大量莫名其的请求打到我的服务上,我惊呆了,人教人学不会,事儿教人一次就会。所以安全意识要强,正如标题"勿以君子之心度小人之腹 "

所以这次要把网关弄好,别给黑客一点可乘之机,主要是nginx配置优化和后端服务隐藏

nginx配置优化

ini 复制代码
server { 
    listen 80; 
    server_name bj985.com www.bj985.com;
    # 安全规则
    limit_req zone=req_limit burst=15 nodelay;

    if ($request_method !~ ^(GET|HEAD|POST)$) {
        return 403;
    }

    # 只拦截危险脚本,不拦图片
    location ~* \.(php|jsp|asp|aspx|sh|py|cgi)$ {
        deny all;
        return 403;
    }
    # 【关键】拦截指定关键字
    location ~* (manager|phpmyadmin|shell|cmd) {
        deny all;
        return 403;
    }

    # 主页面转发(已删除 limit_except,图片正常)
    location / {
        proxy_pass http://127.0.0.1:8088;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 自动跳转 PC / 手机
        set $is_mobile 0;
        if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android)) {
            set $is_mobile 1;
        }
        if ($is_mobile = 0) {
            rewrite ^/$ /personalpc break;
        }
        if ($is_mobile = 1) {
            rewrite ^/$ /personal2 break;
        }
    }

    location ^~ /api {
        rewrite ^/api/(.*)$ /$1 break;
        proxy_pass http://xxx.xxx.xxx.xxx:8088;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

完全隐藏后端服务

后端服务不要直接对外提供服务,比如我的服务跑在8088端口,使用IP:8088完全访问不了后台任务接口,所有服务必须经过nginx转发,如果你的gin服务是这样写的

css 复制代码
r := gin.New()
r.Run(":8080")
// 或者
r.Run("0.0.0.0:8080")

一定要改成

css 复制代码
r := gin.New()
r.Run("127.0.0.1:8080")

这样即使黑客绕过了nginx网关,使用你的ip加端口也访问不了你的后台服务

加服务器日志,

这个也是必须的,不然有问题完全摸瞎,完全查不到

相关推荐
似的8354 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
郭老二4 小时前
【前端】vue3:编译步骤
前端
不在逃避q5 小时前
Trae/Vs Code/Cursor命令行无法跑npm命令
前端·arcgis·npm
mldong5 小时前
从 mldong 到 jeeflow:一个工作流引擎的独立进化
后端
夏殇之殁5 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
The Chosen One9855 小时前
高进度算法模板速记(待完善)
java·前端·算法
陈随易5 小时前
MoonBit抓包模块pcap,查看电脑的每一次联网通信
前端·后端·程序员
Aaron - Wistron6 小时前
Web API C# (Furion版)带 单元测试
开发语言·后端·c#
卷无止境6 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境6 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python