發表文章

目前顯示的是 2023的文章

[開發環境] ngrok 外部網路連開發環境神器 (LINE Messaging 為例)

圖片
在開發上有時候會有串接外部服務,如 OAuth、Webhook 的需求,再加上目前各大服務平台都已要求再回 Call 的網址都必須提供 https 憑證才行,這也造成了本地開發階段時的不便,ngrok 就是為了解決此問題而存在的服務。 ngrok 是個知名的內網穿透雲端服務,意思是說你的設備不需要Public IP,透過他的Agent建立Tunnel將服務暴露到外網上  

Grafana 發送異常通知(監控 WAF 異常流量)

圖片
前言 在前幾篇文章中,我記錄了 如何安裝 Grafana 以及 將事件器的 Log 整合至 Grafana 進行集中管理,當然除了日誌,如果希望監控其它指標,比如伺服器效能,也都可以統一傳送至 Grafana 方便進行管理,但這些我就不再一一介紹了。 另外當系統出現異常時,提供即時通知是非常重要的功能,本文將分享如何在 Grafana 中設定異常通知功能,Grafana 支援多種異常通知方式,包括 LINE、郵件、API、Teams 等,這裡會分享我自己使用的兩種方式:【LINE 通知】和【呼叫外部 API】。 接下來,我將詳細說明這兩種通知方式的設定步驟。

Grafana 事件檢視器監控面板(搭配 WAF ModSecurity 異常監控事件進行設定)

圖片
這篇文章我要記錄一下自己再用的幾個監控面板,但在開始前必須要先完成【 Windows ModSecurity WAF 】、【 Grafana + Loki + Promtail 安裝紀錄 】這兩篇的設定才可以繼續進行後續的面板設定。 事件明細(1) 新增 Visualizations 類型選擇 Logs,並選取底下的查詢條件,目的僅顯示異常的紀錄。 logsource = WindowsEventlog Source = ModSecurity Level = 2,僅顯示嚴重的項目,若要全部出現也可不設定此項目。 資料維度轉換,目的是要排除不想看到的資料內容,僅留下想看到的資訊。 Extract fields,將欄位 Line 的 Log 明細使用 key+values 欄位攤開。 Organize fields,根據需求顯示需要的欄位,我的範例是僅保留 level、eventRecordID、Time、event_data 。 設定面板設定,根據自己的需求調整即可。 Title : 事件明細。 完成設定如下圖所示。

Grafana Loki 安全性設定 (使用 IIS ARR)

圖片
在 上一篇 文章有紀錄 Grafana 和 Loki 的安裝,但根據 官網的說明 ,Grafana Loki 本身並不包含授權的功能,所以需要依靠 reverse proxy 來完成此需求,本篇則是使用 ARR 來進行設定。 前置條件 下載並安裝 URL Rewrite 。 下載並安裝 Application Request Routing , ARR 相關設定可參考 這一篇文章 的說明。 Step1. URL 重寫 RewriteMaps 設定 此設定是為了,當 Client 端的請求包含了指定的 Custome Header,並且符合內部定義的 Key 時,會使用 value 值來取代, 講人話就是,你的授權 Token 設定的地方 ,底下的設定代表,我核發了 Lawrence & Lawrence2 兩個 Token,若滿足條件,則比對其值 Y。 <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rewriteMaps> <rewriteMap name="Authorized Clients"> <add key="Lawrence" value="Y" /> <add key="Lawrence2" value="Y" /> </rewriteMap> </rewriteMaps> </rewrite> </system.webServer> </configuration>

Grafana + Loki + Promtail 安裝紀錄( Windows Event Log 為範例)

圖片
安裝 Grafana Grafana 是一個跨平台、開源的資料視覺化網路應用程式平台,使用者可透過組態設定來連接多個資料來源,並且在此平台內顯示資料圖表或警告等等,例如,將各伺服器的事件檢視器的 Log 統一發送到 Grafana 監控,底下為安裝步驟的紀錄。 下載 grafana-10.2.2.windows-amd64.msi OSS 版本 並安裝 。 因預設使用 3000 Port 會與我另外一個服務 Rendertron 衝突,故需要調整一下 Port,這邊用 3333,若沒有這個問題,可略過此步驟。 調整設定檔 C:\Program Files\GrafanaLabs\grafana\conf\defaults.ini 內,找到 http_port 並調整為 3333。 # The http port to use # http_port = 3000 http_port = 3333 若有需要 開啟外部連線 ,也記得要調整 defaults.ini 的設定,若只有不提供外部使用可忽略此步驟。 # The public facing domain name used to access grafana from a browser domain = localhost # 若直接對外開放需要改成你的 Domain # Redirect to correct domain if host header does not match domain # Prevents DNS rebinding attacks enforce_domain = true # The full public facing url # 若有使用 reverse proxy server 進行轉址 # 也請改成你的對外網址,顯示的 http 協定或 port 可能不正確 root_url = https://你的Domain # root_url = %(protocol)s://%(domain)s:%(http_port)s/

Ubuntu ModSecurity WAF(Nginx 應用程式防火牆 Open Source 解決方案)

