保護 Zimbra OSE 免受暴力破解和 DoS 攻擊

Zimbra Collaboration Suite 開源版擁有多種強大的信息安全工具。 他們之中 後屏幕 - 一種保護郵件服務器免受殭屍網絡 ClamAV 攻擊的解決方案 - 一種可以掃描傳入文件和信件以檢測惡意軟件感染的防病毒軟件,以及 SpamAssassin的 當今最好的垃圾郵件過濾器之一。 然而,這些工具無法保護 Zimbra OSE 免受此類攻擊,例如暴力破解。 不是最優雅,但仍然非常有效的密碼暴力使用特殊字典不僅充滿了成功破解的可能性以及所有隨之而來的後果,而且還會在處理所有不成功嘗試的服務器上創建大量負載使用 Zimbra OSE 破解服務器。

保護 Zimbra OSE 免受暴力破解和 DoS 攻擊

原則上,您可以使用標準 Zimbra OSE 工具保護自己免受暴力破解。 密碼安全策略設置允許您設置密碼輸入嘗試失敗的次數,超過此次數後可能會受到攻擊的帳戶將被阻止。 這種方法的主要問題是,在某些情況下,一名或多名員工的賬戶可能會因與他們無關的暴力攻擊而被封鎖,而由此導致的員工工作停工可能會帶來很大的損失。給公司造成損失。 這就是為什麼最好不要使用這種防止暴力破解的選項的原因。

保護 Zimbra OSE 免受暴力破解和 DoS 攻擊

為了防止暴力破解,一種名為 DoSFilter 的特殊工具更適合,它內置於 Zimbra OSE 中,可以通過 HTTP 自動終止與 Zimbra OSE 的連接。 也就是說,DoSFilter的原理與PostScreen的原理類似,只是用於不同的協議。 DoSFilter 最初旨在限制單個用戶可以執行的操作數量,但也可以提供針對暴力破解的保護。 它與 Zimbra 內置工具的主要區別在於,在一定次數的不成功嘗試之後,它不會阻止用戶本人,而是阻止多次嘗試登錄一個或另一個帳戶的 IP 地址。 由於這一點,系統管理員不僅可以保護自己免受暴力破解,還可以通過簡單地將企業內部網絡添加到受信任的 IP 地址和子網列表來避免阻止企業員工。

DoSFilter 的一大優勢在於,除了多次嘗試登錄一個或另一個帳戶之外,使用此工具,您可以自動阻止那些擁有員工身份驗證數據的入侵者,然後成功登錄他的帳戶並開始發送數百個對服務器的請求。

您可以使用以下控制台命令配置 DoSFilter:

  • zimbraHttpDosFilterMaxRequestsPerSec - 使用此命令,您可以設置每個用戶允許的最大連接數。 默認情況下,此值為 30 個連接。
  • zimbraHttpDosFilterDelayMillis - 使用此命令,您可以為超過上一個命令指定的限制的連接設置以毫秒為單位的延遲。 除了整數值之外,管理員還可以指定 0 表示完全沒有延遲,指定 -1 則簡單地終止所有超過指定限制的連接。 默認情況下,此值為 -1。
  • zimbraHttpThrottleSafeIPs - 使用此命令,管理員可以指定不受上述限制影響的可信 IP 地址和子網。 請注意,此命令的語法可能因所需結果而異。 因此,例如,通過輸入命令 zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1,您將完全覆蓋整個列表,只留下一個 IP 地址。 如果你輸入命令 zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1,您輸入的 IP 地址將被添加到白名單中。 同樣,使用減號,您可以從允許列表中刪除任何 IP。

請注意,在使用 Zextras Suite Pro 擴展時,DoSFilter 會產生許多問題。 為了避免它們,我們建議使用命令將同時連接數從 30 增加到 100 zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. 此外,我們建議您將公司內部網絡添加到允許列表中。 您可以使用以下命令執行此操作 zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. 對 DoSFilter 進行任何更改後,請務必使用以下命令重新啟動郵件服務器 zmmailboxdctl 重新啟動.

DoSFilter 的主要缺點是它工作在應用程序級別,因此只能限制攻擊者在服務器上執行各種操作的能力,而不會限制連接到服務器的能力。 正因為如此,向服務器發送請求進行身份驗證或發送信件,雖然它們顯然會失敗,但仍然是一個很好的老式 DoS 攻擊,無法在如此高的級別上停止。

為了使用 Zimbra OSE 完全保護您的公司服務器,您可以使用 Fail2ban 等解決方案,這是一個框架,可以持續監控信息系統日誌中的重複操作,並通過更改防火牆設置來阻止入侵者。 如此低的阻塞級別允許您在 IP 連接到服務器的階段就阻止入侵者。 因此,Fail2Ban 可以完美補充使用 DoSFilter 構建的保護。 讓我們了解如何將 Fail2Ban 與 Zimbra OSE 結合起來,從而提高企業 IT 基礎設施的安全性。

與任何其他企業級應用程序一樣,Zimbra Collaboration Suite Open-Source Edition 保留其工作的詳細日誌。 大部分都存放在文件夾中 /opt/zimbra/日誌/ 以文件的形式。 這裡只是其中的幾個:

  • mailbox.log - Jetty 郵件服務日誌
  • audit.log - 身份驗證日誌
  • clamd.log - 殺毒操作日誌
  • freshclam.log - 防病毒更新日誌
  • convertd.log - 附件轉換器日誌
  • zimbrastats.csv - 服務器性能日誌

