iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
DevOps

嘿,稍等一下!別急著開發功能,先來打造 Walking Skeleton 吧!系列 第 12

【Walking Skeleton】Day12 - 設定 Nginx 將機密資料夾變成不可讀取

  • 分享至 

  • xImage
  •  

簡單介紹一下 Nginx 設定檔

Nginx 設定檔通常會放在 /etc/nginx/ 資料夾中,所以先用 VSCode 打開這個資料夾

code /etc/nginx/

打開來後會像這樣

Nginx 的主要設定檔是 nginx.conf

最上面這幾行是 Nginx 本身相關的設定

  • user www-data; Nginx 執行時使用的使用者帳號
  • worker_processes auto; Nginx 會開啟幾個工作進程,auto 根據 CPU 核心數自動設定
  • pid /run/nginx.pid; 設定 Nginx PID 的檔案位置
  • error_log /var/log/nginx/error.log; 設定錯誤日誌的位置
  • include /etc/nginx/modules-enabled/*.conf; 載入模組設定檔

events 放連線相關設定的地方

  • worker_connections 768; 一個工作進程同時最多能有幾個連線數
  • multi_accept on; on 工作進程一次接受一個新連線。off 工作進程一次接受所有新連線

http 放網站伺服器相關設定的地方

  • Basic Settings 一般的伺服器設定,關於效能和 MIME,確保伺服器正常運作
  • SSL Settings SSL/TLS 相關設定,讓數據能夠安全的傳輸
  • Logging Settings 伺服器訪問日誌的設定
  • Gzip Settings 將資料壓縮傳輸,提高網站載入速度
  • Virtual Host Configs 在同一個伺服器上部屬多個網站的設定

隱藏不想被看到的檔案與資料夾

50 幾行這邊可以看到這邊有兩行 include 設定,我們要在這裡面修改預設的網站設定

首先要改一下權限,因為 /etc/nginx/ 資料夾底下的檔案都只有 root 可以修改

sudo chgrp 2023ironman /etc/nginx/ && sudo chmod g+w $_

設定完後就可以編輯啦

/etc/nginx/sites-enabled/ 有個 default 設定檔

這裡是放預設伺服器設定的地方,我們要在下方新增一些設定

在檔案中貼上以下內容,設定訪問「.」開頭的檔案和資料夾時會變成 404 Not Found

location ~ /\. {
    return 404;
}

記得重新載入設定檔

sudo systemctl reload nginx

再試試看能不能讀到 /.git/config

不會再把 config 下載下來,變成 404 了~


關閉顯示版本號

現在還有一個問題就是會顯示出版本號,這會讓駭客很容易的能利用這個特定的版本號找出它被公布的漏洞,關掉能夠讓它更難攻破伺服器,不過治本的方法還是要把程式更新到修復漏洞後的版本

在 nginx.conf 的 Basic Settings 中間有一行 server_tokens,按下 Ctrl + / 把這個註解取消

然後記得重新載入設定檔

sudo systemctl reload nginx

重新整理網頁看看

現在就不會顯示版本號囉~


上一篇
【Walking Skeleton】Day11 - 使用 Git 版本控制來記錄變更
下一篇
【Walking Skeleton】Day13 - 申請 SSL/TLS 憑證,讓網站能用 HTTPS 訪問
系列文
嘿,稍等一下!別急著開發功能,先來打造 Walking Skeleton 吧!34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言