圖片
先前  Windows ModSecurity WAF 這篇文章有說明,什麼是 WAF,以及如何在 IIS 上面安裝 WAF,這篇我要記錄一下如何在 Ubuntu + Nginx 上安裝 WAF 模組。 安裝 ModSecurity 安裝必要套件 LibModSecurity,或者可以參考選擇自行建置,底下參考網站有很多自行建置的方法。 sudo apt-get install libmodsecurity3 # Ubuntu 下載與已安裝的 nginx 相同版本的 Source Code ,並且壓縮。 $ nginx -v # 1.18.0 $ wget http://nginx.org/download/nginx-1.18.0.tar.gz $ tar zxvf nginx-1.18.0.tar.gz $ rm nginx-1.18.0.tar.gz 下載 ModSecurity/Nginx 連接器。 git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git 設置和建置 ModSecurity 動態模組,成功建置後會產生一個 ngx_http_modsecurity_module.so 檔案到 ~/nginx-1.18.0/objs 目錄底下。 $ cd ~/nginx-1.18.0 $ ./configure --with-compat --add-dynamic-module=../ModSecurity-nginx x $ make modules

Nginx 使用 Let's Encrypt (以 Ubuntu 22.04 為例)

圖片
本篇紀錄 Nginx 上面掛載 SSL 憑證的步驟,相關說明如下。 安裝 Certbot for nginx 使用  站台對應的 Server 必須事先對應好,這裡不在說明,請自行參考 這篇 的說明。 因為在測試環境上,沒有辦法開放 80 & 443 Port,所以這邊先使用 萬用子網域憑證 ,執行底下的程式碼, --manual 參數的關係,接下來的命令都會使用互動的方式來進行。  執行完上面那段語法會跳出 dns-01  challenge,並提供一個值,請拿這個值到 DNS 後台進行設定。

Windows ModSecurity WAF (IIS 應用程式防火牆 Open Source 解決方案)

圖片
WAF 維基百科定義 網頁應用程式防火牆(英語:Web Application Firewall,縮寫:WAF)是一種特定形式的 應用程式防火牆 ,用於過濾、監視和阻斷通過網頁服務的 HTTP 流量。透過監察HTTP 流量 ,它可以防止利用網頁應用程式已知漏洞的攻擊,例如 SQL 注入 、 跨網站指令碼 (XSS)、檔案包含和不正確的系統組態。 WAF 與傳統防火牆 Firewall 的差異 傳統防火牆主要的辨識範圍最多只到網路架構第四層-傳輸層 (OSI 4 layer),傳統防火牆無法分析 HTTP 與網站應用程序例如: HTML、SQL語言等,然而隨著科技進步,如今駭客已經能夠輕易入侵網站應用程式的漏洞,攻擊至第七層應用層 (OSI 7 layer),傳統防火牆無法對應用層的攻擊進行有效防禦,因此造就 WAF 的出現。

[開發環境] 安裝 Nginx 並設定對應不同網域的站台 (以 Ubuntu 22.04 為例)

圖片
使用 APT 進行安裝 Nginx 更新 Ubuntu 系統的 apt 版本。 sudo apt update 查詢 nginx  官網提供可安裝的版本。 apt-cache madison nginx 安裝指定的版本,系統應該會詢問是否進續安裝,請輸入 y,並按照指示進行後續的動作,預設安裝完畢後,服務應該就已經啟動了。 sudo apt install nginx=1.18.0-6ubuntu14.4 確認 nginx 服務是否有在運行,若看到底下的畫面代表已啟動成功。 systemctl status nginx

使用 NET.Core 串接 Google Analytics API 來顯示即時分析數據

圖片
當我們建立服務型網站時,通常希望能夠獲得來訪者的相關資訊,一種常見的土炮方法是在網頁上自行開發程式以取得使用者的相關資訊,但我們所能取得的資訊有限,很多數據可能需要後續處理,例如使用者的國家別,甚至可能沒辦法取得,因此分析起來可能相對不夠完整,身為開發者應該都知道不要重複造輪子,而且現有的分析工具眾多,基於站在巨人的肩膀上的原則,當然很自然的選擇 Google 提供的服務。 Google Analytics(GA) 是由 Google 提供的網站流量統計服務,只要在想要監控的網頁加入 GA 提供的一小段 JavaScript 代碼,每當用戶訪問該頁面時,就會將相關資訊如使用者所在國家、進入該頁面的關鍵字等傳送至 GA 伺服器,並整合成易讀的報表供網站擁有者查看。 另外,GA4 還提供了多種預設的分析報表,並且還可以自訂不同的分析維度,下圖展示了登入後可見的其中一個數據畫面,網路上有許多專家分享如何使用 GA4,這裡就不再贅述,建議自行查找相關資料以了解如何使用 GA4。

[開發環境] 使用 Rendertron 技術優化 Angular 網站 SEO

圖片
前言 在 2016 年時,曾經寫過一篇關於 SEO 優化的文章  [SEO優化] Microdata類別(itemtype)實作  ,時隔多年,現在有越來越多的網站都已經改成前後端分離,前端採購 SPA 的框架,筆者自己寫的 寶貝評論+ 也不例外。 什麼是 SPA (Single-Page Application) 單頁式應用程式 ?  維基百科的說明是,它是一種網路應用程式或網站的模型,它透過動態重寫當前頁面來與使用者互動,而非傳統的從伺服器重新載入整個新頁面。 簡單來說, 當你從伺服器下載網頁到瀏覽器時,一開始該網頁並不包含實際內容,而是在下載完成後,動態抓取並呈現你所看到的內容 。常見的 SPA 前端開發框架包括 Angular、Vue 和 React。