Snort入侵檢測系統的應用

伴隨著工業互聯網的蓬勃發展,IT和OT的融合不斷深入,工業網絡所面臨的安全威脅與日俱增。而解決工業網絡面臨的諸多安全問題,提供從網絡邊界、區域到設備終端的完整防護體系也是企業所必需的。

引言

隨著工業信息化建設不斷發展及“中國制造2025”等國家戰略的推出,以及云計算、大數據、人工智能、物聯網等新一代信息技術與制造技術的加速融合,工業控制系統由從原始的封閉獨立走向開放、由單機走向互聯、由自動化走向智能化。因此,工業控制網絡面臨的傳統安全威脅和工控網絡特有安全威脅也在不斷增加。

工業控制網絡互連程度的大大提升使傳統安全威脅可以滲透到工業控制網絡中,原本封閉的工業控制網絡早期并沒有考慮相應其安全問題,在數據竊取、身份認證、無線連接、安全追溯等多方面都存在嚴重的安全風險。同時由于國內外各廠商及協會公布了大量有關工控協議的標準和實現細節,因此攻擊者可以通過深入挖掘工業標準的漏洞,并借此展開針對特定工業協議發起專用的攻擊。

由此可見,工業控制網絡目前存在極大的安全隱患,提供全面、縱深的安全防御策略進行有效的保護迫在眉睫。而邊界安全防護便是首當其沖的重要關鍵環節,工業防火墻自然也就成為了工業控制網絡邊界安全建設的首選安全設備。

利用工業防火墻隔離OT網內各安全區域,全面提升工控網絡的安全性,可有效降低網絡被入侵,有效防止安全威脅遷移擴散,可有效解決工業系統間因缺少隔離引起的安全問題,如因配置錯誤、硬件故障、病毒等引發的安全威脅。因此,本文將介紹PfSense防火墻的基本概念、功能特點以及應用場景等。

基本概念

PfSense是一個基于FreeBSD,專為防火墻和路由器功能定制的開源版本。它被安裝在計算機上作為網絡中的防火墻和路由器存在,并以可靠性著稱,且提供往往只存在于昂貴商業防火墻才具有的特性。它可以通過WEB頁面進行配置,升級和管理而不需要使用者具備FreeBSD底層知識。pfSense通常被部署作為邊界防火墻、路由器、無線接入點、DHCP服務器、DNS服務器和VPN端點。

功能特點

基于穩定可靠的FreeBSD操作系統,能適應全天候運行的要求。

具有用戶認證功能,使用Web網頁的認證方式,配合RADIUS可以實現記費功能。

完善的防火墻,流量控制和數據包過濾功能,保證了網絡的安全,穩定和高速運行。

支持多條WAN線路和負載均衡功能,可大幅度提高網絡出口帶寬,在帶寬擁塞時自動分配負載。

內置了Ipsec和PPTP VPN功能,實現不同分支機構的遠程互聯或遠程用戶安全地訪問內部網。

支持802.1Q VLAN標準,可以通過軟件模擬的方式使得普通的網卡能識別802.1Q的標記,同時為多個VLAN的用戶提供服務。

支持使用額外的軟件包來擴展pfSense功能,為用戶提供更多的功能(如FTP和透明代理)。

詳細的日志功能,方便用戶對網絡出現的事件分析,統計和處理。

使用Web管理界面進行配置(支持SSL),支持遠程管理和軟件版本自動在線升級。

應用場景

1、部署于隔離管理網與控制網之間

工業防火墻控制跨層訪問并深度過濾層級間的數據交換,阻止攻擊者基于管理網向控制網發起攻擊。

2、部署于控制網的不同安全區域間

工業防火墻可將控制網分成不同的安全區域,控制安全區域之間的訪問,并深度過濾各區域間的流量數據,以阻止區域間安全風險的擴散。

3、部署于關鍵設備與控制網之間

工業防火墻檢測訪問關鍵設備的IP,阻止非業務端口的訪問與非法操作指令,記錄關鍵設備的所有訪問與操作記錄,實現對關鍵設備的安全防護與流量審計。

部署過程

1、下載PsSense開源防火墻

2、使用虛擬機安裝PfSense開源防火墻

默認用戶名密碼:admin/pfsense

安裝方法可參考:https://www.jianshu.com/p/b6f4290a88fa

3、防火墻默認為英文版,如果需要設置簡體中文,請按照以下步驟進行。

4、安裝Snort插件

Snort入侵檢測系統詳細參考:https://www.cnblogs.com/HacTF/p/7992787.html

5、Xp環境中開啟Modbus協議仿真軟件

6、在PfSense中配置防火墻策略

添加網絡接口并配置防火策略

策略注釋:IP:10.211.55.3的任意端口連接192.168.163.137的502端口都會報警“有人異常連接Modbus設備”,并設置該報警事件id為12345。

保存設置,啟用防火策略。