還可以在文件中找到 Zimbra 日誌 /var/log/zimbra.log,其中保存了 Postfix 和 Zimbra 本身的日誌。

為了保護我們的系統免受暴力攻擊,我們將監控 郵箱.log, 審計日誌 и zimbra 日誌.

為了讓一切正常工作,您需要在 Zimbra OSE 服務器上安裝 Fail2Ban 和 iptables。 如果您使用的是 Ubuntu,則可以使用以下命令執行此操作 dpkg -s 失敗2禁止,如果您使用的是 CentOS,那麼您可以使用以下命令進行檢查 yum 列出已安裝的 fail2ban. 如果您沒有安裝 Fail2Ban,則安裝它不會有問題,因為幾乎所有標準存儲庫中都包含此軟件包。

安裝所有必要的軟件後,您可以開始配置 Fail2Ban。 為此,您需要創建一個配置文件 /etc/fail2ban/filter.d/zimbra.conf,我們在其中為 Zimbra OSE 日誌編寫正則表達式,它將匹配無效的登錄嘗試並觸發 Fail2Ban 機制。 以下是 zimbra.conf 的內容示例,其中包含一組正則表達式,對應於身份驗證嘗試失敗時 Zimbra OSE 中發出的各種錯誤:

# Fail2Ban configuration file
 
[Definition]
failregex = [ip=<HOST>;] account - authentication failed for .* (no such account)$
                        [ip=<HOST>;] security - cmd=Auth; .* error=authentication failed for .*, invalid password;$
                        ;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap; error=authentication failed for .* invalid password;$
                        ;oip=<HOST>;.* security - cmd=Auth; .* protocol=imap; error=authentication failed for .* invalid password;$
                        [oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$
                        WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security - cmd=AdminAuth; .* error=authentication failed for .*;$

ignoreregex =

Zimbra OSE 的正則表達式編譯完成後,就該開始編輯 Fail2ban 本身的配置了。 此實用程序的設置位於文件中 /etc/fail2ban/jail.conf. 為了以防萬一,我們將使用命令製作它的備份副本 cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. 之後,我們將把這個文件變成下面的形式:

# Fail2Ban configuration file
 
[DEFAULT]
ignoreip = 192.168.0.1/24
bantime = 600
findtime = 600
maxretry = 5
backend = auto
 
[ssh-iptables]
enabled = false
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, [email protected], [email protected]]
logpath = /var/log/messages
maxretry = 5
 
[sasl-iptables]
enabled = false
filter = sasl
backend = polling
action = iptables[name=sasl, port=smtp, protocol=tcp]
sendmail-whois[name=sasl, [email protected]]
logpath = /var/log/zimbra.log
 
[ssh-tcpwrapper]
enabled = false
filter = sshd
action = hostsdeny
sendmail-whois[name=SSH, dest=support@ company.ru]
ignoreregex = for myuser from
logpath = /var/log/messages
 
[zimbra-account]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-account]
sendmail[name=zimbra-account, [email protected] ]
logpath = /opt/zimbra/log/mailbox.log
bantime = 600
maxretry = 5
 
[zimbra-audit]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-audit]
sendmail[name=Zimbra-audit, [email protected]]
logpath = /opt/zimbra/log/audit.log
bantime = 600
maxretry = 5
 
[zimbra-recipient]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-recipient]
sendmail[name=Zimbra-recipient, [email protected]]
logpath = /var/log/zimbra.log
bantime = 172800
maxretry = 5
 
[postfix]
enabled = true
filter = postfix
action = iptables-multiport[name=postfix, port=smtp, protocol=tcp]
sendmail-buffered[name=Postfix, [email protected]]
logpath = /var/log/zimbra.log
bantime = -1
maxretry = 5

雖然這個示例非常通用,但還是值得解釋一下您在自己配置 Fail2Ban 時可能想要更改的一些設置:

  • 忽略IP - 使用此參數,您可以指定特定的 ip 或子網,Fail2Ban 不應檢查的地址。 通常,企業的內部網絡和其他可信地址被添加到忽略列表中。
  • 萬泰 - 違規者將被禁止的時間。 以秒為單位測量。 值 -1 表示無限期禁止。
  • 最大重試 - 一個 ip 地址可以嘗試訪問服務器的最大次數。
  • 發送郵件 - 允許您自動發送有關 Fail2Ban 操作的電子郵件通知的設置。
  • 尋找時間 - 允許您設置時間間隔的設置,在該時間間隔之後 ip 地址可以在最大不成功嘗試次數用完後再次嘗試訪問服務器(maxretry 參數)

使用 Fail2Ban 設置保存文件後,只剩下使用命令重新啟動此實用程序 服務fail2ban重啟. 重新啟動後,Zimbra 主日誌將持續監控正則表達式。 由於這一點,管理員將能夠幾乎排除攻擊者滲透到 Zimbra Collaboration Suite 開源版郵箱的任何可能性,而且還可以保護 Zimbra OSE 中運行的所有服務,並了解任何未經授權訪問的企圖.

對於與 Zextras Suite 相關的所有問題,您可以通過電子郵件聯繫 Zextras 代表 Ekaterina Triandafilidi [電子郵件保護]

來源: www.habr.com

添加評論