接續上篇,今天來介紹 "處理來自不明來源的 Input":
可能採取的手段 - 1:
在 lower-level (ex. linux) 封鎖特定 IP,會比在後端程式碼中額外設定還要有效、快速 (優先過濾掉惡意IP)。
要採用 block IP 之前,我們需要思考需求:
假設今天是想要針對持有特定 static IP address (他們無法改變它) 的使用者,我們採取 block IP 的策略或許會是一個有效的方式。
但是,對於有心的 hacker ,他們有可能用很多不同的 IP 來進行攻擊,所以在這種情況下, block IP 並非是百分之百有效率的一種防禦方式。
(針對 Linux) 如何在 linux 阻止來自特定 remote host 的傳入的 connection
或流量
?
使用 iptables 來管理要流入/流出資料的 IP:
此處範例展示如何 block 住特定的 IP:
iptables -A INPUT -s xxx.xx.xx.xx -j DROP
iptables -A OUTPUT -d xxx.xx.xx.xx -j DROP
若你想要寫一個黑名單,並且封鎖他們,可以參考以下範例:
# vi /root/ip.blocked
202.54.20.22
202.54.20.1/24
BLOCKDB="/root/ip.blocked"
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
iptables -A INPUT -s $i -j DROP
iptables -A OUTPUT -d $i -j DROP
done
(參考資料: https://www.cyberciti.biz/tips/howto-block-ipaddress-with-iptables-firewall.html)
可能採取的手段 - 2:
設定密碼輸入錯誤上限
MFA
何謂 MFA ?
MFA 是一種身份驗證系統
,需要多個不同的身份驗證因素才能成功進行身份驗證。多因素身份驗證可以使用多因素身份驗證器或通過提供不同因素的身份驗證器的組合來執行。
其中目前主要的 MFA 身份驗證類型為:
使用 MFA 需要注意的攻擊:
Session 劫持 (Session hijacking)
根據 OWASP 對於 Session hijacking 的定義:
The Session Hijacking attack compromises the session token by stealing or predicting a valid session token to gain unauthorized access to the Web Server.
Session hijacking 是一種透過 "偷取 session token" 或 "預測 session token" 而來拿到未獲得原用戶授權的登入門票
的一種方式。
而攻擊方獲得 Session 的方式可能會是:
MFA 疲勞攻擊 (MFA fatigue attack) (或稱作 MFA 轟炸 或是 MFA 垃圾郵件)
MFA 是一種社交工程的網絡攻擊策略,攻擊者會反復向目標受害者的電子郵件、電話或註冊設備推送 雙因素驗證(2FA)
的請求。
目標:
強迫受害者通過通知確認其身份,從而驗證攻擊者嘗試進入其帳戶或設備的身份。
要達成攻擊目標前的準備:
若要達成目標,需要先啟動 MFA 推送通知,為了啟動通知,攻擊者必須首先以目標用戶身份登錄
。
要啟動 MFA 推送通知,攻擊者必須首先以目標用戶身份登錄。接著,透過不斷登入來推送 "非常多" 的 MFA 推播通知,直到用戶崩潰並按下允許登入為止。
良好的 Session 管控
延續先前的 MFA 多重因子驗證,我們可以發現,儘管 MFA 為登入增加了一道安全門鎖,若攻擊者獲得 Session,我們仍有可能會讓 MFA 被略過,而讓攻擊者有機可趁。
若要良好地進行 Session 控管,我們需要考慮以下幾點:
避免 Session 被存放在不安全的地方
不要透過 Get/Post variables 來傳送你的 session ID
在查詢字符串或 POST 請求中傳遞 Session ID 是有風險的,
因為它不僅可以製作惡意 URL,也可以通過以下方式洩露 Session ID:
比較好的做法:
Session ID 比較好的傳送方式是透過 HTTP cookies
在驗證時,重新產生你的 Session ID:
Session fixation attacks 可以通過簡單地在用戶登錄時重新生成 Session ID 來防範。
確保您的 Web Server 只接受服務器生成的 Session ID。
不過,需要注意:
就其本身而言,這並不能解決 Session Fixation 漏洞。 Hacker 可以輕鬆獲得服務器生成的新 ID,並通過精心設計的 URL 將其傳遞給受害者。
定期更換 Session ID 作為第二層防禦,以防它們被洩露。
網站上的 logout 功能應將 Session ID 標記為 Expired。
考慮強制您的用戶重新登錄,如果他們從單獨的網站(例如 email)訪問您的網站。
感覺文章越寫越要探究的就越多~收穫滿滿!!