Hi,
I’m trying to write Suricata rule that could alert on older versions of TLS. I’d like to detect whether TLS older than 1.2 is used for any egress traffic from my network to the Internet. I’m using AWS Network Firewall with stateful Suricata rules based on strict ordering type. I wrote below rules and put them on top of the rules stack to make sure they’re processed first:
alert tls any any -> $EXTERNAL_NET any (tls.version:1.0; msg:"Match on negotiated TLS/SSL version - 1.0 detected"; sid:1; rev:1;)
alert tls any any -> $EXTERNAL_NET any (tls.version:1.1; msg:"Match on negotiated TLS/SSL version - 1.1 detected"; sid:2; rev:1;)
alert tls any any -> $EXTERNAL_NET any (ssl_version:tls1.0; msg:"Match version of SSL/TLS record - 1.0 detected"; sid:3; rev:1;)
alert tls any any -> $EXTERNAL_NET any (ssl_version:tls1.1; msg:"Match version of SSL/TLS record - 1.1 detected"; sid:4; rev:1;)
AWS NF with Suricata is deployed into a separate network between the network that has my workloads and the Internet. I have some pass rules to allow needed destination urls and the default drop established setting at the end.
I can see flow logs for the traffic that goes to destination IPs. Pass rule works correctly. I have also created a simple alert rule that logs the egress traffic for the domain that resolves to the same destination IP.
Could you confirm if the rules mentioned earlier for TLS are correct and make sense? I also created a ticket for AWS support but wanted to make sure that the rules are correct.
Could anyone help me with confirmation if these rules make sense and can detect egress traffic for TLS versions older than 1.2, please?
alert tls any any -> $EXTERNAL_NET any (tls.version:1.0; msg:"Match on negotiated TLS/SSL version - 1.0 detected"; sid:1; rev:1;)
alert tls any any -> $EXTERNAL_NET any (tls.version:1.1; msg:"Match on negotiated TLS/SSL version - 1.1 detected"; sid:2; rev:1;)
alert tls any any -> $EXTERNAL_NET any (ssl_version:tls1.0; msg:"Match version of SSL/TLS record - 1.0 detected"; sid:3; rev:1;)
alert tls any any -> $EXTERNAL_NET any (ssl_version:tls1.1; msg:"Match version of SSL/TLS record - 1.1 detected"; sid:4; rev:1;)```