Compare commits

...

456 Commits

Author SHA1 Message Date
Mike Reeves d430dd2b73 Merge pull request #14219 from Security-Onion-Solutions/2.4/dev
2.4.120
2025-02-12 11:14:56 -05:00
Mike Reeves 43a0020a9e Merge pull request #14220 from Security-Onion-Solutions/fixeroni
Merge Conflict Fix
2025-02-12 09:37:04 -05:00
Mike Reeves b0e82cd59b Fix Conflict 2025-02-12 09:35:52 -05:00
Mike Reeves 237370f0c7 Merge pull request #14218 from Security-Onion-Solutions/2.4.120
2.4.120
2025-02-12 09:20:40 -05:00
Mike Reeves 69be367acf 2.4.120 2025-02-12 09:09:38 -05:00
Jorge Reyes 66bc0d487c Merge pull request #14206 from Security-Onion-Solutions/reyesj2-patch-00
zeek.software typo
2025-02-07 15:27:52 -06:00
reyesj2 9bde70a8e2 zeek.software typo
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-07 15:19:40 -06:00
Jorge Reyes 322941f29a Merge pull request #14203 from Security-Onion-Solutions/reyesj2-patch-00
fix defining custom logstash pipelines when kafka is enabled
2025-02-07 07:52:11 -06:00
reyesj2 dd17ee7665 fix defining custom logstash pipelines when kafka is enabled 2025-02-06 22:19:24 -06:00
Jason Ertel 4b51066327 Merge pull request #14191 from Security-Onion-Solutions/jertel/wip
ca download; ignore shard errors on startup; clarify oidc id
2025-02-05 15:09:57 -05:00
Jason Ertel bf19c6e730 ca download; ignore shard errors on startup; clarify oidc id 2025-02-05 15:04:04 -05:00
Josh Brower 12a2b491c3 Merge pull request #14190 from Security-Onion-Solutions/2.4/fixmsi
Refresh Agent installers
2025-02-05 10:22:17 -05:00
Joshua Brower 4636a8d9b1 Refresh Agent installers 2025-02-05 09:38:33 -05:00
Josh Brower abbb0db1ff Merge pull request #14189 from Security-Onion-Solutions/2.4/fixmsi
Rework for MSI
2025-02-05 09:35:37 -05:00
Joshua Brower 95fe212202 Rework for MSI 2025-02-05 09:29:45 -05:00
coreyogburn fbb9bf14e9 Merge pull request #14183 from Security-Onion-Solutions/cogburn/escalate-limit
New Limit on Bulk Creating Related Events
2025-02-04 15:24:53 -07:00
Corey Ogburn 23ebe966e0 Added Large Values Warning
maxBulkEscalateEvents now has a warning that large values may run into other limits.
2025-02-04 10:33:04 -07:00
Corey Ogburn d0fa6eaf83 New Limit on Bulk Creating Related Events
Used by the UI and API to hint at a user that not every event will be attached to a case. Supports values up to 10,000 (the default limit on the number of documents returned by a single ES search).
2025-02-03 14:20:33 -07:00
Josh Brower 7a0309cdf4 Merge pull request #14179 from Security-Onion-Solutions/2.4/fixilmpolicy
Fix ip-mappings ILM
2025-02-03 09:35:55 -05:00
Joshua Brower b874619f0d Fix ip-mappings ILM 2025-02-03 09:31:08 -05:00
Jason Ertel 028c73fd3a Merge pull request #14162 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update so-functions
2025-01-29 10:12:20 -05:00
Mike Reeves 27e9773782 Update so-functions 2025-01-29 10:07:52 -05:00
Josh Patterson 7ae128dec6 Merge pull request #14161 from Security-Onion-Solutions/esdtsn
env discovery.type single-node change
2025-01-29 09:29:04 -05:00
Josh Patterson fe4129c8e0 env discovery.type single-node change
only managers and heavynodes are eligible for discovery.type=single-node
2025-01-29 09:11:52 -05:00
Jason Ertel ca0c1170ab Merge pull request #14140 from Security-Onion-Solutions/jertel/wip
fix issue with first-time api client permission toggling
2025-01-22 17:43:54 -05:00
Jason Ertel db9387764d fix issue with first-time api client permission toggling 2025-01-22 17:41:04 -05:00
Jorge Reyes 704e30219a Merge pull request #14124 from Security-Onion-Solutions/reyesj2-patch-8
keep imported data in logs-import-so index
2025-01-17 13:33:26 -06:00
reyesj2 1396083b7d use so-elasticsearch-query where possible; simplify suricata.alerts index reroute
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-17 13:29:46 -06:00
Jason Ertel 7017024ba7 Merge pull request #14123 from Security-Onion-Solutions/jertel/wip
Additional web security measures
2025-01-17 12:31:42 -05:00
Jason Ertel 7705f45d78 Revert "subgrid config annotations"
This reverts commit 3ab1b907e4.
2025-01-17 12:16:12 -05:00
Jason Ertel 964bbe6aa5 additional web server security measures 2025-01-17 12:14:30 -05:00
reyesj2 01a2e4cd4f check for index existence before attemping rollover
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-17 09:27:28 -06:00
reyesj2 9032d7d7bc any suricata.alert with event.imported: true remains in logs-import-so
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-16 18:48:31 -06:00
reyesj2 d573c0922d add 2.4.111 -> postupgrade check
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-16 18:25:06 -06:00
reyesj2 45d3438d18 update ingest pipeline for imported logs
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-16 17:33:14 -06:00
Jorge Reyes 6c80fd0e18 Merge pull request #14116 from Security-Onion-Solutions/reyesj2-patch-8
update global@custom
2025-01-15 14:23:40 -06:00
reyesj2 b3b7fb8f29 add null check and move tag lookup to .contains() in global@custom
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-15 12:16:11 -06:00
Jason Ertel d101fda423 Merge branch '2.4/dev' into jertel/wip 2025-01-15 11:06:05 -05:00
Jorge Reyes 846f2485db Merge pull request #14111 from Security-Onion-Solutions/reyesj2-patch-1
update http query
2025-01-14 08:26:43 -06:00
Jorge Reyes 107ca38268 fix http query for "includes" function 2025-01-14 08:24:07 -06:00
Jorge Reyes 35547b476f update http query 2025-01-14 08:13:27 -06:00
Jorge Reyes ad765200c3 Merge pull request #14105 from Security-Onion-Solutions/reyesj2/moarzeekparse
Additional Zeek parsing & cloudflare_logpush integration
2025-01-13 11:37:21 -06:00
reyesj2 4618256442 include okta-mappings in so-logs-okta.system index template 2025-01-13 11:32:27 -06:00
reyesj2 323ef1d5d6 add missing lifecycle name to trend_micro_vision_one indices 2025-01-13 09:29:22 -06:00
reyesj2 a5b1648b68 add missing lifecycle name to crowdstrike indices 2025-01-13 09:26:16 -06:00
reyesj2 14c920a258 fix hidden ldap menu subtitle 2025-01-13 09:23:32 -06:00
reyesj2 4f92b7ced1 add support for cloudflare_logpush integration 2025-01-13 09:23:05 -06:00
Josh Brower 5ec2006c9e Merge pull request #14102 from Security-Onion-Solutions/2.4/nav-airgap
Fix folder perm
2025-01-10 16:20:18 -05:00
Joshua Brower dcdf31eee8 Fix folder perm 2025-01-10 16:15:17 -05:00
Jason Ertel 3ab1b907e4 subgrid config annotations 2025-01-10 13:45:42 -05:00
reyesj2 e60a1e4357 zeek ldap & ldap_search parsing
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-09 16:06:10 -06:00
Josh Brower 2de1f0464f Merge pull request #14091 from Security-Onion-Solutions/2.4/nav-airgap
Refactor Navigator Airgap
2025-01-09 11:59:50 -05:00
Joshua Brower bcb92b63e3 Move json files to container image 2025-01-09 10:58:40 -05:00
Jorge Reyes 412397fa7b Merge pull request #14089 from Security-Onion-Solutions/reyesj2/moarzeekparse 2025-01-08 17:45:14 -06:00
reyesj2 0e87351a9c add zeek.quic mappings
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-08 16:18:53 -06:00
Josh Brower 71f4150c27 Merge pull request #14013 from Security-Onion-Solutions/2.4/navigator
Refactor Navigator for Detections
2025-01-07 13:34:19 -05:00
Joshua Brower a2caf7425d Add config options 2025-01-07 13:22:14 -05:00
Joshua Brower 6fa11a38ef Update defaults 2025-01-07 13:14:50 -05:00
Joshua Brower e3f75215b6 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/navigator 2025-01-07 13:06:49 -05:00
Jason Ertel d14b6e6d7d Merge pull request #14077 from Security-Onion-Solutions/jertel/wip
invalidate user sessions when an admin changes the user's password
2025-01-06 17:26:56 -05:00
Jason Ertel bd96b5d722 invalidate user sessions when an admin changes the user's password 2025-01-06 17:23:10 -05:00
Josh Brower 8408a53b82 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/navigator 2025-01-02 16:13:34 -05:00
Jorge Reyes 5969e9accc Merge pull request #14060 from Security-Onion-Solutions/reyesj2/zeekquic
zeek quic support
2025-01-02 08:13:33 -06:00
Doug Burks 927b618ec9 Update Zeek QUIC dashboard, add Hunt query, add quic.server.name as column in Events table 2025-01-02 06:57:56 -05:00
reyesj2 9f83853922 Zeek QUIC support
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-31 13:44:20 -06:00
Josh Brower 8f5634d958 Merge pull request #14048 from Security-Onion-Solutions/2.4/sigmaHashes
Refactor pipeline for hash changes
2024-12-23 15:49:35 -05:00
defensivedepth 7237b8971e Refactor pipeline for hash changes 2024-12-23 15:41:13 -05:00
Mike Reeves 33239219cb Merge pull request #14046 from Security-Onion-Solutions/TOoSmOotH-patch-1 2024-12-23 08:34:01 -05:00
Mike Reeves 09ef096620 Update soup 2024-12-23 08:27:45 -05:00
Jason Ertel 6c19a4c68a Merge pull request #14043 from Security-Onion-Solutions/jertel/wip
cloud installs should use the local docker registry data
2024-12-19 15:01:25 -05:00
Jason Ertel b8afef1ee4 cloud installs should use the local docker registry data 2024-12-19 14:56:40 -05:00
Jorge Reyes 16a819ff4f Merge pull request #14041 from Security-Onion-Solutions/reyesj2/opencti
add ti_opencti integration support
2024-12-18 12:12:03 -06:00
reyesj2 157185c370 add ti_opencti integration support 2024-12-18 11:33:49 -06:00
Mike Reeves ace6c5c9e4 Merge pull request #14039 from Security-Onion-Solutions/docsfix
Fix Discussions Dropdown
2024-12-18 11:42:42 -05:00
Mike Reeves 4a4c8eace2 Update 2-4.yml 2024-12-18 10:49:34 -05:00
Jason Ertel 8183dcf363 Merge pull request #14038 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update 2-4.yml
2024-12-18 10:38:42 -05:00
Mike Reeves d4f1772d2e Update 2-4.yml 2024-12-18 10:36:15 -05:00
Jason Ertel dc1c7d8bd2 Merge pull request #14036 from Security-Onion-Solutions/merger
Merge in 2.4.111
2024-12-18 10:25:42 -05:00
Mike Reeves 9c10094914 Fix conflict 2024-12-18 10:19:40 -05:00
Mike Reeves 72fed8d6a7 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-12-18 10:17:04 -05:00
Mike Reeves ec90adc6d9 Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-12-18 10:16:50 -05:00
Mike Reeves 93f3171a63 Merge pull request #14031 from Security-Onion-Solutions/patch/2.4.111
2.4.111
2024-12-18 10:05:48 -05:00
Mike Reeves 7d4c6b1174 Merge branch 'patch/2.4.111' of https://github.com/Security-Onion-Solutions/securityonion into patch/2.4.111 2024-12-18 09:29:08 -05:00
Mike Reeves 3e04bfbd21 2.4.111 2024-12-18 09:27:55 -05:00
Josh Brower c6ebebc4d0 Merge pull request #14033 from Security-Onion-Solutions/patchfix
Delete uneeded files
2024-12-17 16:05:13 -05:00
defensivedepth 17405b849a Delete uneeded files 2024-12-17 16:01:31 -05:00
Mike Reeves 897e8f6883 2.4.111 2024-12-17 13:03:52 -05:00
Mike Reeves 7d06dd4b1d Update HOTFIX 2024-12-13 09:20:49 -05:00
Mike Reeves 5bc9fb19a8 Update VERSION 2024-12-13 09:18:58 -05:00
Mike Reeves 607aa1b992 Merge pull request #14016 from Security-Onion-Solutions/TOoSmOotH-patch-1
Fix port bind for managing external suricata ruleset
2024-12-10 17:40:35 -05:00
Mike Reeves e4db2f4819 Update defaults.yaml 2024-12-10 17:19:15 -05:00
defensivedepth 9475211417 Refactor Navigator for Detections 2024-12-09 16:31:51 -05:00
Jorge Reyes 14cb41ea87 Merge pull request #14001 from Security-Onion-Solutions/reyesj2/zeekvpn
add openvpn & ipsec support to Zeek
2024-12-06 12:06:02 -06:00
Jorge Reyes edd90cbed4 Merge pull request #14004 from Security-Onion-Solutions/reyesj2/logcheck
file extract zeek v7
2024-12-06 10:28:15 -06:00
reyesj2 1de20e9d43 fix zeek file extract
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-06 09:55:56 -06:00
reyesj2 ad8b339a3b fix error due to null reference
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-06 09:07:16 -06:00
reyesj2 9532f21c7b check zeek reporter.log 2024-12-05 13:49:44 -06:00
reyesj2 754d28e95d add openvpn & ipsec support to Zeek 2024-12-05 09:52:55 -06:00
Josh Brower 726bdd8735 Merge pull request #13995 from Security-Onion-Solutions/feature/msi
fix path
2024-12-02 14:49:22 -05:00
defensivedepth 5b9f6b2d52 fix path 2024-12-02 14:42:56 -05:00
Josh Brower aabff98bea Merge pull request #13989 from Security-Onion-Solutions/feature/msi
Generate MSI
2024-12-02 09:17:45 -05:00
defensivedepth aade3db80d Generate MSI 2024-11-28 07:00:23 -05:00
Jorge Reyes 129c10dde5 Merge pull request #13981 from Security-Onion-Solutions/reyesj2/integ 2024-11-26 00:55:31 -06:00
reyesj2 993d56cb58 ti_rapid7*
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-25 15:51:49 -06:00
reyesj2 efa6a533c3 add missing ilm to index template
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-25 15:47:47 -06:00
Josh Brower 04ffdf9b15 Merge pull request #13958 from Security-Onion-Solutions/2.4/autoenablesigma
More flexibility for AutoEnable Sigma rules
2024-11-21 09:47:49 -05:00
defensivedepth f61bf1bd67 Remove adv 2024-11-21 09:15:29 -05:00
defensivedepth b1c4e32123 Remove duplicate option 2024-11-21 09:11:44 -05:00
defensivedepth 8958da83b3 Deprecate instead 2024-11-20 18:00:26 -05:00
defensivedepth 3fcf197bc1 Tweak structure 2024-11-19 11:54:15 -05:00
Jason Ertel 532dfd7f5a Merge pull request #13966 from Security-Onion-Solutions/jertel/wip
MFA issuer name shouldn't be an advanced setting
2024-11-19 09:35:26 -05:00
Jason Ertel 92ddf2ec6c MFA issuer name shouldn't be an advanced setting 2024-11-19 09:27:26 -05:00
coreyogburn a703f46a0a Merge pull request #13961 from Security-Onion-Solutions/cogburn/engine-update-config
Add Annotations to Existing Detections Options
2024-11-18 14:46:04 -07:00
Corey Ogburn d86c009f55 Add Annotations to Existing Detections Options
The autoUpdateEnabled setting has been present for awhile and now have annotations.
2024-11-18 14:35:55 -07:00
defensivedepth 56d6857cd6 Addl customization for autoenable sigma 2024-11-18 09:03:17 -05:00
Jason Ertel 52bc9be6b6 Merge pull request #13956 from Security-Onion-Solutions/jertel/wip
ignore fp from hydra
2024-11-17 18:23:54 -05:00
Jason Ertel 918f26962a ignore fp from hydra 2024-11-17 12:21:06 -05:00
Jason Ertel 3bf7870729 Merge pull request #13955 from Security-Onion-Solutions/jertel/wip
soup corrections
2024-11-16 21:31:08 -05:00
Jason Ertel 0eebe48492 soup corrections 2024-11-16 21:20:24 -05:00
Mike Reeves e02cb30f1b Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-11-16 20:41:31 -05:00
Mike Reeves d005f0d7d6 Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-11-16 20:41:20 -05:00
Jason Ertel cc44558f40 Merge pull request #13954 from Security-Onion-Solutions/jertel/wip
revert prev commit
2024-11-16 12:08:49 -05:00
Jason Ertel 73521dd7a7 revert prev commit 2024-11-16 11:09:44 -05:00
Jorge Reyes 3041d7d2b1 Merge pull request #13951 from Security-Onion-Solutions/reyesj2/integ
additional integrations
2024-11-15 15:02:04 -06:00
Jason Ertel b6ab5249f1 Merge pull request #13953 from Security-Onion-Solutions/jertel/wip
Connect API upgrades
2024-11-15 14:32:37 -05:00
Jason Ertel dc838e7148 connect 2024-11-15 14:25:52 -05:00
Jason Ertel f290e52fbd connect 2024-11-15 14:25:11 -05:00
Jason Ertel e4de376394 connect api 2024-11-15 13:42:02 -05:00
reyesj2 44ec237447 additional integration support - cisco secure email gateway - rapid7 threat command
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-15 11:39:01 -06:00
Jorge Reyes ec5a6aec41 Merge pull request #13946 from Security-Onion-Solutions/foxtrot
Zeek 7 w/ http2
2024-11-14 14:52:48 -06:00
Josh Patterson 7f96d20eb4 Merge pull request #13944 from Security-Onion-Solutions/saltbootstrap
update bootstrap-salt
2024-11-14 10:25:16 -05:00
Jorge Reyes dfd9108f39 Merge pull request #13945 from Security-Onion-Solutions/2.4/dev
2.4/dev
2024-11-14 09:13:00 -06:00
Jorge Reyes e07c1e6958 Merge pull request #13943 from Security-Onion-Solutions/zeek7
add http2
2024-11-14 09:11:08 -06:00
reyesj2 1113c3924f zeek http2
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-14 09:09:23 -06:00
m0duspwnens b1ddaa7211 support installing specified version for rhel variants. remove bootstrap -x python3 since not needed 2024-11-14 09:07:41 -05:00
Jorge Reyes ff00ddeb3c Merge pull request #13935 from Security-Onion-Solutions/ilm-detection 2024-11-13 15:07:29 -06:00
reyesj2 ba7a6dbbf0 Remove tuning/defaults "Remove in v7.1 The policy/tuning/defaults package is deprecated. The options set here are now the defaults for Zeek in general."
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-12 18:37:46 -06:00
reyesj2 f3a88de0c3 so-(case/detection)history uses same ilm policy as so-(case/detection)
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-12 16:28:01 -06:00
Jorge Reyes 4e0b5569dc Merge pull request #13933 from Security-Onion-Solutions/ilm-detection
add ilm and update managed index settings
2024-11-12 15:22:05 -06:00
reyesj2 a4d763c1e5 use curl vs es query to force PUT request
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-12 14:50:04 -06:00
m0duspwnens 33fdc23965 remove salt repo files created by saltbootstrap 2024-11-12 11:31:42 -05:00
reyesj2 aaf9f53695 update soup; check for index before applying new index setting
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 22:40:06 -06:00
Jason Ertel 59cf049a06 Merge pull request #13930 from Security-Onion-Solutions/jertel/wip
ensure roles file exists since no longer syncing clients to es
2024-11-11 18:53:46 -05:00
Jason Ertel 5b74a55c3c ensure roles file exists since no longer syncing clients to es 2024-11-11 17:21:42 -05:00
Josh Patterson f2ce070833 Merge pull request #13927 from Security-Onion-Solutions/saltbootstrap
upodate saltbootstrap
2024-11-11 16:17:23 -05:00
reyesj2 ce9bd18947 no error when versionlock dir exists after re-running soup
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 14:59:42 -06:00
m0duspwnens 9e5d0e88de fix soversion path 2024-11-11 15:56:01 -05:00
reyesj2 43f7989d73 ()
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 14:47:17 -06:00
m0duspwnens 69245e4fad have soup_scripts remove old salt repo file 2024-11-11 15:31:57 -05:00
Jason Ertel f8f496da73 Merge pull request #13923 from Security-Onion-Solutions/jertel/wip
Connect API
2024-11-11 15:04:34 -05:00
reyesj2 6dbe0645e5 use auto_expand_replica, configure ilm for so-case* & so-detection*
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 13:51:48 -06:00
Jason Ertel d4ed34d0ea connect 2024-11-11 11:56:19 -05:00
m0duspwnens 7875406da1 update bootstrap-salt for broadcom changes 2024-11-11 10:54:51 -05:00
Jason Ertel 57a9992a3d Merge branch '2.4/dev' into jertel/wip 2024-11-11 10:06:44 -05:00
Josh Patterson b3ce624fff Merge pull request #13921 from Security-Onion-Solutions/reposynccron
only enable repo sync cron if OEL
2024-11-08 16:16:48 -05:00
m0duspwnens ee4405e75e only enable repo sync cron if OEL 2024-11-08 16:13:44 -05:00
Josh Brower f7c3957a43 Merge pull request #13920 from Security-Onion-Solutions/2.4/templaterepos
Fix permissions
2024-11-08 15:34:56 -05:00
defensivedepth dcbb0e48d4 make sure its owned by socore 2024-11-08 14:34:29 -05:00
defensivedepth 74b95a0bcc Merge remote-tracking branch 'origin/2.4/dev' into 2.4/templaterepos 2024-11-08 09:20:11 -05:00
defensivedepth 8b70aa9f0e Fix socore permissions 2024-11-08 09:19:41 -05:00
coreyogburn 9095595db1 Merge pull request #13915 from Security-Onion-Solutions/cogburn/source-dates
Source Dates
2024-11-07 14:55:48 -07:00
Corey Ogburn 8334fd9c46 Source Dates 2024-11-07 14:44:45 -07:00
Jason Ertel 31cf6a2ebc connect 2024-11-07 16:17:30 -05:00
Jason Ertel 97f4cbdade connect 2024-11-07 16:16:37 -05:00
Jason Ertel ba0abb156a connect 2024-11-07 16:08:28 -05:00
Josh Brower 47f9b0021c Merge pull request #13879 from Security-Onion-Solutions/2.4/templaterepos
Add local custom template
2024-11-07 15:40:36 -05:00
defensivedepth f5bd8ab585 Rewrite docs 2024-11-07 15:33:47 -05:00
Jorge Reyes 356236ba4c Merge pull request #13912 from Security-Onion-Solutions/crowdstrike
fix crowdstrike integration
2024-11-07 08:53:36 -06:00
defensivedepth 28d468dd41 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/templaterepos 2024-11-07 07:25:01 -05:00
reyesj2 80b82b0bd6 missing replica 0
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-06 15:24:13 -06:00
reyesj2 039d5c22ac fix: crowdstrike integration
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-06 14:35:41 -06:00
coreyogburn 07b867df76 Merge pull request #13904 from Security-Onion-Solutions/cogburn/ignored-sids
Cogburn/ignored sids
2024-11-05 12:30:08 -07:00
Corey Ogburn 52a144c052 Added Help Link to Annotation for IgnoredSidRanges 2024-11-05 12:11:17 -07:00
Corey Ogburn 25d55feeef More Detailed Description 2024-11-05 11:41:14 -07:00
Corey Ogburn 5e48ccafce Update Default Value 2024-11-05 11:11:34 -07:00
Corey Ogburn 69dd35c30a Add Option for Ignoring Ranges of SIDs in Suricata Integrity Check 2024-11-04 14:31:53 -07:00
Josh Patterson d37a8d51fa Merge pull request #13900 from Security-Onion-Solutions/saltrepo
setup use new salt repo
2024-11-04 13:05:58 -05:00
m0duspwnens 6e14f7b626 fix pub key name 2024-11-04 11:14:00 -05:00
Jason Ertel e8ab7bce0c connect 2024-11-04 10:49:30 -05:00
m0duspwnens 083c678400 new salt repo 2024-11-04 09:46:26 -05:00
Jason Ertel 7442ffc7d8 connect 2024-11-01 16:37:24 -04:00
Jason Ertel 25479ca71f connect 2024-11-01 16:29:04 -04:00
Jason Ertel c9f6b5206a connect 2024-11-01 16:18:40 -04:00
Jason Ertel 755cfb4e13 connect 2024-11-01 15:47:33 -04:00
Jason Ertel fb73517fc1 connect 2024-11-01 15:43:26 -04:00
Jason Ertel 825dbb36dd connect 2024-11-01 15:37:59 -04:00
Jason Ertel cd2e5bf2d0 rename role 2024-10-31 17:20:44 -04:00
Jason Ertel 520c9d8d51 rename role 2024-10-31 16:42:42 -04:00
Jason Ertel 370b117938 rename role 2024-10-31 16:39:45 -04:00
Josh Brower 6ab05e7c05 Merge pull request #13890 from Security-Onion-Solutions/2.4/templatefix
timestamp fix
2024-10-31 10:59:45 -04:00
defensivedepth 7896f951f3 timestamp fix 2024-10-31 10:24:58 -04:00
Josh Brower 01932d873f Merge pull request #13883 from Security-Onion-Solutions/2.4/lookuprev2
2.4/lookuprev2
2024-10-31 08:46:01 -04:00
Josh Brower 84a8477c5d Merge pull request #13887 from Security-Onion-Solutions/2.4/soupedite
rm eaintegration state file
2024-10-30 17:15:07 -04:00
defensivedepth 6b468eaed3 rm eaintegration state file 2024-10-30 16:52:44 -04:00
Jason Ertel a146153ee9 switch to json 2024-10-30 12:44:01 -04:00
defensivedepth c509dab5f1 Use socore user 2024-10-30 11:03:14 -04:00
Josh Brower 1940901386 Merge pull request #13882 from Security-Onion-Solutions/ipmappingses
add so-ip-mappings index
2024-10-30 10:28:40 -04:00
reyesj2 36fc3bbd6d add so-ip-mappings index
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-10-30 10:24:11 -04:00
defensivedepth 5406a263d5 Add local custom template 2024-10-29 19:42:06 -04:00
Jason Ertel 3f3ac21f50 connect 2024-10-29 12:28:24 -04:00
Jason Ertel 11820a16f0 connect 2024-10-29 12:04:38 -04:00
Josh Brower ac359839e2 Merge pull request #13877 from Security-Onion-Solutions/2.4/lookuprev2
Initial support for local lookup
2024-10-29 11:22:39 -04:00
defensivedepth 4c5099d429 Initial support for local lookup 2024-10-29 10:27:54 -04:00
Jason Ertel 1243c7588b connect 2024-10-28 19:42:01 -04:00
Jason Ertel 624c4855c8 connect 2024-10-28 19:25:20 -04:00
Jason Ertel 12a76a9d35 connect 2024-10-28 19:11:26 -04:00
Josh Brower 6a3e5415cf Merge pull request #13832 from Security-Onion-Solutions/2.4/sigmapipelines
Add process and file creation mappings
2024-10-28 18:30:21 -04:00
coreyogburn 2c4f65009c Merge pull request #13873 from Security-Onion-Solutions/cogburn/tuning-notes
Tuning Notes
2024-10-28 15:37:06 -06:00
defensivedepth f3ca5b1c42 Remove OS-specific mappings 2024-10-28 09:19:51 -04:00
Corey Ogburn 640f53d085 Cleanup
Fix indentation and trailing comma.
2024-10-24 17:05:36 -06:00
Corey Ogburn 1aa9d87c5d Corrected
Put the note on the right model this time.
2024-10-24 17:05:36 -06:00
Corey Ogburn e11c562022 Added Note to ES Mappings 2024-10-24 17:05:35 -06:00
coreyogburn a76a2d8e9f Merge pull request #13800 from Security-Onion-Solutions/cogburn/detection-status-hunt
Cogburn/detection status hunt
2024-10-24 16:31:59 -06:00
Jason Ertel d503c09ef2 connect 2024-10-24 15:45:18 -04:00
Corey Ogburn 6ce52bf9ab Specify Defaults for detectionEngineStatusQueries
Specify the defaults as an example to the user.
2024-10-24 13:11:49 -06:00
Corey Ogburn f67fcecc6e Clean up StatusQueries String 2024-10-24 11:18:48 -06:00
Corey Ogburn b7c392a244 Corrected a misspelling 2024-10-24 11:18:48 -06:00
Corey Ogburn ad0b0a5e95 Refactor to String
To accomodate the config screen, the annotation now specifies it as a multiline string with a yaml syntax. The user can edit the yaml to add or remove queries. The UI will parse the YAML before use.

