Назад | Перейти на главную страницу

правило TLS suricata, не игнорирующее мою «проходную» запись

Я использую это правило, чтобы пропустить обработку tls suricata на известном сертификате SSL:

pass tls any any <> any any (msg:"known good mydomain cert"; tls.fingerprint:"40:.(trimmed for serverfault).:8b"; sid:1000000; rev:1) 

Даже при этом он проваливается в нормальный журнал tls.

Jan 29 19:59:38 ip-10-11-12-13 suricata[17331]: {"timestamp":"2016-01-29T19:59:38.285296+0000","flow_id":139920047174784,"in_iface":"eth0","event_type":"tls","src_ip":"10.13.13.13","src_port":49479,"dest_ip":"10.11.12.13","dest_port":8443,"proto":"TCP","tls":{"subject":"C=U...CN=*.mydomain.com","issuerdn":"C=US...","fingerprint":"40:.(trimmed for serverfault).:8b","version":"TLS 1.2"}}

У меня есть мой local.rules указан первым, и я не менял порядок действий, поэтому pass сообщения должны быть обработаны в первую очередь.

Это происходит из-за того, что в конфиге задано «tls: extended: yes»? Я имею в виду, это регистрация все Сеансы TLS так pass не имеет значения? Если это так, как я могу / должен регистрировать неизвестный / несогласованный трафик TLS?

(Я помещаю это в snort тег, потому что нет suricata тег и я не могу его создать. Я думаю о сурикате как о нюхании.)

Ведение журнала TLS и правила полностью независимы. Pass только гарантирует, что никакие другие правила не будут оцениваться для этого сеанса.

Ведение журнала безусловное. Правила прохода на это не повлияют.

Однако в Suricata 3.0 вы также можете добавлять записи TLS в журналы предупреждений. Чтобы включить это, раскомментируйте 'tls: yes' под типом предупреждения eve-log:

outputs:
  - eve-log:
      enabled: yes
      filetype: regular #regular|syslog|unix_dgram|unix_stream|redis
      filename: eve.json
      types:
        - alert:
            tls: yes               # enable dumping of tls fields

Тогда у вас может быть правило, которое будет соответствовать, если отпечаток пальца не тот, который вы ищете. Например.

alert tls any any -> any any (tls.fingerprint:!"26:ca:ea:1d:99:11:d0:14:98:ad:17:47:4a:8d:fa:94:c5:1f:53:1c"; sid:1;)

Обратите внимание ! до после tls.fingerprint.

Это даст вам записи предупреждений, которые также содержат запись TLS. Например.

{"tls":{"version":"SSLv3","fingerprint":"dc:60:87:01:82:5a:1e:5d:77:99:f1:c7:8a:d1:f2:11:37:f4:58:ad","issuerdn":"C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Global Root","subject":"C=US, O=Akamai Technologies, Inc., CN=a248.e.akamai.net"},"alert":{"severity":3,"category":"","signature":"","rev":0,"signature_id":1,"gid":1,"action":"allowed"},"proto":"TCP","timestamp":"2009-11-14T19:28:41.698996+0100","flow_id":105716361672640,"pcap_cnt":1032789,"event_type":"alert","src_ip":"63.80.4.42","src_port":443,"dest_ip":"192.168.2.7","dest_port":1997}

Затем вы можете отключить обычное ведение журнала TLS в своем yaml.

Одна проблема с этим подходом заключается в том, что он действительно хорошо работает только для отрицания одного отпечатка пальца.