據統計,網絡流量每年以50%左右的速度增長。 這導致設備負載增加,特別是增加了IDS/IPS的性能要求。 您可以購買昂貴的專用硬件,但還有一種更便宜的選擇 - 引入開源系統之一。 許多新手管理員發現安裝和配置免費 IPS 很困難。 就 Suricata 而言,這並不完全正確 - 您可以安裝它並在幾分鐘內開始使用一組免費規則來抵禦典型的攻擊。
為什麼我們需要另一個開放的IPS?
Snort 長期以來一直被視為標準,自 6 年代末以來一直在開發,因此它最初是單線程的。 多年來,所有現代功能都出現在其中,例如 IPvXNUMX 支持、分析應用程序級協議的能力或通用數據訪問模塊。
核心 Snort 2.X 引擎已經學會了與多個內核一起工作,但仍然是單線程,因此無法最佳地利用現代硬件平台。
這個問題在系統的第三版中得到了解決,但準備時間太長,從頭開始編寫的Suricata才成功上市。 2009 年,它開始被開發為 Snort 的多線程替代品,具有開箱即用的 IPS 功能。 該代碼根據 GPLv2 許可證分發,但該項目的財務合作夥伴可以訪問該引擎的封閉版本。 系統的第一個版本中出現了一些可擴展性問題,但很快就得到了解決。
為什麼是蘇里卡?
Suricata 有幾個模塊(類似於 Snort):捕獲、捕獲、解碼、檢測和輸出。 默認情況下,捕獲的流量在一個流中解碼之前進行,儘管這會給系統帶來更多負載。 如果有必要,可以在設置中劃分線程並在處理器之間分配 - Suricata 針對特定硬件進行了很好的優化,儘管這不再是初學者的 HOWTO 級別。 還值得注意的是,Suricata 擁有基於 HTP 庫的高級 HTTP 檢查工具。 它們還可以用於在不被檢測到的情況下記錄流量。 系統還支持IPv6解碼,包括IPv4-in-IPv6隧道、IPv6-in-IPv6隧道等。
可以使用不同的接口來攔截流量(NFQueue、IPFRing、LibPcap、IPFW、AF_PACKET、PF_RING),並且在Unix Socket模式下,可以自動分析另一個嗅探器捕獲的PCAP文件。 此外,Suricata 的模塊化架構可以輕鬆插入新元素來捕獲、解碼、解析和處理網絡數據包。 還需要注意的是,在 Suricata 中,流量是通過操作系統的常規過濾器來阻止的。 GNU/Linux 對於 IPS 的工作方式有兩個選項:通過 NFQUEUE 隊列(NFQ 模式)和通過零複製(AF_PACKET 模式)。 第一種情況,進入iptables的數據包被發送到NFQUEUE隊列,在那裡可以進行用戶級別的處理。 Suricata 根據自己的規則運行它,並發出三個判決之一:NF_ACCEPT、NF_DROP 和 NF_REPEAT。 前兩個是不言自明的,而最後一個允許對數據包進行標記並將其發送到當前 iptables 表的頂部。 AF_PACKET 模式速度更快,但它對系統施加了許多限制:它必須有兩個網絡接口並作為網關工作。 被阻止的數據包根本不會轉發到第二個接口。
Suricata 的一個重要特性是能夠使用 Snort 的開發。 特別是,管理員可以訪問 Sourcefire VRT 和 OpenSource Emerging Threats 規則集,以及商業 Emerging Threats Pro。 統一的輸出可以使用流行的後端進行解析,還支持PCAP和Syslog輸出。 系統設置和規則存儲在YAML文件中,這些文件易於閱讀並且可以自動處理。 Suricata 引擎可識別許多協議,因此規則不需要綁定到端口號。 此外,Flowbits的概念在Suricata的規則中得到了積極的實踐。 為了跟踪觸發器,會話變量用於創建和應用各種計數器和標誌。 許多 IDS 將不同的 TCP 連接視為單獨的實體,並且可能看不到它們之間表明攻擊開始的連接。 Suricata 試圖了解整個情況,並在許多情況下識別分佈在不同連接上的惡意流量。 它的優點你已經講了半天了,我們還是進入安裝配置吧。
怎麼安裝?
我們將在運行 Ubuntu 18.04 LTS 的虛擬服務器上安裝 Suricata。 所有命令必須代表超級用戶 (root) 執行。 最安全的選項是以普通用戶身份通過 SSH 連接到服務器,然後使用 sudo 實用程序來提升權限。 首先你需要安裝我們需要的軟件包:
sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-https
連接外部存儲庫:
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
安裝最新穩定版本的 Suricata:
sudo apt-get install suricata
如有必要,編輯配置文件名稱,將默認的 eth0 替換為服務器外部接口的實際名稱。 默認設置存儲在 /etc/default/suricata 文件中,自定義設置存儲在 /etc/suricata/suricata.yaml 中。 配置 IDS 主要限於編輯此配置文件。 它有很多參數,從名稱和用途上看,它們與 Snort 中的類似參數一致。 然而,語法完全不同,但該文件比 Snort 配置更容易閱讀,並且有很好的註釋。
sudo nano /etc/default/suricata
и
sudo nano /etc/suricata/suricata.yaml
注意力! 在開始之前,值得檢查 vars 部分中變量的值。
要完成設置,您需要安裝 suricata-update 來更新和加載規則。 做到這一點非常容易:
sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-update
接下來,我們需要運行 suricata-update 命令來安裝 Emerging Threats Open 規則集:
sudo suricata-update
要查看規則源列表,請運行以下命令:
sudo suricata-update list-sources
更新規則源:
sudo suricata-update update-sources
重新訪問更新的來源:
sudo suricata-update list-sources
如有必要,您可以包含可用的免費資源:
sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklist
之後,您需要再次更新規則:
sudo suricata-update
這樣就完成了 Ubuntu 18.04 LTS 中 Suricata 的安裝和初始配置。 然後有趣的事情就開始了:在下一篇文章中,我們將通過 VPN 將虛擬服務器連接到辦公網絡,並開始分析所有傳入和傳出流量。 我們將特別注意阻止 DDoS 攻擊、惡意軟件活動以及利用公共網絡訪問服務中的漏洞的嘗試。 為了清楚起見,將模擬最常見類型的攻擊。
來源: www.habr.com