Also updated the IntegrityFailure queries to specify table columns more relevant to a sync failure than the default ones.
2024-10-24 11:18:47 -06:00
Corey Ogburn c77b0afd8e Move to Client/Detections
Added a basic annotation.
2024-10-24 11:18:47 -06:00
Corey Ogburn 04ebe4efea Array to Dictionary 2024-10-24 11:18:46 -06:00
Corey Ogburn cbb4d6846f Detection Engine Status Queries
A few for testing
2024-10-24 11:18:45 -06:00
Josh Patterson ba699b8d06 Merge pull request #13863 from Security-Onion-Solutions/issue/13851
Issue/13851
2024-10-24 11:00:28 -04:00
m0duspwnens a0558ace16 replace: False to remove state warning 2024-10-24 10:33:16 -04:00
m0duspwnens ca793966a8 set retry and interval to remove state warning 2024-10-24 10:32:42 -04:00
Jason Ertel d9273ec369 exec bit 2024-10-24 09:40:47 -04:00
Jason Ertel cacd5b0643 connect 2024-10-24 09:36:09 -04:00
Jason Ertel 7c405ff9d7 connect 2024-10-24 08:47:52 -04:00
Jason Ertel 5e6dd2e8b3 connect 2024-10-23 16:49:02 -04:00
Josh Patterson dbc533e976 Merge pull request #13859 from Security-Onion-Solutions/stpndfls
call airgap_rules if airgap. log rsync and git commands
2024-10-23 16:44:41 -04:00
m0duspwnens 4d902da931 call airgap_rules if airgap. log rsync and git commands 2024-10-23 15:58:11 -04:00
Josh Patterson 578a18acbe Merge pull request #13853 from Security-Onion-Solutions/agcr
install createrepo for airgap
2024-10-23 14:21:26 -04:00
m0duspwnens 17ba048b50 use manager state to install createrepo_c for airgap 2024-10-23 10:40:26 -04:00
Josh Patterson 36a2bffdc7 Merge pull request #13855 from Security-Onion-Solutions/issue/204
fix HELD for debian families
2024-10-23 09:40:25 -04:00
m0duspwnens 8cc530dd4c fix HELD for debian families 2024-10-23 09:36:17 -04:00
m0duspwnens 1df104967e fix pkg name 2024-10-22 16:50:23 -04:00
m0duspwnens 7a0f6d5e93 fix pkg name 2024-10-22 16:42:01 -04:00
m0duspwnens 8d2ae23ae6 install createrepo on airgap and non airgap 2024-10-22 13:56:38 -04:00
m0duspwnens 21f359456c install createrepo for airgap 2024-10-22 11:35:08 -04:00
Jorge Reyes 2b4dfbe2ca Merge pull request #13849 from Security-Onion-Solutions/revert-13841-reyesj2/eaintegration
Revert "Add support for cybereason integration"
2024-10-21 15:26:15 -04:00
Jorge Reyes cf95af66c6 Revert "Add support for cybereason integration" 2024-10-21 15:23:05 -04:00
Josh Patterson b95563bdf1 Merge pull request #13842 from Security-Onion-Solutions/issue/204
prevent state from failing if versionlock plugin not installed
2024-10-18 14:48:03 -04:00
m0duspwnens 4d093735ec prevent state from failing if versionlock plugin not installed 2024-10-18 14:41:23 -04:00
Jorge Reyes cd5d5b4bb0 Merge pull request #13841 from Security-Onion-Solutions/reyesj2/eaintegration
Add support for cybereason integration
2024-10-18 13:40:31 -04:00
reyesj2 8b11019712 Add support for cybereason integration
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-10-18 11:56:47 -04:00
Josh Patterson 1930740d10 Merge pull request #13836 from Security-Onion-Solutions/issue/204
Issue/204
2024-10-17 12:23:50 -04:00
m0duspwnens 39230159ae update description 2024-10-17 12:10:49 -04:00
Jason Ertel 4611ef3713 connect wip 2024-10-17 11:39:36 -04:00
Jason Ertel 1537b69457 connect wip 2024-10-17 11:25:40 -04:00
Jason Ertel 25fe83cd40 connect wip 2024-10-17 11:22:10 -04:00
Jason Ertel 435b9b14e3 connect wip 2024-10-17 10:49:39 -04:00
m0duspwnens 76ff0c56cd create versionlock pillar dir/files during soup to 120 2024-10-17 10:06:40 -04:00
m0duspwnens 17870bcab8 Merge remote-tracking branch 'origin/2.4/dev' into issue/204 2024-10-17 09:59:36 -04:00
m0duspwnens 5fb660bc9a remove kernel bool option, just use list 2024-10-17 09:29:03 -04:00
Jason Ertel f713dbacf8 connect 2024-10-16 17:53:57 -04:00
m0duspwnens 73ce526467 allow users to lock pkgs from upgrade 2024-10-16 17:06:03 -04:00
Jorge Reyes 0ba6df3b23 Merge pull request #13834 from Security-Onion-Solutions/reyesj2/eaintegration
FEATURE: add support for trend micro integrations
2024-10-16 17:03:49 -04:00
reyesj2 322199358d add support for trendmicro integration
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-10-16 16:45:46 -04:00
defensivedepth dcdfaf66f4 Add process and file creation mappings 2024-10-16 15:20:52 -04:00
Jason Ertel d8546bf747 connect upgrade 2024-10-16 14:59:15 -04:00
Jason Ertel 1e5bf3aa98 connect upgrade 2024-10-16 14:21:11 -04:00
Jason Ertel 647f057714 Merge branch '2.4/dev' into jertel/wip 2024-10-16 13:44:20 -04:00
Jason Ertel 523ff66389 connect work 2024-10-16 13:44:01 -04:00
Jason Ertel 15c32f9103 connect routes 2024-10-16 12:33:14 -04:00
Jason Ertel 12168531a1 avoid double SSO clicks on initial OIDC login 2024-10-16 12:33:03 -04:00
coreyogburn a3933bdc79 Merge pull request #13826 from Security-Onion-Solutions/cogburn/ai-switch-flip
Changes to allow reviews to start showing
2024-10-15 16:03:18 -06:00
Josh Patterson ebd21f3f53 Merge pull request #13825 from Security-Onion-Solutions/issue/13808
Issue/13808
2024-10-15 17:18:56 -04:00
m0duspwnens ce6c7c3b91 Merge remote-tracking branch 'origin/2.4/dev' into issue/13808 2024-10-15 13:14:18 -04:00
m0duspwnens c2e46932ee fix array def 2024-10-15 12:01:53 -04:00
m0duspwnens c46fb7e74c check if service is running before trying to start it 2024-10-15 11:46:09 -04:00
m0duspwnens ac6637c6ab set vars global 2024-10-15 09:56:50 -04:00
m0duspwnens cc19b60146 restore services/top at start of soup 2024-10-15 09:32:14 -04:00
Corey Ogburn d2bd9c0e26 Changes to allow reviews to start showing 2024-10-10 09:48:59 -06:00
Jason Ertel 7a1edb3833 Merge pull request #13798 from Security-Onion-Solutions/jertel/hfm2
main to dev
2024-10-10 11:33:39 -04:00
Jason Ertel ec7fa5e24a clear hotfix file 2024-10-10 11:24:10 -04:00
Jason Ertel 295353e804 Merge branch '2.4/main' into jertel/hfm2 2024-10-10 11:23:43 -04:00
Mike Reeves 1cef75d6d3 Merge pull request #13797 from Security-Onion-Solutions/hotfix/2.4.110
Hotfix 2.4.110
2024-10-10 11:12:25 -04:00
Mike Reeves 0c4cb863a3 Merge pull request #13796 from Security-Onion-Solutions/2.4.110hf
2.4.110 Hotfix
2024-10-10 10:40:42 -04:00
Mike Reeves 404f9a4eb3 2.4.110 Hotfix 2024-10-10 10:37:12 -04:00
Jason Ertel 04e33a6443 Merge pull request #13794 from Security-Onion-Solutions/jertel/hf20241010
2.4.110 hotfix
2024-10-10 06:40:51 -04:00
Jason Ertel 787336725c 2.4.110 hotfix 2024-10-10 06:25:59 -04:00
Mike Reeves b7255f72bb Merge pull request #13792 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update soup
2024-10-09 14:23:36 -04:00
Mike Reeves e2da31c2b7 Update soup 2024-10-09 14:15:43 -04:00
weslambert 915c3f3c95 Merge pull request #13791 from Security-Onion-Solutions/fix/fleet_custom
Use ID instead of name for getting integrations from agent policies
2024-10-09 14:12:40 -04:00
weslambert c58ed45cf0 Use ID instead of name 2024-10-08 10:55:16 -04:00
weslambert 69857b6b5c Use ID instead of name 2024-10-08 10:54:54 -04:00
Doug Burks 2381260a55 Merge pull request #13783 from Security-Onion-Solutions/dougburks-patch-1
Add 2.4.120 for next release
2024-10-07 16:06:39 -04:00
Doug Burks ba4fbb9953 Update 2-4.yml 2024-10-07 16:05:45 -04:00
Mike Reeves 7b006fb721 Merge pull request #13780 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2024-10-07 15:34:25 -04:00
Mike Reeves f42d82e8df Update VERSION 2024-10-07 15:30:49 -04:00
Mike Reeves d5df002f98 Merge pull request #13777 from Security-Onion-Solutions/2.4/dev
2.4.110
2024-10-07 15:18:03 -04:00
Mike Reeves a136bef668 Merge pull request #13776 from Security-Onion-Solutions/2.4.110
2.4.110
2024-10-07 10:04:54 -04:00
Mike Reeves bbc65c32b6 2.4.110 2024-10-07 09:55:54 -04:00
Josh Patterson 0ec136d227 Merge pull request #13764 from Security-Onion-Solutions/safedir
Safedir
2024-10-01 15:12:53 -04:00
m0duspwnens 20127e6b1d hard-reset to the remote revision 2024-10-01 15:09:53 -04:00
m0duspwnens 24817a3919 user socore 2024-10-01 09:21:56 -04:00
Jason Ertel f448cc9c7d Merge pull request #13757 from Security-Onion-Solutions/jertel/wip
adjustments for support of PKCE OIDC
2024-10-01 08:58:26 -04:00
Jason Ertel 4913df2297 adjustments for support of PKCE OIDC 2024-10-01 08:54:14 -04:00
Josh Brower 8521123d19 Merge pull request #13745 from Security-Onion-Solutions/2.4/agfix
Move Airgap later in setup
2024-09-26 15:51:31 -04:00
defensivedepth 3567dfc0dc Move Airgap later in setup 2024-09-26 15:48:50 -04:00
Josh Brower 500811d5ea Merge pull request #13743 from Security-Onion-Solutions/2.4/agfix
Fix path
2024-09-26 09:50:16 -04:00
defensivedepth d86694a01c Fix path 2024-09-26 09:48:28 -04:00
Josh Brower 421120024a Merge pull request #13740 from Security-Onion-Solutions/2.4/agfix
Fix location for airgap
2024-09-26 08:54:58 -04:00
defensivedepth fe860481c5 Fix location for airgap 2024-09-26 08:52:53 -04:00
Josh Brower 8af086c2a1 Merge pull request #13737 from Security-Onion-Solutions/2.4/summaries
Change summaries branch
2024-09-25 15:41:59 -04:00
defensivedepth 778d5be407 Change summaries branch 2024-09-25 15:35:08 -04:00
weslambert 8e8e584087 Merge pull request #13736 from Security-Onion-Solutions/fix/elastic_template_retry
Retry after 1 second
2024-09-25 13:08:36 -04:00
weslambert aacd715379 Retry after 1 second 2024-09-25 13:07:01 -04:00
Jason Ertel efb9778459 Merge pull request #13734 from Security-Onion-Solutions/jertel/wip
lowercase email when looking up ID; allow uppercase emails when modif…
2024-09-25 10:47:15 -04:00
Jason Ertel 073fb16e20 lowercase email when looking up ID; allow uppercase emails when modifying existing users but not when adding new users 2024-09-25 10:26:26 -04:00
Josh Brower 31d8593c8e Merge pull request #13733 from Security-Onion-Solutions/2.4/sigma-airgapfix
Add so repo back in
2024-09-25 10:23:11 -04:00
defensivedepth 445a9679bd Add so repo back in 2024-09-25 10:18:57 -04:00
weslambert 0bcf9e6be7 Merge pull request #13732 from Security-Onion-Solutions/fix/elastic_templates_latest
Check if running during soup
2024-09-25 09:37:02 -04:00
weslambert 50ae37c160 Check if running during soup 2024-09-25 08:25:20 -04:00
Josh Brower b24c7fbf93 Merge pull request #13729 from Security-Onion-Solutions/2.4/temp-summaries-branch
Use temp summaries branch
2024-09-24 17:17:00 -04:00
defensivedepth 48aff374a3 Use temp summaries branch 2024-09-24 15:37:43 -04:00
Josh Brower 0ff9153d1a Merge pull request #13727 from Security-Onion-Solutions/2.4/filter-tweaks
Disable by default & Airgap
2024-09-24 13:06:41 -04:00
defensivedepth d2397c3c1c Refactor cron logic 2024-09-24 13:03:51 -04:00
defensivedepth 0a74a53254 Remove cron if disabled 2024-09-24 12:38:49 -04:00
defensivedepth 01f87218de Airgap support 2024-09-24 12:04:24 -04:00
defensivedepth 5286739414 Disable by default 2024-09-24 10:51:52 -04:00
weslambert 9c7bedb715 Merge pull request #13724 from Security-Onion-Solutions/fix/integration_fields
Fix core integration field mappings
2024-09-23 17:44:46 -04:00
Wes 70c5a07913 Add back meta ad error.message 2024-09-23 21:36:40 +00:00
Josh Brower da3be8d8be Merge pull request #13709 from Security-Onion-Solutions/2.4/defend-filters
Initial Support for managing Elastic Defend Filters
2024-09-23 17:00:10 -04:00
defensivedepth 5cc8198302 Fix permissions 2024-09-23 16:32:42 -04:00
Wes 41112a59ec Add back meta 2024-09-23 20:12:14 +00:00
defensivedepth 2a890a35a0 Update format 2024-09-23 13:48:12 -04:00
defensivedepth 219cb5e044 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/defend-filters 2024-09-23 13:03:32 -04:00
defensivedepth ef003ffbb5 Refactor 2024-09-23 12:55:07 -04:00
defensivedepth 074cc8e6ff Initial commit 2024-09-20 11:58:21 -04:00
Jason Ertel 97569a1e9d Merge pull request #13694 from Security-Onion-Solutions/jertel/wip
add missing annotation file
2024-09-18 14:23:57 -04:00
Jorge Reyes b4bc0f4719 Merge pull request #13695 from Security-Onion-Solutions/reyesj2/gitsudp
enable stig for so desktop
2024-09-18 14:22:08 -04:00
reyesj2 385054b7b8 enable stig for so desktop
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-09-18 14:18:47 -04:00
Jason Ertel 442f7a914a add missing annotation file 2024-09-18 14:16:43 -04:00
Wes 764eb98bc2 Add custom component for ints 2024-09-17 19:43:13 +00:00
weslambert 4575b502a8 Merge pull request #13686 from Security-Onion-Solutions/fix/opnsense_pfsense_suri_alerts
Fix suricata alerts for opnsense and pfsense
2024-09-17 15:33:57 -04:00
Wes cf0d56eee7 Fix suricata alerts for opnsense and pfsense 2024-09-17 19:24:31 +00:00
Josh Patterson b7fd19dcfd Merge pull request #13675 from Security-Onion-Solutions/issue/13247
resolve 13247
2024-09-16 16:44:41 -04:00
Jason Ertel 60dfa0f87e Merge pull request #13676 from Security-Onion-Solutions/jertel/wip
remove colon to avoid yaml parsing problems
2024-09-16 15:33:35 -04:00
Jason Ertel cce9e162d4 remove colon to avoid yaml parsing problems 2024-09-16 15:30:14 -04:00
m0duspwnens 0ab2695ceb move set to soup 2024-09-16 13:11:08 -04:00
m0duspwnens 56666ad82c resolve 13247 2024-09-16 11:19:16 -04:00
Jason Ertel cb41be9e85 Merge pull request #13673 from Security-Onion-Solutions/jertel/wip
Clarify enabled settings
2024-09-16 10:53:55 -04:00
Jason Ertel 0566f46d5b Clarify enabled settings 2024-09-16 10:41:01 -04:00
Jason Ertel b4e8dd8a7b Clarify enabled settings 2024-09-16 10:14:52 -04:00
Jason Ertel 1f6735a14d Clarify enabled settings 2024-09-16 10:12:54 -04:00
Jason Ertel e0c499645d Clarify enabled settings 2024-09-16 10:12:09 -04:00
Jason Ertel 217bb388a0 Clarify enabled settings 2024-09-16 10:05:17 -04:00
weslambert 5c8772774f Merge pull request #13651 from Security-Onion-Solutions/feature/integration_upgrade
Upgrade Elastic integrations when new versions are available
2024-09-13 18:07:15 -04:00
weslambert 57e06dced2 Change message 2024-09-13 13:52:01 -04:00
weslambert 973b93e332 Remove check for error 2024-09-13 13:49:53 -04:00
weslambert bc71af7a1f Check status 2024-09-13 13:27:26 -04:00
weslambert fa33348910 Change message 2024-09-13 13:26:17 -04:00
weslambert da47d247c9 Remove check for cookie 2024-09-13 13:24:55 -04:00
weslambert 9bd7909983 Merge pull request #13666 from Security-Onion-Solutions/m0duspwnens-patch-1
exit 1 if unable to connect to kibana
2024-09-13 10:58:31 -04:00
Josh Patterson 06c0d5b0f5 Update so-elastic-fleet-integration-upgrade 2024-09-13 10:13:11 -04:00
weslambert 662f906f9d Remove IFS 2024-09-13 09:16:53 -04:00
weslambert 2e85dcc36a Set IFS 2024-09-12 17:59:39 -04:00
weslambert 2ec3f52ea6 Don't use state; set IFS 2024-09-12 17:57:41 -04:00
weslambert a12e2e2022 Merge pull request #13661 from Security-Onion-Solutions/feature/idh_custom_skins
Allow custom IDH skins
2024-09-12 16:38:28 -04:00
Jason Ertel 11a60dbdbf Merge pull request #13663 from Security-Onion-Solutions/jertel/jinja
mark specific settings as allowed to include Jinja
2024-09-12 13:58:07 -04:00
Mike Reeves ff33cb62df Merge pull request #13647 from Security-Onion-Solutions/surirules2
External Support for Detections
2024-09-12 13:44:20 -04:00
Mike Reeves cac1539094 Add to firewall settings and annotations 2024-09-12 13:08:01 -04:00
Mike Reeves 3e768bccb8 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into surirules2 2024-09-12 12:58:19 -04:00
Wes 1463b35e2e Change name 2024-09-12 15:31:12 +00:00
Wes 6518088de7 Allow custom IDH skins 2024-09-12 15:30:11 +00:00
weslambert 31d190cbf4 Merge pull request #13660 from Security-Onion-Solutions/fix/integration_annotations
Fix annotations typo
2024-09-12 10:56:43 -04:00
weslambert 24504dcc87 Fix annotations typo 2024-09-12 10:54:13 -04:00
weslambert 742fa4cbd6 Merge pull request #13658 from Security-Onion-Solutions/fix/annotation_barrcuda_imperva
Add annotations for barracuda and imperva
2024-09-11 15:59:25 -04:00
weslambert 7f65d122a8 Remove echo 2024-09-11 15:54:34 -04:00
weslambert 602158aa56 Add annotations for barracuda and imperva 2024-09-11 15:52:23 -04:00
weslambert 4c9bbeb5b7 Merge pull request #13657 from Security-Onion-Solutions/feature/integrations_barracuda_imperva
Add barracuda and imperva integrations
2024-09-11 15:47:21 -04:00
Wes f2bb54d993 Add barracuda and imperva integrations 2024-09-11 19:41:38 +00:00
Jason Ertel fbf0a9652a Merge pull request #13652 from Security-Onion-Solutions/jertel/esvs
es sig pulled from es dir
2024-09-11 11:24:19 -04:00
Jason Ertel f0e4e52364 es sig pulled from es dir 2024-09-11 11:12:20 -04:00
Wes e4fa47f27e Fix common source 2024-09-11 15:01:30 +00:00
Wes 061f42626c Add functions to common 2024-09-11 15:00:55 +00:00
Wes 5112f5c9ce Run upgrade during state apply 2024-09-11 14:58:01 +00:00
Wes 409612ff1f Add script to upgrade integrations 2024-09-11 14:56:57 +00:00
Jason Ertel 8b8737221d mark specific settings as allowed to include Jinja 2024-09-11 09:28:17 -04:00
Mike Reeves cabba5e70d Merge pull request #13648 from Security-Onion-Solutions/TOoSmOotH-patch-2
Make Standalone installs use Suricata for PCAP
2024-09-10 15:27:16 -04:00
Mike Reeves da5e91ee03 Update so-functions 2024-09-10 15:24:44 -04:00
Mike Reeves 6e2c319e7e Fix http2 declaration 2024-09-09 19:42:04 -04:00
Mike Reeves eab7828bfe Formatting and add setting 2024-09-09 18:39:19 -04:00
Mike Reeves 38619ae023 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-09-09 18:31:58 -04:00
Josh Patterson e7a7a8609a Merge pull request #13640 from Security-Onion-Solutions/esver
only elasticsearch image uses es version
2024-09-09 16:45:14 -04:00
m0duspwnens 8702d95434 only elasticsearch image uses es version 2024-09-09 16:38:38 -04:00
weslambert 3b5af6bdd4 Merge pull request #13639 from Security-Onion-Solutions/fix/system_destination_ip
Add destination IP for so-system
2024-09-09 16:18:21 -04:00
Wes 25a9fb9b5c Add destination IP for so-system 2024-09-09 20:16:23 +00:00
Josh Patterson 0984d1587a Merge pull request #13638 from Security-Onion-Solutions/surireload
add so-suricata container req for rule reload
2024-09-09 11:14:57 -04:00
m0duspwnens 7123c62876 add so-suricata container req for rule reload 2024-09-09 11:13:28 -04:00
Josh Patterson db1713dbde Merge pull request #13635 from Security-Onion-Solutions/upgrade/docker
Upgrade Docker to 27.2.0
2024-09-09 09:32:39 -04:00
m0duspwnens b150969986 Merge remote-tracking branch 'origin/2.4/dev' into upgrade/docker 2024-09-09 07:56:34 -04:00
Josh Patterson 56aa57dab2 Merge pull request #13625 from Security-Onion-Solutions/esver
remove -it
2024-09-06 12:28:08 -04:00
m0duspwnens ba24c5b219 remove -it 2024-09-06 12:26:55 -04:00
m0duspwnens 43c2436385 Merge remote-tracking branch 'origin/2.4/dev' into upgrade/docker 2024-09-06 11:38:33 -04:00
Josh Patterson ba0779ea1e Merge pull request #13624 from Security-Onion-Solutions/esver
fix es agent update for soup
2024-09-06 10:46:18 -04:00
m0duspwnens 2e379dd29c fix line delete causing issues sourcing so-common and es agent grid upgrade 2024-09-06 10:44:35 -04:00
m0duspwnens 331f63eadd pass path for airgap 2024-09-06 10:30:40 -04:00
m0duspwnens fc25bfe0df grab es version from defaults during soup 2024-09-06 09:04:43 -04:00
m0duspwnens 576d218cd9 dont restart suricata during setup. retry rule reload for 3 minutes 2024-09-06 08:10:59 -04:00
Jason Ertel b9d93118b9 Merge pull request #13620 from Security-Onion-Solutions/jertel/esvs
es version shift
2024-09-05 13:43:44 -04:00
Jason Ertel 5625771ffb es version shift 2024-09-05 13:16:28 -04:00
Jason Ertel c85e5643db es version shift 2024-09-05 13:14:45 -04:00
m0duspwnens 21473aba9e Merge remote-tracking branch 'origin/2.4/dev' into upgrade/docker 2024-09-05 10:23:50 -04:00
Josh Patterson ad39bc176d Merge pull request #13616 from Security-Onion-Solutions/esver
ref es version
2024-09-05 08:49:22 -04:00
m0duspwnens 5a1d61a042 ref es version 2024-09-05 08:45:44 -04:00
Josh Patterson 8adeb8a120 Merge pull request #13615 from Security-Onion-Solutions/esver
resolve issues with es version pinning
2024-09-05 08:41:59 -04:00
m0duspwnens 6581979506 retry suricata rule reload 2024-09-05 07:33:56 -04:00
m0duspwnens df14cbad44 fix calls to get_elastic_agent_vars 2024-09-04 17:43:49 -04:00
m0duspwnens 72f3eaa8f6 should not have changed this, so changing it back 2024-09-04 16:42:19 -04:00
m0duspwnens f106191e72 fix image for so-elasticsearch container 2024-09-04 16:01:24 -04:00
Josh Patterson 62b185fd32 Merge pull request #13610 from Security-Onion-Solutions/esver
use correct sig based on es image or not
2024-09-04 15:54:30 -04:00
m0duspwnens 7d9b3b1f28 use correct sig 2024-09-04 15:36:17 -04:00
Josh Patterson 71f6b44c0c Merge pull request #13607 from Security-Onion-Solutions/esver
use Elasticsearch version for some containers
2024-09-04 13:30:07 -04:00
Jason Ertel e14b7bc2fb Merge pull request #13608 from Security-Onion-Solutions/jertel/hf
remove hotfix from dev branch
2024-09-04 13:28:02 -04:00
Jason Ertel 94e9772cf6 remove hotfix from dev branch 2024-09-04 13:25:45 -04:00
m0duspwnens 2b807c2409 update comment 2024-09-04 10:33:14 -04:00
m0duspwnens 0af2e85f91 update annotation. 2024-09-04 10:32:11 -04:00
m0duspwnens 2394488c92 update docker 27.2.0-1 and containerd.io 1.7.21 2024-09-04 09:38:17 -04:00
m0duspwnens cfdc8ede90 fix es version logic 2024-09-03 16:49:39 -04:00
m0duspwnens 83aa4c9a53 fix awk 2024-09-03 15:22:25 -04:00
m0duspwnens c20ac6c2d8 fix if and awk 2024-09-03 15:20:49 -04:00
Josh Brower 7311773c20 Merge pull request #13598 from Security-Onion-Solutions/2.4/main
Hotfix-2.4.100.20240903
2024-09-03 13:13:16 -04:00
Josh Brower 5472d2586c Merge pull request #13596 from Security-Onion-Solutions/hotfix/2.4.100
Hotfix 2.4.100
2024-09-03 13:07:49 -04:00
m0duspwnens 6d7b76115f use the version that is longest for the loop 2024-09-03 13:00:37 -04:00
m0duspwnens a920adcf7f handle ver1 missing segment 2024-09-03 12:53:53 -04:00
m0duspwnens 529844eb36 update so-image-common to use es version for es containers 2024-09-03 12:38:21 -04:00
Mike Reeves fd187b11f9 Merge pull request #13595 from Security-Onion-Solutions/hf2.4.100
2.4.100 hotfix
2024-09-03 10:32:40 -04:00
Mike Reeves f6cfd2349b 2.4.100 hotfix 2024-09-03 10:29:14 -04:00
Mike Reeves 9e2e676cc2 Merge pull request #13590 from Security-Onion-Solutions/TOoSmOotH-patch-1 2024-09-01 22:27:30 -04:00
Mike Reeves 5811ee5897 Update so-suricata-reload-rules 2024-09-01 10:39:42 -04:00
weslambert a11e78176f Merge pull request #13587 from Security-Onion-Solutions/fix/hotfix_date
Update HOTFIX
2024-08-30 16:21:03 -04:00
weslambert db4c373c45 Merge pull request #13586 from Security-Onion-Solutions/fix/so-system-mappings
Add so-system-mappings
2024-08-30 16:20:28 -04:00
weslambert 5be17330d1 Update HOTFIX 2024-08-30 16:14:42 -04:00
weslambert a7de6993f9 Add so-system-mappings 2024-08-30 16:11:41 -04:00
Mike Reeves d7446c2a3f Merge pull request #13574 from Security-Onion-Solutions/sureload
Reload Suricata vs restart
2024-08-30 12:50:41 -04:00
Doug Burks f319f0803a Merge pull request #13583 from Security-Onion-Solutions/dougburks-patch-1
Update Github Discussion template
2024-08-30 11:31:52 -04:00
Doug Burks 9eb76a95ca Update 2-4.yml 2024-08-30 11:25:51 -04:00
Mike Reeves afcb30be03 Threhsolds require a restart 2024-08-30 09:43:35 -04:00
Mike Reeves b9f817201c Add thresholds to the reload list 2024-08-30 09:15:25 -04:00
Mike Reeves f17e3e91ec Merge pull request #13577 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2024-08-29 16:32:58 -04:00
Mike Reeves 121a64ba57 Update VERSION 2024-08-29 16:31:43 -04:00
Mike Reeves edce5186b9 Add support to relaod rules instead of restart 2024-08-29 12:55:06 -04:00
Mike Reeves 306bd8faaa Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-08-29 12:39:41 -04:00
Josh Patterson 4c10282f40 add es version to annotation 2024-08-26 09:37:19 -04:00
m0duspwnens 7fbf448b22 fail if no defaults file 2024-08-21 11:36:06 -04:00
m0duspwnens cd9c9a25d3 reference elastic versions from defaults 2024-08-21 11:25:56 -04:00
m0duspwnens da1671fdf1 add get_elastic_agent_vars function 2024-08-21 11:25:33 -04:00
m0duspwnens 3d61897522 ref es version from defaults for kibana 2024-08-21 08:51:35 -04:00
Mike Reeves e664f2df28 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-08-15 15:35:20 -04:00
Mike Reeves 72146d9566 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-06-27 10:42:07 -04:00
Mike Reeves 9af3e364aa Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-06-25 08:23:10 -04:00
Mike Reeves 229cb1e9ef Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-06-21 14:06:51 -04:00
Mike Reeves 21f78a039a Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-04-02 08:47:08 -04:00
Mike Reeves 6069c586d3 Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-01-24 16:07:31 -05:00
Mike Reeves 3bdc0340b8 Merge branch 'hotfix/2.4.30' into 2.4/main 2023-12-19 13:21:33 -05:00
583 changed files with 17016 additions and 531695 deletions
+7 -4
View File
@@ -11,7 +11,6 @@ body:
description: Which version of Security Onion 2.4.x are you asking about?
options:
-
- 2.4 Pre-release (Beta, Release Candidate)
- 2.4.10
- 2.4.20
- 2.4.30
@@ -22,6 +21,9 @@ body:
- 2.4.80
- 2.4.90
- 2.4.100
- 2.4.110
- 2.4.111
- 2.4.120
- Other (please provide detail below)
validations:
required: true
@@ -32,9 +34,10 @@ body:
options:
-
- Security Onion ISO image
- Network installation on Red Hat derivative like Oracle, Rocky, Alma, etc.
- Network installation on Ubuntu
- Network installation on Debian
- Cloud image (Amazon, Azure, Google)
- Network installation on Red Hat derivative like Oracle, Rocky, Alma, etc. (unsupported)
- Network installation on Ubuntu (unsupported)
- Network installation on Debian (unsupported)
- Other (please provide detail below)
validations:
required: true
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
with:
path-to-signatures: 'signatures_v1.json'
path-to-document: 'https://securityonionsolutions.com/cla'
allowlist: dependabot[bot],jertel,dougburks,TOoSmOotH,weslambert,defensivedepth,m0duspwnens
allowlist: dependabot[bot],jertel,dougburks,TOoSmOotH,defensivedepth,m0duspwnens
remote-organization-name: Security-Onion-Solutions
remote-repository-name: licensing
+11 -11
View File
@@ -1,17 +1,17 @@
### 2.4.100-20240829 ISO image released on 2024/08/29
### 2.4.120-20250212 ISO image released on 2025/02/12
### Download and Verify
2.4.100-20240829 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.100-20240829.iso
2.4.120-20250212 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.120-20250212.iso
MD5: 377586C143FABD662DB414DEA49D46B7
SHA1: 69D4B94522789AF47075A9FF1354B069679AC366
SHA256: 52FBA5C8762B8DCF2945AD2837B3A19E63ADCC209AB510D7FD0F86AE713AA153
MD5: 3FF09F50AB1C9318CF0862DE9816102D
SHA1: 197AFA5A85C5CF95D0289FCD21BED7615FB8DB5C
SHA256: A59D94B09EEB39D8C2B6D0808792EC479B13D96FA7B32C3BEEFB6709C93F6692
Signature for ISO image:
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.100-20240829.iso.sig
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.120-20250212.iso.sig
Signing key:
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS
@@ -25,22 +25,22 @@ wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.
Download the signature file for the ISO:
```
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.100-20240829.iso.sig
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.120-20250212.iso.sig
```
Download the ISO image:
```
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.100-20240829.iso
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.120-20250212.iso
```
Verify the downloaded ISO image using the signature file:
```
gpg --verify securityonion-2.4.100-20240829.iso.sig securityonion-2.4.100-20240829.iso
gpg --verify securityonion-2.4.120-20250212.iso.sig securityonion-2.4.120-20250212.iso
```
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
```
gpg: Signature made Thu 29 Aug 2024 12:02:55 PM EDT using RSA key ID FE507013
gpg: Signature made Tue 11 Feb 2025 05:26:33 PM EST using RSA key ID FE507013
gpg: Good signature from "Security Onion Solutions, LLC <info@securityonionsolutions.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
+1 -1
View File
@@ -1 +1 @@
2.4.100
2.4.120
+14 -4
View File
@@ -16,6 +16,8 @@ base:
- sensoroni.adv_sensoroni
- telegraf.soc_telegraf
- telegraf.adv_telegraf
- versionlock.soc_versionlock
- versionlock.adv_versionlock
'* and not *_desktop':
- firewall.soc_firewall
@@ -47,6 +49,8 @@ base:
- kibana.adv_kibana
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.nodes
- redis.soc_redis
- redis.adv_redis
@@ -96,6 +100,7 @@ base:
- kibana.secrets
{% endif %}
- kratos.soc_kratos
- kratos.adv_kratos
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
@@ -113,8 +118,8 @@ base:
- kibana.adv_kibana
- strelka.soc_strelka
- strelka.adv_strelka
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.soc_redis
- redis.adv_redis
- influxdb.soc_influxdb
@@ -149,6 +154,8 @@ base:
- idstools.adv_idstools
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.nodes
- redis.soc_redis
- redis.adv_redis
@@ -262,6 +269,7 @@ base:
- kibana.secrets
{% endif %}
- kratos.soc_kratos
- kratos.adv_kratos
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
@@ -277,8 +285,8 @@ base:
- kibana.adv_kibana
- backup.soc_backup
- backup.adv_backup
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.soc_redis
- redis.adv_redis
- influxdb.soc_influxdb
@@ -310,3 +318,5 @@ base:
'*_desktop':
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
- stig.soc_stig
- soc.license
+7 -1
View File
@@ -24,6 +24,7 @@
'influxdb',
'soc',
'kratos',
'hydra',
'elasticfleet',
'elastic-fleet-package-registry',
'firewall',
@@ -68,6 +69,7 @@
'strelka.manager',
'soc',
'kratos',
'hydra',
'influxdb',
'telegraf',
'firewall',
@@ -95,6 +97,7 @@
'strelka.manager',
'soc',
'kratos',
'hydra',
'elasticfleet',
'elastic-fleet-package-registry',
'firewall',
@@ -117,6 +120,7 @@
'strelka.manager',
'soc',
'kratos',
'hydra',
'elastic-fleet-package-registry',
'elasticfleet',
'firewall',
@@ -151,6 +155,7 @@
'influxdb',
'soc',
'kratos',
'hydra',
'elastic-fleet-package-registry',
'elasticfleet',
'firewall',
@@ -202,7 +207,8 @@
'so-desktop': [
'ssl',
'docker_clean',
'telegraf'
'telegraf',
'stig'
],
}, grain='role') %}
+1
View File
@@ -4,4 +4,5 @@ backup:
- /etc/pki
- /etc/salt
- /nsm/kratos
- /nsm/hydra
destination: "/nsm/backup"
+1
View File
@@ -182,6 +182,7 @@ sostatus_log:
file.managed:
- name: /opt/so/log/sostatus/status.log
- mode: 644
- replace: False
# Install sostatus check cron. This is used to populate Grid.
so-status_check_cron:
+12
View File
@@ -11,6 +11,7 @@
{% else %}
{% set UPDATE_DIR='/tmp/sogh/securityonion' %}
{% endif %}
{% set SOVERSION = salt['file.read']('/etc/soversion').strip() %}
remove_common_soup:
file.absent:
@@ -107,6 +108,17 @@ copy_so-repo-sync_sbin:
- force: True
- preserve: True
{# this is added in 2.4.120 to remove salt repo files pointing to saltproject.io to accomodate the move to broadcom and new bootstrap-salt script #}
{% if salt['pkg.version_cmp'](SOVERSION, '2.4.120') == -1 %}
{% set saltrepofile = '/etc/yum.repos.d/salt.repo' %}
{% if grains.os_family == 'Debian' %}
{% set saltrepofile = '/etc/apt/sources.list.d/salt.list' %}
{% endif %}
remove_saltproject_io_repo_manager:
file.absent:
- name: {{ saltrepofile }}
{% endif %}
{% else %}
fix_23_soup_sbin:
cmd.run:
+63 -11
View File
@@ -8,12 +8,6 @@
# Elastic agent is not managed by salt. Because of this we must store this base information in a
# script that accompanies the soup system. Since so-common is one of those special soup files,
# and since this same logic is required during installation, it's included in this file.
ELASTIC_AGENT_TARBALL_VERSION="8.14.3"
ELASTIC_AGENT_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_FILE="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_EXPANSION_DIR=/nsm/elastic-fleet/artifacts/beats/elastic-agent
DEFAULT_SALT_DIR=/opt/so/saltstack/default
DOC_BASE_URL="https://docs.securityonion.net/en/2.4"
@@ -174,6 +168,46 @@ check_salt_minion_status() {
return $status
}
# Compare es versions and return the highest version
compare_es_versions() {
# Save the original IFS
local OLD_IFS="$IFS"
IFS=.
local i ver1=($1) ver2=($2)
# Restore the original IFS
IFS="$OLD_IFS"
# Determine the maximum length between the two version arrays
local max_len=${#ver1[@]}
if [[ ${#ver2[@]} -gt $max_len ]]; then
max_len=${#ver2[@]}
fi
# Compare each segment of the versions
for ((i=0; i<max_len; i++)); do
# If a segment in ver1 or ver2 is missing, set it to 0
if [[ -z ${ver1[i]} ]]; then
ver1[i]=0
fi
if [[ -z ${ver2[i]} ]]; then
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]})); then
echo "$1"
return 0
fi
if ((10#${ver1[i]} < 10#${ver2[i]})); then
echo "$2"
return 0
fi
done
echo "$1" # If versions are equal, return either
return 0
}
copy_new_files() {
# Copy new files over to the salt dir
cd $UPDATE_DIR
@@ -263,11 +297,6 @@ fail() {
exit 1
}
get_random_value() {
length=${1:-20}
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
}
get_agent_count() {
if [ -f /opt/so/log/agents/agentstatus.log ]; then
AGENTCOUNT=$(cat /opt/so/log/agents/agentstatus.log | grep -wF active | awk '{print $2}')
@@ -276,6 +305,27 @@ get_agent_count() {
fi
}
get_elastic_agent_vars() {
local path="${1:-/opt/so/saltstack/default}"
local defaultsfile="${path}/salt/elasticsearch/defaults.yaml"
if [ -f "$defaultsfile" ]; then
ELASTIC_AGENT_TARBALL_VERSION=$(egrep " +version: " $defaultsfile | awk -F: '{print $2}' | tr -d '[:space:]')
ELASTIC_AGENT_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_FILE="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_EXPANSION_DIR=/nsm/elastic-fleet/artifacts/beats/elastic-agent
else
fail "Could not find salt/elasticsearch/defaults.yaml"
fi
}
get_random_value() {
length=${1:-20}
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
}
gpg_rpm_import() {
if [[ $is_oracle ]]; then
if [[ "$WHATWOULDYOUSAYYAHDOHERE" == "setup" ]]; then
@@ -627,6 +677,8 @@ has_uppercase() {
}
update_elastic_agent() {
local path="${1:-/opt/so/saltstack/default}"
get_elastic_agent_vars "$path"
echo "Checking if Elastic Agent update is necessary..."
download_and_verify "$ELASTIC_AGENT_URL" "$ELASTIC_AGENT_MD5_URL" "$ELASTIC_AGENT_FILE" "$ELASTIC_AGENT_MD5" "$ELASTIC_AGENT_EXPANSION_DIR"
}
+29 -2
View File
@@ -29,6 +29,7 @@ container_list() {
"so-influxdb"
"so-kibana"
"so-kratos"
"so-hydra"
"so-nginx"
"so-pcaptools"
"so-soc"
@@ -53,6 +54,7 @@ container_list() {
"so-kafka"
"so-kibana"
"so-kratos"
"so-hydra"
"so-logstash"
"so-nginx"
"so-pcaptools"
@@ -112,6 +114,10 @@ update_docker_containers() {
container_list
fi
# all the images using ELASTICSEARCHDEFAULTS.elasticsearch.version
# does not include so-elastic-fleet since that container uses so-elastic-agent image
local IMAGES_USING_ES_VERSION=("so-elasticsearch")
rm -rf $SIGNPATH >> "$LOG_FILE" 2>&1
mkdir -p $SIGNPATH >> "$LOG_FILE" 2>&1
@@ -139,15 +145,36 @@ update_docker_containers() {
$PROGRESS_CALLBACK $i
fi
if [[ " ${IMAGES_USING_ES_VERSION[*]} " =~ [[:space:]]${i}[[:space:]] ]]; then
# this is an es container so use version defined in elasticsearch defaults.yaml
local UPDATE_DIR='/tmp/sogh/securityonion'
if [ ! -d "$UPDATE_DIR" ]; then
UPDATE_DIR=/securityonion
fi
local v1=0
local v2=0
if [[ -f "$UPDATE_DIR/salt/elasticsearch/defaults.yaml" ]]; then
v1=$(egrep " +version: " "$UPDATE_DIR/salt/elasticsearch/defaults.yaml" | awk -F: '{print $2}' | tr -d '[:space:]')
fi
if [[ -f "$DEFAULT_SALT_DIR/salt/elasticsearch/defaults.yaml" ]]; then
v2=$(egrep " +version: " "$DEFAULT_SALT_DIR/salt/elasticsearch/defaults.yaml" | awk -F: '{print $2}' | tr -d '[:space:]')
fi
local highest_es_version=$(compare_es_versions "$v1" "$v2")
local image=$i:$highest_es_version$IMAGE_TAG_SUFFIX
local sig_url=https://sigs.securityonion.net/es-$highest_es_version/$image.sig
else
# this is not an es container so use the so version for the version
local image=$i:$VERSION$IMAGE_TAG_SUFFIX
local sig_url=https://sigs.securityonion.net/$VERSION/$image.sig
fi
# Pull down the trusted docker image
local image=$i:$VERSION$IMAGE_TAG_SUFFIX
run_check_net_err \
"docker pull $CONTAINER_REGISTRY/$IMAGEREPO/$image" \
"Could not pull $image, please ensure connectivity to $CONTAINER_REGISTRY" >> "$LOG_FILE" 2>&1
# Get signature
run_check_net_err \
"curl --retry 5 --retry-delay 60 -A '$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)' https://sigs.securityonion.net/$VERSION/$i:$VERSION$IMAGE_TAG_SUFFIX.sig --output $SIGNPATH/$image.sig" \
"curl --retry 5 --retry-delay 60 -A '$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)' $sig_url --output $SIGNPATH/$image.sig" \
"Could not pull signature file for $image, please ensure connectivity to https://sigs.securityonion.net " \
noretry >> "$LOG_FILE" 2>&1
# Dump our hash values
+6
View File
@@ -125,6 +125,7 @@ if [[ $EXCLUDE_STARTUP_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|tls handshake error" # Docker registry container when new node comes onlines
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|Unable to get license information" # Logstash trying to contact ES before it's ready
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|process already finished" # Telegraf script finished just as the auto kill timeout kicked in
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|No shard available" # Typical error when making a query before ES has finished loading all indices
fi
if [[ $EXCLUDE_FALSE_POSITIVE_ERRORS == 'Y' ]]; then
@@ -150,6 +151,7 @@ if [[ $EXCLUDE_FALSE_POSITIVE_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|app_layer.error" # false positive (suricata 7) in stats.log e.g. app_layer.error.imap.parser | Total | 0
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|is not an ip string literal" # false positive (Open Canary logging out blank IP addresses)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|syncing rule" # false positive (rule sync log line includes rule name which can contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|request_unauthorized" # false positive (login failures to Hydra result in an 'error' log)
fi
if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
@@ -210,6 +212,7 @@ if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|integrity check failed" # Detections: Exclude false positive due to automated testing
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|syncErrors" # Detections: Not an actual error
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|Initialized license manager" # SOC log: before fields.status was changed to fields.licenseStatus
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|from NIC checksum offloading" # zeek reporter.log
fi
RESULT=0
@@ -248,6 +251,9 @@ exclude_log "agentstatus.log" # ignore this log since it tracks agents in error
exclude_log "detections_runtime-status_yara.log" # temporarily ignore this log until Detections is more stable
exclude_log "/nsm/kafka/data/" # ignore Kafka data directory from log check.
# Include Zeek reporter.log to detect errors after running known good pcap(s) through sensor
echo "/nsm/zeek/spool/logger/reporter.log" >> /tmp/log_check_files
for log_file in $(cat /tmp/log_check_files); do
status "Checking log file $log_file"
tail -n $RECENT_LOG_LINES $log_file > /tmp/log_check
+9
View File
@@ -51,6 +51,14 @@ docker:
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-hydra':
final_octet: 30
port_bindings:
- 0.0.0.0:4444:4444
- 0.0.0.0:4445:4445
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-logstash':
final_octet: 29
port_bindings:
@@ -74,6 +82,7 @@ docker:
- 443:443
- 8443:8443
- 7788:7788
- 7789:7789
custom_bind_mounts: []
extra_hosts: []
extra_env: []
+17 -17
View File
@@ -20,41 +20,41 @@ dockergroup:
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-1
- docker-ce: 5:26.1.4-1~debian.12~bookworm
- docker-ce-cli: 5:26.1.4-1~debian.12~bookworm
- docker-ce-rootless-extras: 5:26.1.4-1~debian.12~bookworm
- containerd.io: 1.7.21-1
- docker-ce: 5:27.2.0-1~debian.12~bookworm
- docker-ce-cli: 5:27.2.0-1~debian.12~bookworm
- docker-ce-rootless-extras: 5:27.2.0-1~debian.12~bookworm
- hold: True
- update_holds: True
{% elif grains.oscodename == 'jammy' %}
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-1
- docker-ce: 5:26.1.4-1~ubuntu.22.04~jammy
- docker-ce-cli: 5:26.1.4-1~ubuntu.22.04~jammy
- docker-ce-rootless-extras: 5:26.1.4-1~ubuntu.22.04~jammy
- containerd.io: 1.7.21-1
- docker-ce: 5:27.2.0-1~ubuntu.22.04~jammy
- docker-ce-cli: 5:27.2.0-1~ubuntu.22.04~jammy
- docker-ce-rootless-extras: 5:27.2.0-1~ubuntu.22.04~jammy
- hold: True
- update_holds: True
{% else %}
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-1
- docker-ce: 5:26.1.4-1~ubuntu.20.04~focal
- docker-ce-cli: 5:26.1.4-1~ubuntu.20.04~focal
- docker-ce-rootless-extras: 5:26.1.4-1~ubuntu.20.04~focal
- containerd.io: 1.7.21-1
- docker-ce: 5:27.2.0-1~ubuntu.20.04~focal
- docker-ce-cli: 5:27.2.0-1~ubuntu.20.04~focal
- docker-ce-rootless-extras: 5:27.2.0-1~ubuntu.20.04~focal
- hold: True
- update_holds: True
{% endif %}
{% endif %}
{% else %}
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-3.1.el9
- docker-ce: 3:26.1.4-1.el9
- docker-ce-cli: 1:26.1.4-1.el9
- docker-ce-rootless-extras: 26.1.4-1.el9
- containerd.io: 1.7.21-3.1.el9
- docker-ce: 3:27.2.0-1.el9
- docker-ce-cli: 1:27.2.0-1.el9
- docker-ce-rootless-extras: 27.2.0-1.el9
- hold: True
- update_holds: True
{% endif %}
+1
View File
@@ -45,6 +45,7 @@ docker:
so-influxdb: *dockerOptions
so-kibana: *dockerOptions
so-kratos: *dockerOptions
so-hydra: *dockerOptions
so-logstash: *dockerOptions
so-nginx: *dockerOptions
so-nginx-fleet-node: *dockerOptions
+1 -1
View File
@@ -1,6 +1,6 @@
elastalert:
enabled:
description: You can enable or disable Elastalert.
description: Enables or disables the ElastAlert 2 process. This process is critical for ensuring alerts arrive in SOC, and for outbound notification delivery.
helpLink: elastalert.html
alerter_parameters:
title: Custom Configuration Parameters
@@ -1,4 +1,4 @@
elastic_fleet_package_registry:
enabled:
description: You can enable or disable Elastic Fleet Package Registry.
description: Enables or disables the Fleet package registry process. This process must remain enabled to allow Elastic Agent packages to be updated.
advanced: True
-1
View File
@@ -8,7 +8,6 @@
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
include:
- elasticagent.config
- elasticagent.sostatus
+4
View File
@@ -0,0 +1,4 @@
elasticagent:
enabled:
description: Enables or disables the Elastic Agent process. This process must remain enabled to allow collection of node events.
advanced: True
+58
View File
@@ -63,6 +63,14 @@ eastatedir:
- group: 939
- makedirs: True
custommappingsdir:
file.directory:
- name: /nsm/custom-mappings
- user: 947
- group: 939
- makedirs: True
eapackageupgrade:
file.managed:
- name: /usr/sbin/so-elastic-fleet-package-upgrade
@@ -73,6 +81,56 @@ eapackageupgrade:
- template: jinja
{% if GLOBALS.role != "so-fleet" %}
{% if not GLOBALS.airgap %}
soresourcesrepoclone:
git.latest:
- name: https://github.com/Security-Onion-Solutions/securityonion-resources.git
- target: /nsm/securityonion-resources
- rev: 'main'
- depth: 1
- force_reset: True
{% endif %}
elasticdefendconfdir:
file.directory:
- name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets
- user: 947
- group: 939
- makedirs: True
elasticdefenddisabled:
file.managed:
- name: /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml
- source: salt://elasticfleet/files/soc/elastic-defend-disabled-filters.yaml
- user: 947
- group: 939
- mode: 600
elasticdefendcustom:
file.managed:
- name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw
- source: salt://elasticfleet/files/soc/elastic-defend-custom-filters.yaml
- user: 947
- group: 939
- mode: 600
{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %}
{% set ap = "present" %}
{% else %}
{% set ap = "absent" %}
{% endif %}
cron-elastic-defend-filters:
cron.{{ap}}:
- name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log
- identifier: elastic-defend-filters
- user: root
- minute: '0'
- hour: '3'
- daymonth: '*'
- month: '*'
- dayweek: '*'
eaintegrationsdir:
file.directory:
- name: /opt/so/conf/elastic-fleet/integrations
+10
View File
@@ -8,6 +8,8 @@ elasticfleet:
endpoints_enrollment: ''
es_token: ''
grid_enrollment: ''
defend_filters:
enable_auto_configuration: False
logging:
zeek:
excluded:
@@ -36,6 +38,7 @@ elasticfleet:
- aws
- azure
- barracuda
- barracuda_cloudgen_firewall
- carbonblack_edr
- cef
- checkpoint
@@ -45,10 +48,12 @@ elasticfleet:
- cisco_ios
- cisco_ise
- cisco_meraki
- cisco_secure_email_gateway
- cisco_umbrella
- citrix_adc
- citrix_waf
- cloudflare
- cloudflare_logpush
- crowdstrike
- darktrace
- elastic_agent
@@ -66,6 +71,7 @@ elasticfleet:
- http_endpoint
- httpjson
- iis
- imperva_cloud_waf
- journald
- juniper
- juniper_srx
@@ -103,9 +109,13 @@ elasticfleet:
- ti_anomali
- ti_cybersixgill
- ti_misp
- ti_opencti
- ti_otx
- ti_rapid7_threat_command
- ti_recordedfuture
- ti_threatq
- trendmicro
- trend_micro_vision_one
- udp
- vsphere
- windows
+18 -1
View File
@@ -17,10 +17,12 @@ include:
- elasticfleet.sostatus
- ssl
{% if grains.role not in ['so-fleet'] %}
# Wait for Elasticsearch to be ready - no reason to try running Elastic Fleet server if ES is not ready
wait_for_elasticsearch_elasticfleet:
cmd.run:
- name: so-elasticsearch-wait
{% endif %}
# If enabled, automatically update Fleet Logstash Outputs
{% if ELASTICFLEETMERGED.config.server.enable_auto_configuration and grains.role not in ['so-import', 'so-eval', 'so-fleet'] %}
@@ -141,7 +143,22 @@ so-elastic-fleet-integrations:
so-elastic-agent-grid-upgrade:
cmd.run:
- name: /usr/sbin/so-elastic-agent-grid-upgrade
- retry: True
- retry:
attempts: 12
interval: 5
so-elastic-fleet-integration-upgrade:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-integration-upgrade
{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %}
so-elastic-defend-manage-filters-file-watch:
cmd.run:
- name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log
- onchanges:
- file: elasticdefendcustom
- file: elasticdefenddisabled
{% endif %}
{% endif %}
delete_so-elastic-fleet_so-status.disabled:
@@ -0,0 +1,30 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "hydra-logs",
"namespace": "so",
"description": "Hydra logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.logs": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/hydra/hydra.log"
],
"data_stream.dataset": "hydra",
"tags": ["so-hydra"],
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: iam\n module: hydra",
"custom": "pipeline: hydra"
}
}
}
}
},
"force": true
}
@@ -0,0 +1,35 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "so-ip-mappings",
"namespace": "so",
"description": "IP Description mappings",
"policy_id": "so-grid-nodes_general",
"vars": {},
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.logs": {
"enabled": true,
"vars": {
"paths": [
"/nsm/custom-mappings/ip-descriptions.csv"
],
"data_stream.dataset": "hostnamemappings",
"tags": [
"so-ip-mappings"
],
"processors": "- decode_csv_fields:\n fields:\n message: decoded.csv\n separator: \",\"\n ignore_missing: false\n overwrite_keys: true\n trim_leading_space: true\n fail_on_error: true\n\n- extract_array:\n field: decoded.csv\n mappings:\n so.ip_address: '0'\n so.description: '1'\n\n- script:\n lang: javascript\n source: >\n function process(event) {\n var ip = event.Get('so.ip_address');\n var validIpRegex = /^((25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)$/\n if (!validIpRegex.test(ip)) {\n event.Cancel();\n }\n }\n- fingerprint:\n fields: [\"so.ip_address\"]\n target_field: \"@metadata._id\"\n",
"custom": ""
}
}
}
}
},
"force": true
}
@@ -0,0 +1,27 @@
title: 'Template 1'
id: 'This needs to be a UUIDv4 id - https://www.uuidgenerator.net/version4'
description: 'Short description detailing what this rule is filtering and why.'
references: 'Relevant urls, etc'
author: '@SecurityOnion'
date: 'MM/DD/YY'
event_type: 'dns_query'
filter_type: 'exclude'
filter:
selection_1:
TargetField: 'QueryName'
Condition: 'end with'
Pattern: '.thawte.com'
---
title: 'Template 2'
id: 'This needs to be a UUIDv4 id - https://www.uuidgenerator.net/version4'
description: 'Short description detailing what this rule is filtering and why.'
references: 'Relevant urls, etc'
author: '@SecurityOnion'
date: 'MM/DD/YY'
event_type: 'process_creation'
filter_type: 'exclude'
filter:
selection_1:
TargetField: 'ParentImage'
Condition: 'is'
Pattern: 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngentask.exe'
@@ -0,0 +1,3 @@
'9EDAA51C-BB12-49D9-8748-2B61371F2E7D':
Date: '10/10/2024'
Notes: 'Example Disabled Filter - Leave this entry here, just copy and paste as needed.'
+25 -1
View File
@@ -1,6 +1,6 @@
elasticfleet:
enabled:
description: You can enable or disable Elastic Fleet.
description: Enables or disables the Elastic Fleet process. This process is critical for managing Elastic Agents.
advanced: True
helpLink: elastic-fleet.html
enable_manager_output:
@@ -9,6 +9,24 @@ elasticfleet:
global: True
forcedType: bool
helpLink: elastic-fleet.html
files:
soc:
elastic-defend-disabled-filters__yaml:
title: Disabled Elastic Defend filters
description: Enter the ID of the filter that should be disabled.
syntax: yaml
file: True
global: True
helpLink: elastic-fleet.html
advanced: True
elastic-defend-custom-filters__yaml:
title: Custom Elastic Defend filters
description: Enter custom filters seperated by ---
syntax: yaml
file: True
global: True
helpLink: elastic-fleet.html
advanced: True
logging:
zeek:
excluded:
@@ -16,6 +34,12 @@ elasticfleet:
forcedType: "[]string"
helpLink: zeek.html
config:
defend_filters:
enable_auto_configuration:
description: Enable auto-configuration and management of the Elastic Defend Exclusion filters.
global: True
helpLink: elastic-fleet.html
advanced: True
server:
custom_fqdn:
description: Custom FQDN for Agents to connect to. One per line.
@@ -0,0 +1,251 @@
from datetime import datetime
import sys
import getopt
from so_elastic_defend_filters_helper import *
import logging
logging.basicConfig(level=logging.INFO, format='%(message)s')
# Define mappings for Target Field, Event Type, Conditions
TARGET_FIELD_MAPPINGS = {
"Image": "process.executable",
"ParentImage": "process.parent.executable",
"CommandLine": "process.command_line",
"ParentCommandLine": "process.parent.command_line",
"DestinationHostname": "destination.domain",
"QueryName": "dns.question.name",
"DestinationIp": "destination.ip",
"TargetObject": "registry.path",
"TargetFilename": "file.path"
}
DATASET_MAPPINGS = {
"process_create": "endpoint.events.process",
"network_connection": "endpoint.events.network",
"file_create": "endpoint.events.file",
"file_delete": "endpoint.events.file",
"registry_event": "endpoint.events.registry",
"dns_query": "endpoint.events.network"
}
CONDITION_MAPPINGS = {
"is": ("included", "match"),
"end with": ("included", "wildcard"),
"begin with": ("included", "wildcard"),
"contains": ("included", "wildcard")
}
# Extract entries for a rule
def extract_entries(data, event_type):
entries = []
filter_data = data.get('filter', {})
for value in filter_data.values():
target_field = TARGET_FIELD_MAPPINGS.get(value.get('TargetField', ''))
condition = value.get('Condition', '')
pattern = value.get('Pattern', '')
if condition not in CONDITION_MAPPINGS:
logging.error(f"Invalid condition: {condition}")
# Modify the pattern based on the condition
pattern = modify_pattern(condition, pattern)
operator, match_type = CONDITION_MAPPINGS[condition]
entries.append({
"field": target_field,
"operator": operator,
"type": match_type,
"value": pattern
})
# Add the event.dataset entry from DATASET_MAPPINGS
dataset_value = DATASET_MAPPINGS.get(event_type, '')
if dataset_value:
entries.append({
"field": "event.dataset",
"operator": "included",
"type": "match",
"value": dataset_value
})
else:
logging.error(f"No dataset mapping found for event_type: {event_type}")
return entries
# Build the JSON
def build_json_entry(entries, guid, event_type, context):
return {
"comments": [],
"entries": entries,
"item_id": guid,
"name": f"SO - {event_type} - {guid}",
"description": f"{context}\n\n <<- Note: This filter is managed by Security Onion. ->>",
"namespace_type": "agnostic",
"tags": ["policy:all"],
"type": "simple",
"os_types": ["windows"],
"entries": entries
}
# Check to see if the rule is disabled
# If it is, make sure it is not active
def disable_check(guid, disabled_rules, username, password):
if guid in disabled_rules:
logging.info(f"Rule {guid} is in the disabled rules list, confirming that is is actually disabled...")
existing_rule = api_request("GET", guid, username, password)
if existing_rule:
if api_request("DELETE", guid, username, password):
logging.info(f"Successfully deleted rule {guid}")
return True, "deleted"
else:
logging.error(f"Error deleting rule {guid}.")
return True, "Error deleting"
return True, "NOP"
return False, None
def modify_pattern(condition, pattern):
"""
Modify the pattern based on the condition.
- 'end with': Add '*' to the beginning of the pattern.
- 'begin with': Add '*' to the end of the pattern.
- 'contains': Add '*' to both the beginning and end of the pattern.
"""
if isinstance(pattern, list):
# Apply modification to each pattern in the list if it's a list of patterns
return [modify_pattern(condition, p) for p in pattern]
if condition == "end with":
return f"*{pattern}"
elif condition == "begin with":
return f"{pattern}*"
elif condition == "contains":
return f"*{pattern}*"
return pattern
def process_rule_update_or_create(guid, json_entry, username, password):
existing_rule = api_request("GET", guid, username, password)
if existing_rule:
existing_rule_data = extract_relevant_fields(existing_rule)
new_rule_data = extract_relevant_fields(json_entry)
if generate_hash(existing_rule_data) != generate_hash(new_rule_data):
logging.info(f"Updating rule {guid}")
json_entry.pop("list_id", None)
api_request("PUT", guid, username, password, json_data=json_entry)
return "updated"
logging.info(f"Rule {guid} is up to date.")
return "no_change"
else:
logging.info(f"Creating new rule {guid}")
json_entry["list_id"] = "endpoint_event_filters"
api_request("POST", guid, username, password, json_data=json_entry)
return "new"
# Main function for processing rules
def process_rules(yaml_files, disabled_rules, username, password):
stats = {"rule_count": 0, "new": 0, "updated": 0, "no_change": 0, "disabled": 0, "deleted": 0}
for data in yaml_files:
logging.info(f"Processing rule: {data.get('id', '')}")
event_type = data.get('event_type', '')
guid = data.get('id', '')
dataset = DATASET_MAPPINGS.get(event_type, '')
context = data.get('description', '')
rule_deleted, state = disable_check(guid, disabled_rules, username, password)
if rule_deleted:
stats["disabled"] += 1
if state == "deleted":
stats["deleted"] += 1
continue
# Extract entries and build JSON
entries = extract_entries(data, event_type)
json_entry = build_json_entry(entries, guid, event_type, context)
# Process rule creation or update
status = process_rule_update_or_create(guid, json_entry, username, password)
stats[status] += 1
stats["rule_count"] += 1
return stats
def parse_args(argv):
try:
opts, args = getopt.getopt(argv, "i:d:c:f:", ["input=", "disabled=", "credentials=", "flags_file="])
except getopt.GetoptError:
print("Usage: python so-elastic-defend-manage-filters.py -c <credentials_file> -d <disabled_file> -i <folder_of_yaml_files> [-f <flags_file>]")
sys.exit(2)
return opts
def load_flags(file_path):
with open(file_path, 'r') as flags_file:
return flags_file.read().splitlines()
def validate_inputs(credentials_file, disabled_file, yaml_directories):
if not credentials_file or not disabled_file or not yaml_directories:
print("Usage: python so-elastic-defend-manage-filters.py -c <credentials_file> -d <disabled_file> -i <folder_of_yaml_files> [-f <flags_file>]")
sys.exit(2)
def main(argv):
credentials_file = ""
disabled_file = ""
yaml_directories = []
opts = parse_args(argv)
for opt, arg in opts:
if opt in ("-c", "--credentials"):
credentials_file = arg
elif opt in ("-d", "--disabled"):
disabled_file = arg
elif opt in ("-i", "--input"):
yaml_directories.append(arg)
elif opt in ("-f", "--flags_file"):
flags = load_flags(arg)
return main(argv + flags)
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
logging.info(f"\n{timestamp}")
validate_inputs(credentials_file, disabled_file, yaml_directories)
credentials = load_credentials(credentials_file)
if not credentials:
raise Exception("Failed to load credentials")
username, password = extract_auth_details(credentials)
if not username or not password:
raise Exception("Invalid credentials format")
custom_rules_input = '/opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw'
custom_rules_output = '/opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters'
prepare_custom_rules(custom_rules_input, custom_rules_output)
disabled_rules = load_disabled(disabled_file)
total_stats = {"rule_count": 0, "new": 0, "updated": 0, "no_change": 0, "disabled": 0, "deleted": 0}
for yaml_dir in yaml_directories:
yaml_files = load_yaml_files(yaml_dir)
stats = process_rules(yaml_files, disabled_rules, username, password)
for key in total_stats:
total_stats[key] += stats[key]
logging.info(f"\nProcessing Summary")
logging.info(f" - Total processed rules: {total_stats['rule_count']}")
logging.info(f" - New rules: {total_stats['new']}")
logging.info(f" - Updated rules: {total_stats['updated']}")
logging.info(f" - Disabled rules: {total_stats['deleted']}")
logging.info(f" - Rules with no changes: {total_stats['no_change']}")
logging.info(f"Rule status Summary")
logging.info(f" - Active rules: {total_stats['rule_count'] - total_stats['disabled']}")
logging.info(f" - Disabled rules: {total_stats['disabled']}")
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
logging.info(f"Execution completed at: {timestamp}")
if __name__ == "__main__":
main(sys.argv[1:])
@@ -102,6 +102,70 @@ elastic_fleet_package_is_installed() {
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET -H 'kbn-xsrf: true' "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.status'
}
elastic_fleet_agent_policy_ids() {
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies" | jq -r .items[].id
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve agent policies."
exit 1
fi
}
elastic_fleet_agent_policy_names() {
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies" | jq -r .items[].name
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve agent policies."
exit 1
fi
}
elastic_fleet_integration_policy_names() {
AGENT_POLICY=$1
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r .item.package_policies[].name
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve integrations for '$AGENT_POLICY'."
exit 1
fi
}
elastic_fleet_integration_policy_package_name() {
AGENT_POLICY=$1
INTEGRATION=$2
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.name'
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve package name for '$INTEGRATION' in '$AGENT_POLICY'."
exit 1
fi
}
elastic_fleet_integration_policy_package_version() {
AGENT_POLICY=$1
INTEGRATION=$2
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.version'
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve package version for '$INTEGRATION' in '$AGENT_POLICY'."
exit 1
fi
}
elastic_fleet_integration_id() {
AGENT_POLICY=$1
INTEGRATION=$2
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .id'
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve integration ID for '$INTEGRATION' in '$AGENT_POLICY'."
exit 1
fi
}
elastic_fleet_integration_policy_dryrun_upgrade() {
INTEGRATION_ID=$1
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -H "Content-Type: application/json" -H 'kbn-xsrf: true' -L -X POST "localhost:5601/api/fleet/package_policies/upgrade/dryrun" -d "{\"packagePolicyIds\":[\"$INTEGRATION_ID\"]}"
if [ $? -ne 0 ]; then
echo "Error: Failed to complete dry run for '$INTEGRATION_ID'."
exit 1
fi
}
elastic_fleet_policy_create() {
NAME=$1
@@ -0,0 +1,62 @@
#!/bin/bash
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
. /usr/sbin/so-elastic-fleet-common
curl_output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/)
if [ $? -ne 0 ]; then
echo "Error: Failed to connect to Kibana."
exit 1
fi
IFS=$'\n'
agent_policies=$(elastic_fleet_agent_policy_ids)
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve agent policies."
exit 1
fi
for AGENT_POLICY in $agent_policies; do
integrations=$(elastic_fleet_integration_policy_names "$AGENT_POLICY")
for INTEGRATION in $integrations; do
if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then
# Get package name so we know what package to look for when checking the current and latest available version
PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION")
# Get currently installed version of package
PACKAGE_VERSION=$(elastic_fleet_integration_policy_package_version "$AGENT_POLICY" "$INTEGRATION")
# Get latest available version of package
AVAILABLE_VERSION=$(elastic_fleet_package_latest_version_check "$PACKAGE_NAME")
# Get integration ID
INTEGRATION_ID=$(elastic_fleet_integration_id "$AGENT_POLICY" "$INTEGRATION")
if [[ "$PACKAGE_VERSION" != "$AVAILABLE_VERSION" ]]; then
# Dry run of the upgrade
echo "Current $PACKAGE_NAME package version ($PACKAGE_VERSION) is not the same as the latest available package ($AVAILABLE_VERSION)..."
echo "Upgrading $INTEGRATION..."
echo "Starting dry run..."
DRYRUN_OUTPUT=$(elastic_fleet_integration_policy_dryrun_upgrade "$INTEGRATION_ID")
DRYRUN_ERRORS=$(echo "$DRYRUN_OUTPUT" | jq .[].hasErrors)
# If no errors with dry run, proceed with actual upgrade
if [[ "$DRYRUN_ERRORS" == "false" ]]; then
echo "No errors detected. Proceeding with upgrade..."
elastic_fleet_integration_policy_upgrade "$INTEGRATION_ID"
if [ $? -ne 0 ]; then
echo "Error: Upgrade failed for integration ID '$INTEGRATION_ID'."
exit 1
fi
else
echo "Errors detected during dry run. Stopping upgrade..."
exit 1
fi
fi
fi
done
done
echo
@@ -0,0 +1,128 @@
import hashlib
import os
import json
import yaml
import requests
from requests.auth import HTTPBasicAuth
import shutil
# Extract 'entries', 'description' and 'os_types' fields
def extract_relevant_fields(filter):
return {
'entries': filter.get('entries', []),
'description': filter.get('description', '')
}
# Sort for consistency, so that a hash can be generated
def sorted_data(value):
if isinstance(value, dict):
# Recursively sort the dictionary by key
return {k: sorted_data(v) for k, v in sorted(value.items())}
elif isinstance(value, list):
# Sort lists; for dictionaries, sort by a specific key
return sorted(value, key=lambda x: tuple(sorted(x.items())) if isinstance(x, dict) else x)
return value
# Generate a hash based on sorted relevant fields
def generate_hash(data):
sorted_data_string = json.dumps(sorted_data(data), sort_keys=True)
return hashlib.sha256(sorted_data_string.encode('utf-8')).hexdigest()
# Load Elasticsearch credentials from the config file
def load_credentials(config_path):
with open(config_path, 'r') as file:
for line in file:
if line.startswith("user"):
credentials = line.split('=', 1)[1].strip().strip('"')
return credentials
return None
# Extract username and password from credentials
def extract_auth_details(credentials):
if ':' in credentials:
return credentials.split(':', 1)
return None, None
# Generalized API request function
def api_request(method, guid, username, password, json_data=None):
headers = {
'kbn-xsrf': 'true',
'Content-Type': 'application/json'
}
auth = HTTPBasicAuth(username, password)
if method == "POST":
url = "http://localhost:5601/api/exception_lists/items?namespace_type=agnostic"
else:
url = f"http://localhost:5601/api/exception_lists/items?item_id={guid}&namespace_type=agnostic"
response = requests.request(method, url, headers=headers, auth=auth, json=json_data)
if response.status_code in [200, 201]:
return response.json() if response.content else True
elif response.status_code == 404 and method == "GET":
return None
else:
print(f"Error with {method} request: {response.status_code} - {response.text}")
return False
# Load YAML data for GUIDs to skip
def load_disabled(disabled_file_path):
if os.path.exists(disabled_file_path):
with open(disabled_file_path, 'r') as file:
return yaml.safe_load(file) or {}
return {}
def load_yaml_files(*dirs):
yaml_files = []
for dir_path in dirs:
if os.path.isdir(dir_path):
# Recurse through the directory and subdirectories
for root, dirs, files in os.walk(dir_path):
for file_name in files:
if file_name.endswith(".yaml"):
full_path = os.path.join(root, file_name)
with open(full_path, 'r') as f:
try:
yaml_content = yaml.safe_load(f)
yaml_files.append(yaml_content)
except yaml.YAMLError as e:
print(f"Error loading {full_path}: {e}")
else:
print(f"Invalid directory: {dir_path}")
return yaml_files
def prepare_custom_rules(input_file, output_dir):
# Clear the output directory first
if os.path.exists(output_dir):
shutil.rmtree(output_dir)
os.makedirs(output_dir, exist_ok=True)
try:
# Load the YAML file
with open(input_file, 'r') as f:
docs = yaml.safe_load_all(f)
for doc in docs:
if 'id' not in doc:
print(f"Skipping rule, no 'id' found: {doc}")
continue
if doc.get('title') in ["Template 1", "Template 2"]:
print(f"Skipping template rule with title: {doc['title']}")
continue
# Create a filename using the 'id' field
file_name = os.path.join(output_dir, f"{doc['id']}.yaml")
# Write the individual YAML file
with open(file_name, 'w') as output_file:
yaml.dump(doc, output_file, default_flow_style=False)
print(f"Created file: {file_name}")
except yaml.YAMLError as e:
print(f"Error parsing YAML: {e}")
except Exception as e:
print(f"Error processing file: {e}")
@@ -13,6 +13,9 @@
LOG="/opt/so/log/elasticfleet/so-elastic-agent-gen-installers.log"
# get the variables needed such as ELASTIC_AGENT_TARBALL_VERSION
get_elastic_agent_vars
# Check to see if we are already running
NUM_RUNNING=$(pgrep -cf "/bin/bash /sbin/so-elastic-agent-gen-installers")
[ "$NUM_RUNNING" -gt 1 ] && echo "$(date) - $NUM_RUNNING gen installers script processes running...exiting." >>$LOG && exit 0
@@ -36,6 +39,7 @@ printf "\n### Creating a temp directory at /nsm/elastic-agent-workspace\n"
rm -rf /nsm/elastic-agent-workspace
mkdir -p /nsm/elastic-agent-workspace
printf "\n### Extracting outer tarball and then each individual tarball/zip\n"
tar -xf /nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz -C /nsm/elastic-agent-workspace/
unzip -q /nsm/elastic-agent-workspace/elastic-agent-*.zip -d /nsm/elastic-agent-workspace/
@@ -72,5 +76,12 @@ do
printf "\n### $GOOS/$GOARCH Installer Generated...\n"
done
printf "\n\n### Generating MSI...\n"
cp /opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/so-elastic-agent_windows_amd64 /opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/so-elastic-agent_windows_amd64.exe
docker run \
--mount type=bind,source=/opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/,target=/output/ -w /output \
{{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-agent-builder:{{ GLOBALS.so_version }} wixl -o so-elastic-agent_windows_amd64_msi --arch x64 /workspace/so-elastic-agent.wxs
printf "\n### MSI Generated...\n"
printf "\n### Cleaning up temp files in /nsm/elastic-agent-workspace\n"
rm -rf /nsm/elastic-agent-workspace
@@ -5,6 +5,7 @@
# this file except in compliance with the Elastic License 2.0.
. /usr/sbin/so-common
{%- import_yaml 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS %}
# Only run on Managers
if ! is_manager_node; then
@@ -27,14 +28,14 @@ OUTDATED_LIST=$(jq -r '.items | map(.id) | (tojson)' <<< "$RAW_JSON")
if [ "$OUTDATED_LIST" != '[]' ]; then
AGENTNUMBERS=$(jq -r '.total' <<< "$RAW_JSON")
printf "Initiating upgrades for $AGENTNUMBERS Agents to Elastic $ELASTIC_AGENT_TARBALL_VERSION...\n\n"
printf "Initiating upgrades for $AGENTNUMBERS Agents to Elastic {{ELASTICSEARCHDEFAULTS.elasticsearch.version}}...\n\n"
# Generate updated JSON payload
JSON_STRING=$(jq -n --arg ELASTICVERSION $ELASTIC_AGENT_TARBALL_VERSION --arg UPDATELIST $OUTDATED_LIST '{"version": $ELASTICVERSION,"agents": $UPDATELIST }')
JSON_STRING=$(jq -n --arg ELASTICVERSION {{ELASTICSEARCHDEFAULTS.elasticsearch.version}} --arg UPDATELIST $OUTDATED_LIST '{"version": $ELASTICVERSION,"agents": $UPDATELIST }')
# Update Node Agents
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "http://localhost:5601/api/fleet/agents/bulk_upgrade" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
else
printf "No Agents need updates... Exiting\n\n"
exit 0
fi
fi
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -6,10 +6,11 @@
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% import_yaml 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS %}
so-elasticsearch_image:
docker_image.present:
- name: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ GLOBALS.so_version }}
- name: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ ELASTICSEARCHDEFAULTS.elasticsearch.version }}
{% else %}
+2 -2
View File
@@ -19,7 +19,7 @@ include:
so-elasticsearch:
docker_container.running:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ GLOBALS.so_version }}
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ ELASTICSEARCHMERGED.version }}
- hostname: elasticsearch
- name: so-elasticsearch
- user: elasticsearch
@@ -38,7 +38,7 @@ so-elasticsearch:
{% endfor %}
{% endif %}
- environment:
{% if ELASTICSEARCH_SEED_HOSTS | length == 1 or GLOBALS.role == 'so-heavynode' %}
{% if (GLOBALS.role in GLOBALS.manager_roles and ELASTICSEARCH_SEED_HOSTS | length == 1) or GLOBALS.role == 'so-heavynode' %}
- discovery.type=single-node
{% endif %}
- ES_JAVA_OPTS=-Xms{{ GLOBALS.elasticsearch.es_heap }} -Xmx{{ GLOBALS.elasticsearch.es_heap }} -Des.transport.cname_in_publish_address=true -Dlog4j2.formatMsgNoLookups=true
@@ -10,13 +10,13 @@
{ "split": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "separator": "\\.", "target_field": "module_temp" } },
{ "set": { "if": "ctx.module_temp != null", "override": true, "field": "event.module", "value": "{{module_temp.0}}" } },
{ "gsub": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "pattern": "^[^.]*.", "replacement": "", "target_field": "dataset_tag_temp" } },
{ "append": { "if": "ctx.dataset_tag_temp != null", "field": "tags", "value": "{{dataset_tag_temp}}" } },
{ "append": { "if": "ctx.dataset_tag_temp != null", "field": "tags", "value": "{{dataset_tag_temp}}", "allow_duplicates": false } },
{ "set": { "if": "ctx.network?.direction == 'egress'", "override": true, "field": "network.initiated", "value": "true" } },
{ "set": { "if": "ctx.network?.direction == 'ingress'", "override": true, "field": "network.initiated", "value": "false" } },
{ "set": { "if": "ctx.network?.type == 'ipv4'", "override": true, "field": "destination.ipv6", "value": "false" } },
{ "set": { "if": "ctx.network?.type == 'ipv6'", "override": true, "field": "destination.ipv6", "value": "true" } },
{ "set": { "if": "ctx.tags.0 == 'import'", "override": true, "field": "data_stream.dataset", "value": "import" } },
{ "set": { "if": "ctx.tags.0 == 'import'", "override": true, "field": "data_stream.namespace", "value": "so" } },
{ "set": { "if": "ctx.tags != null && ctx.tags.contains('import')", "override": true, "field": "data_stream.dataset", "value": "import" } },
{ "set": { "if": "ctx.tags != null && ctx.tags.contains('import')", "override": true, "field": "data_stream.namespace", "value": "so" } },
{ "date": { "if": "ctx.event?.module == 'system'", "field": "event.created", "target_field": "@timestamp","ignore_failure": true, "formats": ["yyyy-MM-dd'T'HH:mm:ss.SSSX","yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"] } },
{ "community_id":{ "if": "ctx.event?.dataset == 'endpoint.events.network'", "ignore_failure":true } },
{ "set": { "if": "ctx.event?.module == 'fim'", "override": true, "field": "event.module", "value": "file_integrity" } },
+9
View File
@@ -0,0 +1,9 @@
{
"description" : "hydra",
"processors" : [
{"set":{"field":"audience","value":"access","override":false,"ignore_failure":true}},
{"set":{"field":"event.dataset","ignore_empty_value":true,"ignore_failure":true,"value":"hydra.{{{audience}}}","media_type":"text/plain"}},
{"set":{"field":"event.action","ignore_failure":true,"copy_from":"msg" }},
{ "pipeline": { "name": "common" } }
]
}
@@ -1,5 +1,5 @@
{
"description": "Pipeline for pfSense",
"description": "Pipeline for PFsense",
"processors": [
{
"set": {
@@ -1,9 +1,14 @@
{
"description": "Pipeline for parsing pfSense Suricata logs.",
"processors": [
{ "set": {
"field": "event.module",
"value": "suricata"
}
},
{
"pipeline": {
"name": "suricata.common"
"name": "suricata.common_pfsense"
}
}
],
@@ -0,0 +1,414 @@
{
"description": "Pipeline for PFsense",
"processors": [
{
"set": {
"field": "ecs.version",
"value": "8.11.0"
}
},
{
"set": {
"field": "observer.vendor",
"value": "netgate"
}
},
{
"set": {
"field": "observer.type",
"value": "firewall"
}
},
{
"rename": {
"field": "message",
"target_field": "event.original",
"ignore_missing": true,
"if": "ctx.event?.original == null"
}
},
{
"set": {
"field": "event.kind",
"value": "event"
}
},
{
"set": {
"field": "event.timezone",
"value": "{{_tmp.tz_offset}}",
"if": "ctx._tmp?.tz_offset != null && ctx._tmp?.tz_offset != 'local'"
}
},
{
"grok": {
"description": "Parse syslog header",
"field": "event.original",
"patterns": [
"^(%{ECS_SYSLOG_PRI})?%{TIMESTAMP} %{GREEDYDATA:message}"
],
"pattern_definitions": {
"ECS_SYSLOG_PRI": "<%{NONNEGINT:log.syslog.priority:long}>(\\d )?",
"TIMESTAMP": "(?:%{BSD_TIMESTAMP_FORMAT}|%{SYSLOG_TIMESTAMP_FORMAT})",
"BSD_TIMESTAMP_FORMAT": "%{SYSLOGTIMESTAMP:_tmp.timestamp}(%{SPACE}%{BSD_PROCNAME}|%{SPACE}%{OBSERVER}%{SPACE}%{BSD_PROCNAME})(\\[%{POSINT:process.pid:long}\\])?:",
"BSD_PROCNAME": "(?:\\b%{NAME:process.name}|\\(%{NAME:process.name}\\))",
"NAME": "[[[:alnum:]]_-]+",
"SYSLOG_TIMESTAMP_FORMAT": "%{TIMESTAMP_ISO8601:_tmp.timestamp8601}%{SPACE}%{OBSERVER}%{SPACE}%{PROCESS}%{SPACE}(%{POSINT:process.pid:long}|-) - (-|%{META})",
"TIMESTAMP_ISO8601": "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE:event.timezone}?",
"OBSERVER": "(?:%{IP:observer.ip}|%{HOSTNAME:observer.name})",
"UNIXPATH": "(/([\\w_%!$@:.,+~-]+|\\\\.)*)*",
"PROCESS": "(\\(%{DATA:process.name}\\)|(?:%{UNIXPATH})%{BASEPATH:process.name})",
"BASEPATH": "[[[:alnum:]]_%!$@:.,+~-]+",
"META": "\\[[^\\]]*\\]"
}
}
},
{
"date": {
"if": "ctx._tmp.timestamp8601 != null",
"field": "_tmp.timestamp8601",
"target_field": "@timestamp",
"formats": [
"ISO8601"
]
}
},
{
"date": {
"if": "ctx.event?.timezone != null && ctx._tmp?.timestamp != null",
"field": "_tmp.timestamp",
"target_field": "@timestamp",
"formats": [
"MMM d HH:mm:ss",
"MMM d HH:mm:ss",
"MMM dd HH:mm:ss"
],
"timezone": "{{ event.timezone }}"
}
},
{
"grok": {
"description": "Set Event Provider",
"field": "process.name",
"patterns": [
"^%{HYPHENATED_WORDS:event.provider}"
],
"pattern_definitions": {
"HYPHENATED_WORDS": "\\b[A-Za-z0-9_]+(-[A-Za-z_]+)*\\b"
}
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-firewall",
"if": "ctx.event.provider == 'filterlog'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-openvpn",
"if": "ctx.event.provider == 'openvpn'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-ipsec",
"if": "ctx.event.provider == 'charon'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-dhcp",
"if": "[\"dhcpd\", \"dhclient\", \"dhcp6c\"].contains(ctx.event.provider)"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-unbound",
"if": "ctx.event.provider == 'unbound'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-haproxy",
"if": "ctx.event.provider == 'haproxy'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-php-fpm",
"if": "ctx.event.provider == 'php-fpm'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-squid",
"if": "ctx.event.provider == 'squid'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-suricata",
"if": "ctx.event.provider == 'suricata'"
}
},
{
"drop": {
"if": "![\"filterlog\", \"openvpn\", \"charon\", \"dhcpd\", \"dhclient\", \"dhcp6c\", \"unbound\", \"haproxy\", \"php-fpm\", \"squid\", \"suricata\"].contains(ctx.event?.provider)"
}
},
{
"append": {
"field": "event.category",
"value": "network",
"if": "ctx.network != null"
}
},
{
"convert": {
"field": "source.address",
"target_field": "source.ip",
"type": "ip",
"ignore_failure": true,
"ignore_missing": true
}
},
{
"convert": {
"field": "destination.address",
"target_field": "destination.ip",
"type": "ip",
"ignore_failure": true,
"ignore_missing": true
}
},
{
"set": {
"field": "network.type",
"value": "ipv6",
"if": "ctx.source?.ip != null && ctx.source.ip.contains(\":\")"
}
},
{
"set": {
"field": "network.type",
"value": "ipv4",
"if": "ctx.source?.ip != null && ctx.source.ip.contains(\".\")"
}
},
{
"geoip": {
"field": "source.ip",
"target_field": "source.geo",
"ignore_missing": true
}
},
{
"geoip": {
"field": "destination.ip",
"target_field": "destination.geo",
"ignore_missing": true
}
},
{
"geoip": {
"ignore_missing": true,
"database_file": "GeoLite2-ASN.mmdb",
"field": "source.ip",
"target_field": "source.as",
"properties": [
"asn",
"organization_name"
]
}
},
{
"geoip": {
"database_file": "GeoLite2-ASN.mmdb",
"field": "destination.ip",
"target_field": "destination.as",
"properties": [
"asn",
"organization_name"
],
"ignore_missing": true
}
},
{
"rename": {
"field": "source.as.asn",
"target_field": "source.as.number",
"ignore_missing": true
}
},
{
"rename": {
"field": "source.as.organization_name",
"target_field": "source.as.organization.name",
"ignore_missing": true
}
},
{
"rename": {
"field": "destination.as.asn",
"target_field": "destination.as.number",
"ignore_missing": true
}
},
{
"rename": {
"field": "destination.as.organization_name",
"target_field": "destination.as.organization.name",
"ignore_missing": true
}
},
{
"community_id": {
"target_field": "network.community_id",
"ignore_failure": true
}
},
{
"grok": {
"field": "observer.ingress.interface.name",
"patterns": [
"%{DATA}.%{NONNEGINT:observer.ingress.vlan.id}"
],
"ignore_missing": true,
"ignore_failure": true
}
},
{
"set": {
"field": "network.vlan.id",
"copy_from": "observer.ingress.vlan.id",
"ignore_empty_value": true
}
},
{
"append": {
"field": "related.ip",
"value": "{{destination.ip}}",
"allow_duplicates": false,
"if": "ctx.destination?.ip != null"
}
},
{
"append": {
"field": "related.ip",
"value": "{{source.ip}}",
"allow_duplicates": false,
"if": "ctx.source?.ip != null"
}
},
{
"append": {
"field": "related.ip",
"value": "{{source.nat.ip}}",
"allow_duplicates": false,
"if": "ctx.source?.nat?.ip != null"
}
},
{
"append": {
"field": "related.hosts",
"value": "{{destination.domain}}",
"if": "ctx.destination?.domain != null"
}
},
{
"append": {
"field": "related.user",
"value": "{{user.name}}",
"if": "ctx.user?.name != null"
}
},
{
"set": {
"field": "network.direction",
"value": "{{network.direction}}bound",
"if": "ctx.network?.direction != null && ctx.network?.direction =~ /^(in|out)$/"
}
},
{
"remove": {
"field": [
"_tmp"
],
"ignore_failure": true
}
},
{
"script": {
"lang": "painless",
"description": "This script processor iterates over the whole document to remove fields with null values.",
"source": "void handleMap(Map map) {\n for (def x : map.values()) {\n if (x instanceof Map) {\n handleMap(x);\n } else if (x instanceof List) {\n handleList(x);\n }\n }\n map.values().removeIf(v -> v == null || (v instanceof String && v == \"-\"));\n}\nvoid handleList(List list) {\n for (def x : list) {\n if (x instanceof Map) {\n handleMap(x);\n } else if (x instanceof List) {\n handleList(x);\n }\n }\n}\nhandleMap(ctx);\n"
}
},
{
"remove": {
"field": "event.original",
"if": "ctx.tags == null || !(ctx.tags.contains('preserve_original_event'))",
"ignore_failure": true,
"ignore_missing": true
}
},
{
"pipeline": {
"name": "global@custom",
"ignore_missing_pipeline": true,
"description": "[Fleet] Global pipeline for all data streams"
}
},
{
"pipeline": {
"name": "logs@custom",
"ignore_missing_pipeline": true,
"description": "[Fleet] Pipeline for all data streams of type `logs`"
}
},
{
"pipeline": {
"name": "logs-pfsense.integration@custom",
"ignore_missing_pipeline": true,
"description": "[Fleet] Pipeline for all data streams of type `logs` defined by the `pfsense` integration"
}
},
{
"pipeline": {
"name": "logs-pfsense.log@custom",
"ignore_missing_pipeline": true,
"description": "[Fleet] Pipeline for the `pfsense.log` dataset"
}
}
],
"on_failure": [
{
"remove": {
"field": [
"_tmp"
],
"ignore_failure": true
}
},
{
"set": {
"field": "event.kind",
"value": "pipeline_error"
}
},
{
"append": {
"field": "error.message",
"value": "{{{ _ingest.on_failure_message }}}"
}
}
],
"_meta": {
"managed_by": "fleet",
"managed": true,
"package": {
"name": "pfsense"
}
}
}
@@ -1,7 +1,7 @@
{
"description" : "suricata.alert",
"processors" : [
{ "set": { "field": "_index", "value": "logs-suricata.alerts-so" } },
{ "set": { "if": "ctx.event?.imported != true", "field": "_index", "value": "logs-suricata.alerts-so" } },
{ "set": { "field": "tags","value": "alert" }},
{ "rename":{ "field": "message2.alert", "target_field": "rule", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature", "target_field": "rule.name", "ignore_failure": true } },
@@ -0,0 +1,16 @@
{
"description" : "suricata.alert",
"processors" : [
{ "set": { "field": "data_stream.dataset", "value": "suricata" } },
{ "set": { "field": "data_stream.namespace", "value": "so" } },
{ "set": { "field": "_index", "value": "logs-suricata.alerts-so" } },
{ "set": { "field": "tags","value": "alert" }},
{ "rename":{ "field": "message2.alert", "target_field": "rule", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature", "target_field": "rule.name", "ignore_failure": true } },
{ "rename":{ "field": "rule.ref", "target_field": "rule.version", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature_id", "target_field": "rule.uuid", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature_id", "target_field": "rule.signature", "ignore_failure": true } },
{ "rename":{ "field": "message2.payload_printable", "target_field": "network.data.decoded", "ignore_failure": true } },
{ "pipeline": { "name": "common.nids" } }
]
}
@@ -0,0 +1,23 @@
{
"description" : "suricata.common",
"processors" : [
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.pkt_src", "target_field": "network.packet_source","ignore_failure": true } },
{ "rename": { "field": "message2.proto", "target_field": "network.transport", "ignore_failure": true } },
{ "rename": { "field": "message2.in_iface", "target_field": "observer.ingress.interface.name", "ignore_failure": true } },
{ "rename": { "field": "message2.flow_id", "target_field": "log.id.uid", "ignore_failure": true } },
{ "rename": { "field": "message2.src_ip", "target_field": "source.ip", "ignore_failure": true } },
{ "rename": { "field": "message2.src_port", "target_field": "source.port", "ignore_failure": true } },
{ "rename": { "field": "message2.dest_ip", "target_field": "destination.ip", "ignore_failure": true } },
{ "rename": { "field": "message2.dest_port", "target_field": "destination.port", "ignore_failure": true } },
{ "rename": { "field": "message2.vlan", "target_field": "network.vlan.id", "ignore_failure": true } },
{ "rename": { "field": "message2.community_id", "target_field": "network.community_id", "ignore_missing": true } },
{ "rename": { "field": "message2.xff", "target_field": "xff.ip", "ignore_missing": true } },
{ "set": { "field": "event.dataset", "value": "{{ message2.event_type }}" } },
{ "set": { "field": "observer.name", "value": "{{agent.name}}" } },
{ "set": { "field": "event.ingested", "value": "{{@timestamp}}" } },
{ "date": { "field": "message2.timestamp", "target_field": "@timestamp", "formats": ["ISO8601", "UNIX"], "timezone": "UTC", "ignore_failure": true } },
{ "remove":{ "field": "agent", "ignore_failure": true } },
{ "pipeline": { "if": "ctx?.event?.dataset != null", "name": "suricata.{{event.dataset}}_pfsense" } }
]
}
@@ -18,6 +18,7 @@
{ "set": { "if": "ctx.destination?.ip != null", "field": "server.ip", "value": "{{destination.ip}}" } },
{ "set": { "if": "ctx.destination?.port != null", "field": "server.port", "value": "{{destination.port}}" } },
{ "set": { "field": "observer.name", "value": "{{agent.name}}" } },
{ "append": { "if": "ctx.network?.protocol != null && ctx.network?.protocol.contains(\"openvpn\")","field": "tags","value": ["{{network.protocol}}"],"allow_duplicates": false,"ignore_failure": true}},
{ "date": { "field": "message2.ts", "target_field": "@timestamp", "formats": ["ISO8601", "UNIX"], "ignore_failure": true } },
{ "remove": { "field": ["agent"], "ignore_failure": true } },
{ "pipeline": { "name": "common" } }
@@ -38,6 +38,8 @@
{ "set": { "if": "ctx.connection?.state == 'SH'", "field": "connection.state_description", "value": "Originator sent a SYN followed by a FIN, we never saw a SYN ACK from the responder (hence the connection was 'half' open)" } },
{ "set": { "if": "ctx.connection?.state == 'SHR'", "field": "connection.state_description", "value": "Responder sent a SYN ACK followed by a FIN, we never saw a SYN from the originator" } },
{ "set": { "if": "ctx.connection?.state == 'OTH'", "field": "connection.state_description", "value": "No SYN seen, just midstream traffic (a 'partial connection' that was not later closed)" } },
{ "set": { "if": "ctx.network?.protocol != null && ctx.network?.protocol.contains(\"ipsec\")", "field": "network.protocol", "value": "ipsec"}},
{ "set": { "if": "ctx.network?.protocol != null && ctx.network?.protocol.contains(\"openvpn\")", "field": "network.protocol", "value": "openvpn"}},
{ "pipeline": { "name": "zeek.common" } }
]
}
@@ -0,0 +1,37 @@
{
"description" : "zeek.http2",
"processors" : [
{ "set": { "field": "event.dataset", "value": "http2" } },
{ "set": { "field": "network.transport", "value": "tcp" } },
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.trans_depth", "target_field": "http.trans_depth", "ignore_missing": true } },
{ "rename": { "field": "message2.method", "target_field": "http.method", "ignore_missing": true } },
{ "rename": { "field": "message2.host", "target_field": "http.virtual_host", "ignore_missing": true } },
{ "rename": { "field": "message2.uri", "target_field": "http.uri", "ignore_missing": true } },
{ "rename": { "field": "message2.referrer", "target_field": "http.referrer", "ignore_missing": true } },
{ "rename": { "field": "message2.version", "target_field": "http.version", "ignore_missing": true } },
{ "rename": { "field": "message2.user_agent", "target_field": "http.useragent", "ignore_missing": true } },
{ "rename": { "field": "message2.request_body_len", "target_field": "http.request.body.length", "ignore_missing": true } },
{ "rename": { "field": "message2.response_body_len", "target_field": "http.response.body.length", "ignore_missing": true } },
{ "rename": { "field": "message2.status_code", "target_field": "http.status_code", "ignore_missing": true } },
{ "rename": { "field": "message2.status_msg", "target_field": "http.status_message", "ignore_missing": true } },
{ "rename": { "field": "message2.info_code", "target_field": "http.info_code", "ignore_missing": true } },
{ "rename": { "field": "message2.info_msg", "target_field": "http.info_message", "ignore_missing": true } },
{ "rename": { "field": "message2.username", "target_field": "http.user", "ignore_missing": true } },
{ "rename": { "field": "message2.password", "target_field": "http.password", "ignore_missing": true } },
{ "rename": { "field": "message2.proxied", "target_field": "http.proxied", "ignore_missing": true } },
{ "rename": { "field": "message2.orig_fuids", "target_field": "log.id.orig_fuids", "ignore_missing": true } },
{ "rename": { "field": "message2.orig_filenames", "target_field": "file.orig_filenames", "ignore_missing": true } },
{ "rename": { "field": "message2.orig_mime_types", "target_field": "file.orig_mime_types", "ignore_missing": true } },
{ "rename": { "field": "message2.resp_fuids", "target_field": "log.id.resp_fuids", "ignore_missing": true } },
{ "rename": { "field": "message2.resp_filenames", "target_field": "file.resp_filenames", "ignore_missing": true } },
{ "rename": { "field": "message2.resp_mime_types", "target_field": "file.resp_mime_types", "ignore_missing": true } },
{ "rename": { "field": "message2.stream_id", "target_field": "http2.stream_id", "ignore_missing": true } },
{ "remove": { "field": "message2.tags", "ignore_failure": true } },
{ "remove": { "field": ["host"], "ignore_failure": true } },
{ "script": { "lang": "painless", "source": "ctx.uri_length = ctx.uri.length()", "ignore_failure": true } },
{ "script": { "lang": "painless", "source": "ctx.useragent_length = ctx.useragent.length()", "ignore_failure": true } },
{ "script": { "lang": "painless", "source": "ctx.virtual_host_length = ctx.virtual_host.length()", "ignore_failure": true } },
{ "pipeline": { "name": "zeek.common" } }
]
}
@@ -0,0 +1,38 @@
{
"description": "zeek.ipsec",
"processors": [
{"set": { "field": "event.dataset","value": "ipsec"}},
{"json": { "field": "message","target_field": "message2","ignore_failure": true}},
{"rename": {"field": "message2.initiator_spi","target_field": "ipsec.initiator_spi","ignore_missing": true}},
{"rename": {"field": "message2.responder_spi","target_field": "ipsec.responder_spi","ignore_missing": true}},
{"rename": {"field": "message2.maj_ver","target_field": "ipsec.maj_version","ignore_missing": true}},
{"rename": {"field": "message2.min_ver","target_field": "ipsec.min_version","ignore_missing": true}},
{"set": {"ignore_failure": true,"field": "ipsec.version","value": "{{ipsec.maj_version}}.{{ipsec.min_version}}"}},
{"rename": {"field": "message2.exchange_type","target_field": "ipsec.exchange_type","ignore_missing": true}},
{"rename": {"field": "message2.flag_e","target_field": "ipsec.flag_e","ignore_missing": true}},
{"rename": {"field": "message2.flag_c","target_field": "ipsec.flag_c","ignore_missing": true}},
{"rename": {"field": "message2.flag_a","target_field": "ipsec.flag_a","ignore_missing": true}},
{"rename": {"field": "message2.flag_i","target_field": "ipsec.flag_i","ignore_missing": true}},
{"rename": {"field": "message2.flag_v","target_field": "ipsec.flag_v","ignore_missing": true}},
{"rename": {"field": "message2.flag_r","target_field": "ipsec.flag_r","ignore_missing": true}},
{"rename": {"field": "message2.message_id","target_field": "ipsec.message_id","ignore_missing": true}},
{"rename": {"field": "message2.vendor_ids","target_field": "ipsec.vendor_ids","ignore_missing": true}},
{"rename": {"field": "message2.notify_messages","target_field": "ipsec.notify_messages","ignore_missing": true}},
{"rename": {"field": "message2.transforms","target_field": "ipsec.transforms","ignore_missing": true}},
{"rename": {"field": "message2.ke_dh_groups","target_field": "ipsec.ke_dh_groups","ignore_missing": true}},
{"rename": {"field": "message2.proposals","target_field": "ipsec.proposals","ignore_missing": true}},
{"rename": {"field": "message2.certificates","target_field": "ipsec.certificates","ignore_missing": true}},
{"rename": {"field": "message2.transform_attributes","target_field": "ipsec.transform_attributes","ignore_missing": true}},
{"rename": {"field": "message2.length","target_field": "ipsec.length","ignore_missing": true}},
{"rename": {"field": "message2.hash","target_field": "ipsec.hash","ignore_missing": true}},
{"rename": {"field": "message2.doi","target_field": "ipsec.doi","ignore_missing": true}},
{"rename": {"field": "message2.situation","target_field": "ipsec.situation","ignore_missing": true}},
{"script": {
"lang": "painless",
"description": "Remove ipsec fields with empty arrays",
"source": "if (ctx.containsKey('ipsec') && ctx.ipsec instanceof Map) {\n for (String field : ['certificates', 'ke_dh_groups', 'notify_messages', 'proposals', 'transforms', 'transform_attributes', 'vendor_ids']) {\n if (ctx.ipsec[field] instanceof List && ctx.ipsec[field].isEmpty()) {\n ctx.ipsec.remove(field);\n }\n }\n }",
"ignore_failure": true
}},
{"pipeline": {"name": "zeek.common"}}
]
}
+25
View File
@@ -0,0 +1,25 @@
{
"description": "zeek.ldap",
"processors": [
{"set": {"field": "event.dataset", "value": "ldap"}},
{"json": {"field": "message", "target_field": "message2", "ignore_failure": true}},
{"rename": {"field": "message2.message_id", "target_field": "ldap.message_id", "ignore_missing": true}},
{"rename": {"field": "message2.opcode", "target_field": "ldap.opcode", "ignore_missing": true}},
{"rename": {"field": "message2.result", "target_field": "ldap.result", "ignore_missing": true}},
{"rename": {"field": "message2.diagnostic_message", "target_field": "ldap.diagnostic_message", "ignore_missing": true}},
{"rename": {"field": "message2.version", "target_field": "ldap.version", "ignore_missing": true}},
{"rename": {"field": "message2.object", "target_field": "ldap.object", "ignore_missing": true}},
{"rename": {"field": "message2.argument", "target_field": "ldap.argument", "ignore_missing": true}},
{"rename": {"field": "message2.scope", "target_field": "ldap_search.scope", "ignore_missing":true}},
{"rename": {"field": "message2.deref_aliases", "target_field": "ldap_search.deref_aliases", "ignore_missing":true}},
{"rename": {"field": "message2.base_object", "target_field": "ldap.object", "ignore_missing":true}},
{"rename": {"field": "message2.result_count", "target_field": "ldap_search.result_count", "ignore_missing":true}},
{"rename": {"field": "message2.filter", "target_field": "ldap_search.filter", "ignore_missing":true}},
{"rename": {"field": "message2.attributes", "target_field": "ldap_search.attributes", "ignore_missing":true}},
{"script": {"source": "if (ctx.containsKey('ldap') && ctx.ldap.containsKey('diagnostic_message') && ctx.ldap.diagnostic_message != null) {\n String message = ctx.ldap.diagnostic_message;\n\n // get user and property from SASL success\n if (message.toLowerCase().contains(\"sasl(0): successful result\")) {\n Pattern pattern = /user:\\s*([^ ]+)\\s*property:\\s*([^ ]+)/i;\n Matcher matcher = pattern.matcher(message);\n if (matcher.find()) {\n ctx.ldap.user_email = matcher.group(1); // Extract user email\n ctx.ldap.property = matcher.group(2); // Extract property\n }\n }\n if (message.toLowerCase().contains(\"ldaperr:\")) {\n Pattern pattern = /comment:\\s*([^,]+)/i;\n Matcher matcher = pattern.matcher(message);\n\n if (matcher.find()) {\n ctx.ldap.comment = matcher.group(1);\n }\n }\n }","ignore_failure": true}},
{"script": {"source": "if (ctx.containsKey('ldap') && ctx.ldap.containsKey('object') && ctx.ldap.object != null) {\n String message = ctx.ldap.object;\n\n // parse common name from ldap object\n if (message.toLowerCase().contains(\"cn=\")) {\n Pattern pattern = /cn=([^,]+)/i;\n Matcher matcher = pattern.matcher(message);\n if (matcher.find()) {\n ctx.ldap.common_name = matcher.group(1); // Extract CN\n }\n }\n // build domain from ldap object\n if (message.toLowerCase().contains(\"dc=\")) {\n Pattern dcPattern = /dc=([^,]+)/i;\n Matcher dcMatcher = dcPattern.matcher(message);\n\n StringBuilder domainBuilder = new StringBuilder();\n while (dcMatcher.find()) {\n if (domainBuilder.length() > 0 ){\n domainBuilder.append(\".\");\n }\n domainBuilder.append(dcMatcher.group(1));\n }\n if (domainBuilder.length() > 0) {\n ctx.ldap.domain = domainBuilder.toString();\n }\n }\n // create list of any organizational units from ldap object\n if (message.toLowerCase().contains(\"ou=\")) {\n Pattern ouPattern = /ou=([^,]+)/i;\n Matcher ouMatcher = ouPattern.matcher(message);\n ctx.ldap.organizational_unit = [];\n\n while (ouMatcher.find()) {\n ctx.ldap.organizational_unit.add(ouMatcher.group(1));\n }\n if(ctx.ldap.organizational_unit.isEmpty()) {\n ctx.remove(\"ldap.organizational_unit\");\n }\n }\n}\n","ignore_failure": true}},
{"remove": {"field": "message2.tags","ignore_failure": true}},
{"remove": {"field": ["host"],"ignore_failure": true}},
{"pipeline": {"name": "zeek.common"}}
]
}
@@ -0,0 +1,9 @@
{
"description":"zeek.ldap_search",
"processors":[
{"pipeline": {"name": "zeek.ldap", "ignore_missing_pipeline":true,"ignore_failure":true}},
{"set": {"field": "event.dataset", "value":"ldap_search"}},
{"remove": {"field": "tags", "ignore_missing":true}},
{"pipeline": {"name": "zeek.common"}}
]
}
+18
View File
@@ -0,0 +1,18 @@
{
"description" : "zeek.quic",
"processors" : [
{ "set": { "field": "event.dataset", "value": "quic" } },
{ "set": { "field": "network.transport", "value": "udp" } },
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.version", "target_field": "quic.version", "ignore_missing": true } },
{ "rename": { "field": "message2.client_initial_dcid", "target_field": "quic.client_initial_dcid", "ignore_missing": true } },
{ "rename": { "field": "message2.client_scid", "target_field": "quic.client_scid", "ignore_missing": true } },
{ "rename": { "field": "message2.server_scid", "target_field": "quic.server_scid", "ignore_missing": true } },
{ "rename": { "field": "message2.server_name", "target_field": "quic.server_name", "ignore_missing": true } },
{ "rename": { "field": "message2.client_protocol", "target_field": "quic.client_protocol", "ignore_missing": true } },
{ "rename": { "field": "message2.history", "target_field": "quic.history", "ignore_missing": true } },
{ "remove": { "field": "message2.tags", "ignore_failure": true } },
{ "remove": { "field": ["host"], "ignore_failure": true } },
{ "pipeline": { "name": "zeek.common" } }
]
}
@@ -11,7 +11,7 @@
{ "dot_expander": { "field": "version.minor2", "path": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.version.minor2", "target_field": "software.version.minor2", "ignore_missing": true } },
{ "dot_expander": { "field": "version.minor3", "path": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.version.minor3", "target_field": "version.minor3", "ignore_missing": true } },
{ "rename": { "field": "message2.version.minor3", "target_field": "software.version.minor3", "ignore_missing": true } },
{ "dot_expander": { "field": "version.addl", "path": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.version.addl", "target_field": "software.version.additional_info", "ignore_missing": true } },
{ "rename": { "field": "message2.host", "target_field": "source.ip", "ignore_missing": true } },
+17 -1
View File
@@ -1,7 +1,13 @@
elasticsearch:
enabled:
description: You can enable or disable Elasticsearch.
description: Enables or disables the Elasticsearch process. This process provides the log event storage system. WARNING - Disabling this process is unsupported.
advanced: True
helpLink: elasticsearch.html
version:
description: "This specifies the version of the following containers: so-elastic-fleet-package-registry, so-elastic-agent, so-elastic-fleet, so-kibana, so-logstash and so-elasticsearch. Modifying this value in the Elasticsearch defaults.yaml will result in catastrophic grid failure."
readonly: True
global: True
advanced: True
esheap:
description: Specify the memory heap size in (m)egabytes for Elasticsearch.
helpLink: elasticsearch.html
@@ -376,6 +382,7 @@ elasticsearch:
so-logs-azure_x_signinlogs: *indexSettings
so-logs-azure_x_springcloudlogs: *indexSettings
so-logs-barracuda_x_waf: *indexSettings
so-logs-barracuda_cloudgen_firewall_x_log: *indexSettings
so-logs-cef_x_log: *indexSettings
so-logs-cisco_asa_x_log: *indexSettings
so-logs-cisco_ftd_x_log: *indexSettings
@@ -389,8 +396,10 @@ elasticsearch:
so-logs-citrix_waf_x_log: *indexSettings
so-logs-cloudflare_x_audit: *indexSettings
so-logs-cloudflare_x_logpull: *indexSettings
so-logs-crowdstrike_x_alert: *indexSettings
so-logs-crowdstrike_x_falcon: *indexSettings
so-logs-crowdstrike_x_fdr: *indexSettings
so-logs-crowdstrike_x_host: *indexSettings
so-logs-darktrace_x_ai_analyst_alert: *indexSettings
so-logs-darktrace_x_model_breach_alert: *indexSettings
so-logs-darktrace_x_system_status_alert: *indexSettings
@@ -430,6 +439,7 @@ elasticsearch:
so-logs-httpjson_x_generic: *indexSettings
so-logs-iis_x_access: *indexSettings
so-logs-iis_x_error: *indexSettings
so-logs-imperva_cloud_waf_x_event: *indexSettings
so-logs-juniper_x_junos: *indexSettings
so-logs-juniper_x_netscreen: *indexSettings
so-logs-juniper_x_srx: *indexSettings
@@ -481,11 +491,16 @@ elasticsearch:
so-logs-ti_cybersixgill_x_threat: *indexSettings
so-logs-ti_misp_x_threat: *indexSettings
so-logs-ti_misp_x_threat_attributes: *indexSettings
so-logs-ti_opencti_x_indicator: *indexSettings
so-logs-ti_otx_x_pulses_subscribed: *indexSettings
so-logs-ti_otx_x_threat: *indexSettings
so-logs-ti_recordedfuture_x_latest_ioc-template: *indexSettings
so-logs-ti_recordedfuture_x_threat: *indexSettings
so-logs-ti_threatq_x_threat: *indexSettings
so-logs-trend_micro_vision_one_x_alert: *indexSettings
so-logs-trend_micro_vision_one_x_audit: *indexSettings
so-logs-trend_micro_vision_one_x_detection: *indexSettings
so-logs-trendmicro_x_deep_security: *indexSettings
so-logs-zscaler_zia_x_alerts: *indexSettings
so-logs-zscaler_zia_x_dns: *indexSettings
so-logs-zscaler_zia_x_firewall: *indexSettings
@@ -531,6 +546,7 @@ elasticsearch:
so-suricata_x_alerts: *indexSettings
so-import: *indexSettings
so-kratos: *indexSettings
so-hydra: *indexSettings
so-kismet: *indexSettings
so-logstash: *indexSettings
so-redis: *indexSettings
@@ -603,6 +603,89 @@
}
}
},
"ipsec": {
"properties": {
"certificates": {
"ignore_above": 1024,
"type": "keyword"
},
"exchange_type": {
"type": "short"
},
"flag_a": {
"type": "boolean"
},
"flag_c": {
"type": "boolean"
},
"flag_e": {
"type": "boolean"
},
"flag_i": {
"type": "boolean"
},
"flag_r": {
"type": "boolean"
},
"flag_v": {
"type": "boolean"
},
"hash": {
"ignore_above": 1024,
"type": "keyword"
},
"initiator_spi": {
"ignore_above": 1024,
"type": "keyword"
},
"ke_dh_groups": {
"type": "short"
},
"length": {
"type": "long"
},
"maj_version": {
"type": "short"
},
"message_id": {
"type": "long"
},
"min_version": {
"type": "short"
},
"notify_messages": {
"ignore_above": 1024,
"type": "keyword"
},
"proposals": {
"type": "long"
},
"responder_spi": {
"ignore_above": 1024,
"type": "keyword"
},
"situation": {
"ignore_above": 1024,
"type": "keyword"
},
"transform_attributes": {
"ignore_above": 1024,
"type": "keyword"
},
"transforms": {
"ignore_above": 1024,
"type": "keyword"
},
"vendor_ids": {
"ignore_above": 1024,
"type": "keyword"
},
"version": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"irc": {
"properties": {
"addl": {
@@ -751,6 +834,81 @@
}
}
},
"ldap": {
"type": "object",
"properties": {
"message_id": {
"type": "short"
},
"opcode": {
"ignore_above": 1024,
"type": "keyword"
},
"result": {
"ignore_above": 1024,
"type": "keyword"
},
"diagnostic_message": {
"ignore_above": 1024,
"type": "keyword"
},
"version": {
"type": "short"
},
"object": {
"ignore_above": 1024,
"type": "keyword"
},
"argument": {
"ignore_above": 1024,
"type": "keyword"
},
"user_email": {
"ignore_above": 1024,
"type": "keyword"
},
"property": {
"ignore_above": 1024,
"type": "keyword"
},
"common_name": {
"ignore_above": 1024,
"type": "keyword"
},
"organizational_unit": {
"ignore_above": 1024,
"type": "keyword"
},
"domain": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"ldap_search": {
"type": "object",
"properties": {
"scope": {
"ignore_above": 1024,
"type": "keyword"
},
"deref_aliases": {
"ignore_above": 1024,
"type": "keyword"
},
"result_count": {
"type": "long"
},
"filter": {
"ignore_above": 1024,
"type": "keyword"
},
"attributes": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"modbus": {
"properties": {
"exception": {
@@ -1089,6 +1247,38 @@
}
}
},
"quic": {
"type": "object",
"properties": {
"server_name": {
"ignore_above": 1024,
"type": "keyword"
},
"version": {
"type": "short"
},
"client_initial_dcid": {
"ignore_above": 1024,
"type": "keyword"
},
"client_scid": {
"ignore_above": 1024,
"type": "keyword"
},
"server_scid": {
"ignore_above": 1024,
"type": "keyword"
},
"client_protocol": {
"ignore_above": 1024,
"type": "keyword"
},
"history": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"radius": {
"properties": {
"connect_info": {
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More