Apache 預防 Slow HTTP DoS Attack

Slow HTTP DoS Attack 是一種針對 Web Server 的 DoS 攻擊手法, 而且對於使用 thread based 的伺服器 (Apache 預設是使用 thread) 尤其有效。做法是向 Web Server 發出連線請求, 但一直不回應 HTTP Header, 或者該回應的時間盡量拉長, 讓 Web Server 一直等待 HTTP …

解決 Linux 大量 TIME_WAIT TCP 連線

HTTP 伺服器在高負載時反應會變慢, 但檢視系統的使用資源, 例如 CPU, 記憶體及 Load Average 則很正常, 當重新啟動 HTTP 伺服器後, 問題又暫時得以解決。用以下 netstat 檢查連線的統計資料: # netstat -nat | awk ‘{print $6}’ | sort | uniq -c | sort -n會發現 …


Shell Script 檢查輸入的參數數量

有時在 Shell Script 需要檢查輸入的參數數量, 在 Shell Script 要檢查輸入的參數數量, 可以直接用 $# 變數取得, 例如建立以下 Shell Script: 將以上內容儲存成 test.sh 後, 並給予可執行權限, 可以嘗試執行以下指令: $ test.sh 1 2 3 3上面在執行 test.sh 時, 輸入了 3 …


強制瀏覽器每次重新載入 CSS, JS 檔

當網站的 CSS 及 Javascript (.css 及 .js) 作出修改後,這些更新可能不會立即呈現及訪客,這是因為瀏覽器為了提高開啟網站的速度,會將 .js 及 .css 檔儲存在快取內,下次進入網站時不會重新載入所致。網站訪客可以清除網站的快取然後重新載入,便會看到新內容。但網站管理員總不能要求每個訪客這樣做,需要在網頁的層面解決。一個簡單的解法是在 HTML 的 Meta Tag 加入控制快取的指示,例如: 但這個方法很多時都不會長時間有效。另一個較簡單實用的方法是在檔名後面加上一個 GET 變數,這個 GET 變數可以是日期時間,也可以是版本號,例如: 當下次修改 CSS 或 JS 後,在網站的 HTML …

Linux 開啟檔名有空格的檔案

在 Linux 下一般不會用空格 (Space) 作為檔案名稱, 會用 底線 (_) 或橫線 (-) 分隔字串, 但如果檔案是從 Windows 複製進來, 或者是掛載 Windows 的分割區, 可能會有空格作為檔案名稱的一部分。如果有一個檔案名為 “file name.txt”, 在 Linux 要開啟有以下兩種方法, 分別是用引號包著檔案名稱, 以反在空格前加入 “\” 字符: $ cat ‘file …

CentOS 7 Apache (httpd) 重啟慢問題

在一台安裝了 Apache (httpd) 的 CentOS 主機上, 如果重新啟動 Apache 會很慢, 正常情況應該幾秒內便重啟完成.但啟動 Apache 便很快, 只是停止及重啟很慢。根據 Redhat Bugzilla 的內容, 在 systemd 的 httpd 服務, 將 KillMode 設定成 none 便可以, 以下是解決步驟:開啟 /usr/lib/systemd/system/httpd.service: /linux/ # …

Let’s Encrypt 申請 Wildcard SSL 憑證

Let’s Encrypt 在上年已經推出全網域通用憑證 (Wildcard Certificate), 也就是一張憑證可以讓網域下所有子網域通用, 所有子網域也可以使用同一張憑證。原本的網域下每個子網域都會產生一個新的憑證, 但如果網址較多管理也較麻煩, 以下紀錄一下申請 Let’s Encrypt Wildcard 憑證的方法。網路上有很多申請 Let’s Encrypt 憑證的工具, 以下會使用 Certbot, 先執行以下指令安裝 Certbot: /linux/install-certbot # wget https://www.eff.org/certbot-auto # chmod +x ./certbot-auto # ./certbot-auto …

Linux 建立 SWAP 檔案空間

Swap 檔案跟 Swap 分割區差不多, 分別是 Swap 檔案是用檔案的方式建立, 不是使用獨立硬碟分割區。以下是在 Linux 下建立 Swap 檔案的方法。建立 swap 檔案是使用 block size 作為單位, 每 1 MB 有 1024, 所以建立 1GB 的 swap 檔案便要建立 1024 * 1024 …