讓 nginx 網關扛下所有攻擊

#### 勿以君子之心度小人之腹

我的小破網站也玩了幾年,也就是我個人線上履歷啊、個人音樂網站啊、資料管理系統等內容,沒有什麼值錢的資料,我就覺得安全性沒有那麼重要,誰會吃飽了撐的來破壞我這些東西?做那些損人而不利己的事?
但是我的網站遭遇過一次幾乎滅頂之災,幾年累積的資料被清空,能改的被改動,但是我的後台服務沒有日誌功能,我完全查不到是誰操作了什麼。
後來我給服務加了日誌系統,發現每天凌晨都有大量莫名其妙的請求打到我的服務上,我驚呆了,人教人學不會,事教人一次就會。所以安全意識要強,正如標題「勿以君子之心度小人之腹
所以這次要把網關弄好,別給駭客一點可乘之機,主要是 nginx 配置優化和後端服務隱藏

nginx 配置優化

ini 体验AI代码助手 代码解读复制代码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://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;
    }
}

完全隱藏後端服務

後端服務不要直接對外提供服務,比如我的服務跑在 8088 端口,使用 IP:8088 完全訪問不了後台任務介面,所有服務必須經過 nginx 轉發,如果你的 gin 服務是這樣寫的

css 体验AI代码助手 代码解读复制代码r := gin.New()
r.Run(":8080")
// 或者
r.Run("0.0.0.0:8080")

一定要改成

css 体验AI代码助手 代码解读复制代码r := gin.New()
r.Run("127.0.0.1:8080")

這樣即使駭客繞過了 nginx 網關,使用你的 IP 加埠號也訪問不了你的後端服務

加伺服器日誌,

這個也是必須的,不然有問題完全摸瞎,完全查不到


原文出處:https://juejin.cn/post/7645280506545111094


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝12   💬4   ❤️1
465
🥈
alicec
📝1   ❤️2
87
#4
我愛JS
💬1  
3
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登