在Win7(IP:10.211.55.3)中使用Modbusscan軟件連接Modbus仿真器。

從PfSense防火墻中可以看見報警信息。

針對更多協議的詳細檢測規則,請參考:

http://plcscan.org/blog/2015/10/ids-rules-for-scada-systems/

#
#
# $Id: myicsrules.rules,v 0.1,
#----------
# myicsrules RULES
# ICS protocal/ICS Software communication identification/Filter
# Siemens S7 TCP 102
# Modbus TCP 502
#
#
# 
# 
#
#----------
# Siemens S7 Filter rules
#----------
#設置S7 PLC內部時鐘的時間
alert tcp any any -> any 102 (msg:"Request Time functions Set clock";content:"|03 00|";offset:0;depth:2;content:"|32 07 00|";offset:7;depth:3;content:"|00 01 12 04 11 47 02 00|";offset:17;depth:8;sid:8999907;)
#設置與S7 PLC會話的密碼
alert tcp any any -> any 102 (msg:"Request Security functions Set PLC session password";content:"|03 00|";offset:0;depth:2;content:"|00 01 12 04 11 45 01 00|";offset:17;depth:8;sid:8999908;)
#設置S7 PLC的CPU到STOP狀態
alert tcp any any -> any 102 (msg:"Request CPU functions Set PLC CPU STOP";content:"|29 00 00 00 00 00 09 50 5f 50 52 4f 47 52 41 4d|";sid:8999909;)
#暖啟動S7 PLC的CPU到RUN狀態
alert tcp any any -> any 102 (msg:"Request CPU functions Set PLC CPU Hot Restart";content:"|28 00 00 00 00 00 00 fd 00 00 09 50 5f 50 52 4f|";sid:8999910;)
#冷啟動S7 PLC的CPU到RUN狀態
alert tcp any any -> any 102 (msg:"Request CPU functions Set PLC CPU Cold Restart";content:"|28 00 00 00 00 00 00 fd 00 02 43 20 09 50 5f 50 52 4f 47 52 41 4d|";sid:8999911;)
#正在寫S7 PLC內部的內存變量
alert tcp any any -> any 102 (msg:"Write Var";content:"|03 00|";offset:0;depth:2;content:"|32 01|";offset:7;depth:2;content:"|05|";offset:17;depth:1;sid:8999912;)
#正在請求下載程序塊
alert tcp any any -> any 102 (msg:"Request download";content:"|03 00|";offset:0;depth:2;content:"|32 01|";offset:7;depth:2;content:"|1a|";offset:17;depth:1;sid:8999913;)
#開始請求下載程序塊
alert tcp any any -> any 102 (msg:"Download block";content:"|03 00|";offset:0;depth:2;content:"|32 01|";offset:7;depth:2;content:"|1b|";offset:17;depth:1;sid:8999914;)
#程序塊下載結束
alert tcp any any -> any 102 (msg:"Download ended";content:"|03 00|";offset:0;depth:2;content:"|32 01|";offset:7;depth:2;content:"|1c|";offset:17;depth:1;sid:8999915;)
#正在請求上載程序塊
alert tcp any any -> any 102 (msg:"Start upload";content:"|03 00|";offset:0;depth:2;content:"|32 01|";offset:7;depth:2;content:"|1d|";offset:17;depth:1;sid:8999916;)
#開始上載程序塊
alert tcp any any -> any 102 (msg:"Upload";content:"|03 00|";offset:0;depth:2;content:"|32 01|";offset:7;depth:2;content:"|1e|";offset:17;depth:1;sid:8999917;)
#結束上載程序塊
alert tcp any any -> any 102 (msg:"End upload";content:"|03 00|";offset:0;depth:2;content:"|32 01|";offset:7;depth:2;content:"|1f|";offset:17;depth:1;sid:8999918;)
#刪除S7 PLC內部程序塊操作
alert tcp any any -> any 102 (msg:"Delet block";content:"|03 00|";offset:0;depth:2content:"|05 5f 44 45 4c 45|";sid:8999919;)

