工业防火墙(工业网闸)详细设计( 三)
工业防火墙的核心组件,如动态流内核模块nf_conntrack_xxx.ko和nf_nat_xxx.ko,负责处理工业网络中的动态流协议,确保数据安全与合规。其中,nf_opc_da.ko和nf_nat_opc.ko是关键模块,专为OPC DA(基于TCP的DCOM)设计,解决协议映射、跨NAT的IP和端口转换、动态数据流管理和数据流控制问题。比如,防火墙在建立映射关系时,OPC模块会智能调整动态数据流的目标地址,处理OPC DA协议特有的变长地址,并应对可能遇到的TCP分片挑战。
在映射模式下,OPC客户端和服务器的IP地址长度需一致,若无法满足,可采用路由模式。虽然OPC DA TCP可能会遇到大包分片,但现有的TCP分片重组功能通常能处理大部分场景。其核心机制在于nf_conntrack结构中的TCP分片链表。OPC DA流程包括:
- 初始化: 注册nf_conntrack_helper结构,针对135端口(可配置最多8个),并设置TSO参数。
- 数据包处理: opc_parent_help()函数调用__opc_help(),通过mark和三次握手检测,区分原始流(OPC_CT_TYPE_PARENT)和动态流(OPC_CT_TYPE_CHILD),并优化原始流的处理流程。
对于CALL响应数据包,process_opc_resp_frame()函数会验证会话上下文,确保数据完整。在处理远程实例创建响应时,涉及到如iveresp_objref()和activeresp_objref()等函数,它们会处理动态流地址的NAT替换,通过as传递参数,并设置期望流的IP、端口和协议等信息。
工业防火墙参数设置如下:
- ports: 配置OPC端口,指定处理特定数据包的连接。
- opc_debug_level: 调整调试级别,从0到3,0表示关闭调试。
- 其他选项如do_defrag、check_mark、check_packet_strict_level等,用于优化TCP分片处理、数据包格式检查等。
在OPC UA模块中,OPC UA基于OPC DA扩展,提供了更高级别的安全性和灵活性。它支持WS-SecureConversation和UA-SecureConversation安全协议,以及配置TCP/IP传输。SOAP/HTTP在OPC UA通信中扮演重要角色,通过标准端口传输,并在防火墙环境中保持兼容性。每个消息包都包含了详细的元数据和安全信息,确保数据交换的安全和可靠性。
无论是OPC DA还是OPC UA,工业防火墙都在工业网络环境中扮演了至关重要的角色,通过精细的协议处理和安全策略,保障了数据的传输与控制。
绛旓細娴佹帶锛屼笂缃戣涓虹鐞嗭紝涔嬬被鐨勪骇鍝侊紝鐜板湪鍩烘湰閮借瀺鍚堝湪涓璧蜂簡銆備綘璇寸殑缃戦椄璺闃茬伀澧鐨勫尯鍒紝鎴戣涓烘渶澶х殑鍖哄埆鏄槻鐏鏄疄鏃惰繛鎺ヤ袱涓綉缁滅殑锛岃岀綉闂镐笉鏄紝浠栨槸鎶婁袱涓綉缁滈殧寮锛屽湪閫氳繃涓棿鐨勪竴涓俊鎭浇浣擄紝鏉ュ洖鐨勫湪涓や釜缃戠粶涔嬮棿浼犺緭鏁版嵁銆傝櫧鐒剁綉闂镐篃鏈夐槻鐏鐨勪竴浜涘姛鑳斤紝浣嗘槸杩樻槸涓嶈兘瀹屽叏鍙栦唬闃茬伀澧欙紝...
绛旓細瀹夊叏闅旂缃戦椄鍜闃茬伀澧鐨勫尯鍒湪浜庡姛鑳藉拰搴旂敤鍦烘櫙銆傚畨鍏ㄩ殧绂荤綉闂告槸涓绉嶇墿鐞嗛殧绂昏澶囷紝鍙互灏嗙綉缁滃垎涓哄涓殧绂诲尯鍩燂紝瀹炵幇涓嶅悓鍖哄煙涔嬮棿鐨勭綉缁滈殧绂诲拰鏁版嵁瀹夊叏淇濇姢銆傚叾涓昏浣滅敤鏄槻姝㈠唴缃戞敾鍑诲拰澶栫綉濞佽儊锛岄傜敤浜庝紒涓氥佹斂搴滅瓑鏈烘瀯鐨勫唴閮ㄧ綉缁滃畨鍏ㄤ繚鎶ゃ傝岄槻鐏鏄竴绉嶇綉缁滃畨鍏ㄨ澶囷紝鍙互瀵圭綉缁滄祦閲忚繘琛岀洃鎺у拰杩囨护锛岄樆姝㈡湭缁...
绛旓細闃茬伀澧鏈缁堢洰鐨勬槸涓轰簡鍐呯綉鐨勫畨鍏ㄩ槻鎶わ紝闃叉澶栫綉瀵瑰唴缃戠殑鏀诲嚮锛屽悓鏃跺鍐呯綉璁块棶浜掕仈缃戠殑琛屼负杩涜鎺у埗銆傝缃戦椄鐨勫伐浣滃師鐞嗘槸淇℃伅鎽嗘浮锛屼篃灏辨槸鍙互瀹炵幇瀹屽叏闅旂鐨勪笉鍚岀綉娈典箣闂寸殑鏈夋潯浠惰闂紝杩欐槸闃茬伀澧欏疄鐜颁笉浜嗙殑銆備妇涓緥瀛愯锛屽鏋滀綘鏈変袱涓綉娈垫兂浜掔浉璁块棶锛岄氳繃闃茬伀澧欒缃殑璇濆彧鏄氳繃绛栫暐鍜岃矾鐢卞疄鐜帮紝鑰岄氳繃缃戦椄鐨...
绛旓細缃戝叧銆缃戦椄鍜闃茬伀澧鏄綉缁滃畨鍏ㄧ殑涓変釜閲嶈缁勪欢锛屽畠浠湪鍔熻兘鍜屼綔鐢ㄤ笂鏈変竴瀹氱殑鍖哄埆銆 缃戝叧锛氱綉鍏虫槸涓绉嶇綉缁滆澶囷紝閫氬父鐢ㄤ簬杩炴帴涓や釜涓嶅悓鐨勭綉缁滐紝骞跺厖褰撴暟鎹紶杈撶殑涓粙銆
绛旓細鑰闃茬伀澧鏄鍦ㄤ繚鎸佸唴缃戝拰澶栫綉鐣呴氱殑鎯呭喌涓嬶紝灏藉彲鑳界殑淇濇姢鍐呯綉鐨勫畨鍏紝铏界劧闃茬伀澧欏叿鏈変竴瀹氱殑闃叉姢鑳藉姏锛屼絾姣曠珶鍐呯綉鍜屽缃戠殑缃戠嚎杩樻槸鑱旈氱殑锛屽彧瑕佺綉绾挎槸鑱旈氱殑锛屽氨涓瀹氭湁琚叆渚电殑鍙兘銆傝缃戦椄鏄鍦ㄤ繚鎸佺粷瀵瑰畨鍏ㄧ殑鎯呭喌涓嬶紝灏藉彲鑳界殑杩涜閫氫俊锛屽鏋滀笉瀹夊叏锛岀珛鍒绘柇寮銆傝繖绉嶆柇寮绫讳技浜庣墿鐞嗗眰闈㈢殑鏂紑锛屽彲浠ョ悊瑙f垚锛...
绛旓細瀹夊叏闅旂缃戦椄鏄敱杞欢鍜岀‖浠剁粍鎴愩 瀹夊叏闅旂缃戦椄鐨勭‖浠惰澶囩敱涓夐儴鍒嗙粍鎴:澶栭儴澶勭悊鍗曞厓銆佸唴閮ㄥ鐞嗗崟鍏冦侀殧绂诲畨鍏ㄦ暟鎹氦鎹㈠崟鍏冦傚畨鍏ㄦ暟鎹氦鎹㈠崟鍏冧笉鍚屾椂涓庡唴澶栫綉澶勭悊鍗曞厓杩炴帴锛屼负2+1鐨勪富鏈烘灦鏋勩傞殧绂荤綉闂搁噰鐢⊿U-Gap瀹夊叏闅旂鎶鏈紝鍒涘缓涓涓唴銆佸缃戠墿鐞嗘柇寮鐨勭幆澧冦闃茬伀澧鍙槸鍦ㄨ蒋浠舵柟闈㈣繘琛岄槻寰$殑锛屼笉娑夊強鍒扮墿鐞嗙殑...
绛旓細1 鍔熻兘妯″潡 锛氬畨鍏ㄩ殧绂婚椄闂ㄧ殑鍔熻兘妯″潡鏈夛細瀹夊叏闅旂銆佸唴鏍搁槻鎶ゃ佸崗璁浆鎹佺梾姣掓煡鏉銆佽闂帶鍒躲佸畨鍏ㄥ璁°佽韩浠借璇 2 闃叉鏈煡鍜屽凡鐭ユ湪椹敾鍑 闃茬伀澧(鑻辨枃锛歠irewall)鏄竴椤瑰崗鍔╃‘淇濅俊鎭畨鍏ㄧ殑璁惧锛屼細渚濈収鐗瑰畾鐨勮鍒欙紝鍏佽鎴栨槸闄愬埗浼犺緭鐨勬暟鎹氳繃銆傞槻鐏鍙互鏄竴鍙颁笓灞炵殑纭欢涔熷彲浠ユ槸鏋惰鍦ㄤ竴鑸‖浠朵笂鐨勪竴濂...
绛旓細缃戦椄鏄墿鐞嗛殧鏂唴/澶栫綉锛岀劧鍚庡湪鍐呴儴浣跨敤鐢佃矾娴佽浆鏁版嵁 闃茬伀澧鏄昏緫闅旀柇鍐/澶栫綉锛屽绗﹀悎瑙勫垯鐨勮闂斁琛 鐩稿悓鐐规槸锛岄兘鑳介拡瀵瑰唴澶栫綉涔嬮棿杩涜璁块棶瀹夊叏鐨勯槻鎶 鍖哄埆鏄細闃茬伀澧欐槸閫氳繃閫昏緫鍜岃鍒欏疄鐜扮殑锛岀綉闂告槸閫氳繃鐗╃悊鏂瑰紡瀹炵幇鐨勶紝瀵逛簬瀹夊叏绾у埆瑕佹眰杈冮珮鐨勬秹瀵嗗唴缃戯紝涓鑸噰鐢ㄧ綉闂搞備竴鑸綉缁滀笉娑夊瘑鐨勶紝涓鑸噰鐢ㄩ槻鐏銆傝...
绛旓細缃戝叧鏄綉缁滀笌缃戠粶鐨勬帴鍙c闃茬伀澧鏄繘鍑虹綉缁滅殑涓涓繚鎶ゆ帾鏂斤紝鐩戞帶娴侀噺锛屼繚鎶ゆ暟鎹畨鍏ㄧ殑銆缃戦椄娌℃湁鍚杩囷紝
绛旓細鐢变簬闃茬伀澧閫氬父寤虹珛鍦═CP/IP鍗忚鐨勯氳矾涓,闇瑕佹彁渚涘澶栨湇鍔,鑰屾嫆缁濇湇鍔℃敾鍑(DOS),灏辨槸鍒╃敤TCP/IP鍗忚鐨勭己闄,瀵逛簬闅旂缃戦椄澶栭儴澶勭悊鍗曞厓涓嶉渶瑕佽繍琛屼换浣曟湇鍔″櫒绋嬪簭,骞朵繚璇佷簡涓庡唴缃戜笉瀛樺湪TCP/IP鍗忚閫氳矾,涓嶆帴鍙楁潵鑷閮ㄤ换浣曚富鏈虹殑鍙戣捣杩炴帴(TCP SYN),杩欐牱澶栭儴涓绘満瀵逛簬鍥犵壒缃戞潵璇村氨鍍忚闅愯棌浜嗕竴鏍,鏈夋晥淇濊瘉浜嗛殧绂荤綉闂告湰韬拰...