Cisco ASA syslog 消息、出站通信的反向源和目标?

网络工程 思科 思科-ASA 系统日志
2022-03-01 14:00:36

我正在编写自己的解析器,用于将 ASA 防火墙的 syslog 输出转换为 CSV 以进行更深入的分析。我不明白的是,为什么当流量出站时会切换“for”和“to”机器。

假设我有一个作为“out”区域的 DMZ 接口和一个作为“in”区域的 LAN 接口。

当我从外部电脑 RDP 到内部电脑时,我看到:

%ASA-6-302013: Built inbound TCP connection 21955057 for DMZ:192.168.1.110/56388 (192.168.1.110/56388) to LAN:192.168.2.110/3389 (192.168.2.110/3389)

正如预期的那样,DMZ 中的计算机 192.168.1.110 正在随机端口LAN 网络中计算机 192.168.2.110 的 TCP/3389 建立 RDP 连接。连接是入站的,因为它从防火墙的外部接口进入受它保护的网络。

但是,当我从 LAN 内的计算机连接到 DMZ 中的计算机时会发生什么?

%ASA-6-302013: Built outbound TCP connection 13538633 for DMZ:192.168.1.110/3389 (192.168.1.110/3389) to LAN:192.168.2.110/50927 (192.168.2.110/50927)

“for”和“to”保持不变,唯一知道通信从“to”主机开始的方法是消息中的outbound关键字(端口除外,但并不总是很明显)。

所以我在解析器中所做的是编写正则表达式以在“for”之后提取地址和端口并将其放入我的“源”列中,对于“to”并将它们标记为“destination”并将源切换为如果通信是入站的,则为目的地

我这样做对吗?这种语法不是令人费解和误导吗?使用 ICMP 时情况会变得更糟,因为有回显请求和回显回复,以及找出谁在 ping 谁变得更加复杂。

1个回答

好的,显然这也是 Splunk 插件的功能。请参阅“Cisco ASA 的 Splunk 附加组件” https://splunkbase.splunk.com/app/1620/

# direction is inbound
[cisco_asa_message_id_302013_302015_inbound]
REGEX = -30201[35]:\s*(\S+)\s+([Ii]nbound)\s+(\S+)(?:\s+connection)?\s+(\d+)\s+for\s+([^:\s]+)\s*:\s*(?:((?:[\d+\.]+|[a-fA-F0-9]*:[a-fA-F0-9]*:[a-fA-F0-9:]*))|(\S+))\s*\/\s*(\d+)\s*(?:\(\s*(?:((?:[\d+\.]+|[a-fA-F0-9]*:[a-fA-F0-9]*:[a-fA-F0-9:]*))|(\S+))\s*\/\s*(\d+)\s*\)(?:\s*\(\s*(?:([\S^\\\[]+)\s*[\\\[]\s*)?([^\s\|\)]+)(?:[^\]]+\])?\s*\))?\s+to\s+([^:\s]+)\s*:\s*(?:((?:[\d+\.]+|[a-fA-F0-9]*:[a-fA-F0-9]*:[a-fA-F0-9:]*))|(\S+))\s*\/\s*(\d{1,5})\s*\(\s*(?:((?:[\d+\.]+|[a-fA-F0-9]*:[a-fA-F0-9]*:[a-fA-F0-9:]*))|(\S+))\s*\/\s*(\d+)\s*\)(?:\s*\(\s*(?:([\S^\\]+)\\)?([\w\-_]+)\s*\))?(?:\s*\(\s*([^\)\s]+)\s*\))?|\(\s*(\S+)\s*\))
FORMAT = action::$1 direction::$2 transport::$3 session_id::$4 src_interface::$5 src_ip::$6 src_host::$7 src_port::$8 src_translated_ip::$9 src_translated_host::$10 src_translated_port::$11 src_nt_domain::$12 src_user::$13 dest_interface::$14 dest_ip::$15 dest_host::$16 dest_port::$17 dest_translated_ip::$18 dest_translated_host::$19 dest_translated_port::$20 dest_nt_domain::$21 dest_user::$22 user::$23 user::$24

# direction is outbound - source and destination fields are swapped
[cisco_asa_message_id_302013_302015_outbound]
REGEX = -30201[35]:\s*(\S+)\s+([Oo]utbound)\s+(\S+)(?:\s+connection)?\s+(\d+)\s+for\s+([^:\s]+)\s*:\s*(?:((?:[\d+\.]+|[a-fA-F0-9]*:[a-fA-F0-9]*:[a-fA-F0-9:]*))|(\S+))\s*\/\s*(\d+)\s*(?:\(\s*(?:((?:[\d+\.]+|[a-fA-F0-9]*:[a-fA-F0-9]*:[a-fA-F0-9:]*))|(\S+))\s*\/\s*(\d+)\s*\)(?:\s*\(\s*(?:([\S^\\\[]+)\s*[\\\[]\s*)?([^\s\|\)]+)(?:[^\]]+\])?\s*\))?\s+to\s+([^:\s]+)\s*:\s*(?:((?:[\d+\.]+|[a-fA-F0-9]*:[a-fA-F0-9]*:[a-fA-F0-9:]*))|(\S+))\s*\/\s*(\d{1,5})\s*\(\s*(?:((?:[\d+\.]+|[a-fA-F0-9]*:[a-fA-F0-9]*:[a-fA-F0-9:]*))|(\S+))\s*\/\s*(\d+)\s*\)(?:\s*\(\s*(?:([\S^\\]+)\\)?([\w\-_]+)\s*\))?(?:\s*\(\s*([^\)\s]+)\s*\))?|\(\s*(\S+)\s*\))
FORMAT = action::$1 direction::$2 transport::$3 session_id::$4 dest_interface::$5 dest_ip::$6 dest_host::$7 dest_port::$8 dest_translated_ip::$9 dest_translated_host::$10 dest_translated_port::$11 dest_nt_domain::$12 dest_user::$13 src_interface::$14 src_ip::$15 src_host::$16 src_port::$17 src_translated_ip::$18 src_translated_host::$19 src_translated_port::$20 src_nt_domain::$21 src_user::$22 user::$23 user::$24