#
#----------
# Modbus Filter rules
#----------
#正在寫單線圈寄存器
alert tcp any any -> any 502 (msg:"Modbus TCP/Write Single Coil";content:"|00 00|";offset:2; depth:2; content:"|05|";offset:7;depth:1;sid:8999100;)
#正在寫單個保持寄存器
alert tcp any any -> any 502 (msg:"Modbus TCP/Write Single Register";content:"|00 00|";offset:2; depth:2; content:"|06|";offset:7;depth:1;sid:8999101;)
#正在讀從站狀態
alert tcp any any -> any 502 (msg:"Modbus TCP/Read Exception Status";content:"|00 00|";offset:2; depth:2; content:"|07|";offset:7;depth:1;sid:8999102;)
#診斷設備命令
alert tcp any any -> any 502 (msg:"Modbus TCP/Diagnostics Device";content:"|00 00|";offset:2; depth:2; content:"|08|";offset:7;depth:1;sid:8999103;)
#正在寫多個線圈寄存器
alert tcp any any -> any 502 (msg:"Modbus TCP/Write Multiple Coils";content:"|00 00|";offset:2; depth:2; content:"|0f|";offset:7;depth:1;sid:8999104;)
#正在寫多個保持寄存器
alert tcp any any -> any 502 (msg:"Modbus TCP/Write Multiple registers";content:"|00 00|";offset:2; depth:2; content:"|10|";offset:7;depth:1;sid:8999105;)
#正在寫文件參數
alert tcp any any -> any 502 (msg:"Modbus TCP/Write File Record";content:"|00 00|";offset:2; depth:2; content:"|15|";offset:7;depth:1;sid:8999106;)
#屏蔽寫寄存器
alert tcp any any -> any 502 (msg:"Modbus TCP/Mask Write Register";content:"|00 00|";offset:2; depth:2; content:"|16|";offset:7;depth:1;sid:8999107;)
#讀寫多個寄存器
lert tcp any any -> any 502 (msg:"Modbus TCP/Read/Write Multiple registers";content:"|00 00|";offset:2; depth:2; content:"|17|";offset:7;depth:1;sid:8999108;)
#正在枚舉設備信息
alert tcp any any -> any 502 (msg:"Modbus TCP/Read Device Identification";content:"|00 00|";offset:2; depth:2; content:"|2B|";offset:7;depth:1;sid:8999109;)
#正在枚舉施耐德昆騰PLC的內存串號
alert tcp any any -> any 502 (msg:"Schneider PLC(Quantumn) uses function code 90 for communications the Unity pro software Request Memory Card ID";content:"|00 00|";offset:2;depth:2;content:"|5a|";offset:7;depth:1;content:"|00 06 06|";offset:8;depth:3;sid:8999110;)
#正在枚舉施耐德昆騰PLC的CPU模塊信息
alert tcp any any -> any 502 (msg:"Schneider PLC(Quantumn) uses function code 90 for communications the Unity pro software Request CPU Module info";content:"|00 00|";offset:2;depth:2;content:"|5a|";offset:7;depth:1;content:"|00 02|";offset:8;depth:2;dsize:10;sid:8999111;)
#正在枚舉施耐德昆騰PLC內部的工程名稱
alert tcp any any -> any 502 (msg:"Schneider PLC(Quantumn) uses function code 90 for communications the Unity pro software Request Project Project file name";content:"|00 00|";offset:2;depth:2;content:"|5a|";offset:7;depth:1;content:"|f6 00|";offset:17;depth:2;sid:8999112;)
#正在枚舉施耐德昆騰PLC內部的工程上次修改時間
alert tcp any any -> any 502 (msg:"Schneider PLC(Quantumn) uses function code 90 for communications the Unity pro software Request Project Information(Revision and Last Modified)";content:"|00 00|";offset:2;depth:2;content:"|5a|";offset:7;depth:1;content:"|03 00|";offset:17;depth:2;sid:8999113;)
#正在將施耐德昆騰PLC的CPU設置到STOP狀態
alert tcp any any -> any 502 (msg:"Schneider PLC(Quantumn) uses function code 90 for communications the Unity pro software Set PLC CPU STOP";content:"|00 00|";offset:2;depth:2;content:"|5a|";offset:7;depth:1;content:"|40|";offset:9;depth:1;sid:8999114;)
#正在將施耐德昆騰PLC的CPU設置到RUN狀態
alert tcp any any -> any 502 (msg:"Schneider PLC(Quantumn) uses function code 90 for communications the Unity pro software Set PLC CPU Restart";content:"|00 00|";offset:2;depth:2;content:"|5a|";offset:7;depth:1;content:"|41|";offset:9;depth:1;sid:8999115;)

下面舉例說明(以寫單線圈寄存器為例)

alert tcp any any -> any 502 (msg:"Modbus TCP/Write Single Coil";content:"|00 00|";offset:2; depth:2; content:"|05|";offset:7;depth:1;sid:8999100;)

其中content:”|05|”表示功能碼為05

在Win7中連接Modbus協議仿真器并進行寫線圈操作。

查看防火墻報警信息。

總結

伴隨著工業互聯網的蓬勃發展,IT和OT的融合不斷深入,工業網絡所面臨的安全威脅與日俱增。而解決工業網絡面臨的諸多安全問題,提供從網絡邊界、區域到設備終端的完整防護體系也是企業所必需的。

PS:本文中所用到的開源防火墻PfSense鏡像以及軟件,可以關注“TideSec安全團隊”公眾號回復”工業防火墻”獲取。

更多精彩
取消
Loading...

填寫個人信息

姓名
電話
郵箱
公司
行業
職位
css.php 什么app能玩二人麻将