mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2026-01-22 08:01:28 +01:00
Compare commits
847 Commits
2.4.3-2023
...
2.4.20-202
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b5cd4f53a | ||
|
|
acc6715f90 | ||
|
|
b6af59d9b0 | ||
|
|
8ce70e1f18 | ||
|
|
98eab906af | ||
|
|
d558f20715 | ||
|
|
967138cdff | ||
|
|
c76ac717f2 | ||
|
|
a671ac387a | ||
|
|
1043315e6b | ||
|
|
fc0e3c0124 | ||
|
|
32c1d6f95c | ||
|
|
c25aed9a2b | ||
|
|
d79e27774c | ||
|
|
194178a250 | ||
|
|
d78b55873d | ||
|
|
f3ba28062b | ||
|
|
2434ce14d3 | ||
|
|
66be04e78a | ||
|
|
62e9472f1a | ||
|
|
c699c2fe2a | ||
|
|
a35889ebdc | ||
|
|
8995752c27 | ||
|
|
57e76232ec | ||
|
|
d7a14d9e00 | ||
|
|
6b90961e87 | ||
|
|
6547afe6c0 | ||
|
|
3a5c6ee43a | ||
|
|
0f08d5d640 | ||
|
|
f85dd910a3 | ||
|
|
c1ab8952eb | ||
|
|
dfe399291f | ||
|
|
70a36bafa5 | ||
|
|
381d95e032 | ||
|
|
cd8a74290b | ||
|
|
d91eaa9ae5 | ||
|
|
8c7933cd60 | ||
|
|
88f461042d | ||
|
|
ea085c5ff6 | ||
|
|
19232124f2 | ||
|
|
e8b67da08b | ||
|
|
b5d19bd561 | ||
|
|
d546d52069 | ||
|
|
13cc8c4258 | ||
|
|
9d3f6059ee | ||
|
|
43855b8ca2 | ||
|
|
ec3cc7a854 | ||
|
|
63be7ef6ca | ||
|
|
b8aad7f5e6 | ||
|
|
c02e491609 | ||
|
|
670cd19051 | ||
|
|
8c44481ee1 | ||
|
|
a8c94a891b | ||
|
|
ff35946050 | ||
|
|
95d32cb076 | ||
|
|
018186ccbd | ||
|
|
5040df7551 | ||
|
|
c3604f6e80 | ||
|
|
7a21b7903d | ||
|
|
a77a53f20b | ||
|
|
ee45fc31a2 | ||
|
|
ceae22adab | ||
|
|
202eb7e876 | ||
|
|
89a9c30cc8 | ||
|
|
7012ff6609 | ||
|
|
621da9e7e3 | ||
|
|
26bb0d064f | ||
|
|
9ee64f93ca | ||
|
|
641ff95f41 | ||
|
|
49115cde55 | ||
|
|
7d0e1c92a3 | ||
|
|
419acab48a | ||
|
|
528572c15b | ||
|
|
d72e4ae97d | ||
|
|
76c0b881ff | ||
|
|
836c49b755 | ||
|
|
24def3a196 | ||
|
|
b6d58b2fb8 | ||
|
|
770a74c83d | ||
|
|
039d5ae9aa | ||
|
|
2fb73cd516 | ||
|
|
2427344dca | ||
|
|
62cb661bab | ||
|
|
1e04199ea6 | ||
|
|
4666916077 | ||
|
|
f094b1162d | ||
|
|
ae9619f0c3 | ||
|
|
87cc389088 | ||
|
|
ec046a6943 | ||
|
|
7eefe7b79c | ||
|
|
c4fea9cb9d | ||
|
|
3fded86aa1 | ||
|
|
05e7c32cf9 | ||
|
|
af2ff2b07c | ||
|
|
b47d915cb6 | ||
|
|
376d525ad7 | ||
|
|
9c854a13cc | ||
|
|
ff780738fd | ||
|
|
2c8d413f16 | ||
|
|
48801da44e | ||
|
|
641b8ef0b6 | ||
|
|
036a21ff17 | ||
|
|
2abf434ebe | ||
|
|
4dc477cc1d | ||
|
|
0bba68769b | ||
|
|
e25d1c0ff3 | ||
|
|
f9ace4791f | ||
|
|
7cb9b5f257 | ||
|
|
c95af6b992 | ||
|
|
2fc4d2923d | ||
|
|
eeeae08ec8 | ||
|
|
220f25e206 | ||
|
|
fa3a79a787 | ||
|
|
ca71add51b | ||
|
|
3fa3f83007 | ||
|
|
377802410e | ||
|
|
2e0ea3f374 | ||
|
|
508260bd46 | ||
|
|
a1e963f834 | ||
|
|
8a98040008 | ||
|
|
47e611682a | ||
|
|
5bac1e4d15 | ||
|
|
ad025b9683 | ||
|
|
3e97ddc22d | ||
|
|
151e8bfc4e | ||
|
|
a914a02273 | ||
|
|
bb3632d1b2 | ||
|
|
66bb1272ae | ||
|
|
bbef96ac25 | ||
|
|
f9cbde10a6 | ||
|
|
fe1bae96ed | ||
|
|
eab6173a31 | ||
|
|
98499c3963 | ||
|
|
26da525ebe | ||
|
|
c65c9777bd | ||
|
|
af68af7f18 | ||
|
|
0c11a9b733 | ||
|
|
59d077f3ff | ||
|
|
6383712731 | ||
|
|
e067b7134e | ||
|
|
183c530c82 | ||
|
|
33d68478b6 | ||
|
|
22c0323bda | ||
|
|
19114c1a26 | ||
|
|
11b8e13418 | ||
|
|
6fdd7b3751 | ||
|
|
30c3255cb2 | ||
|
|
35ebbc974c | ||
|
|
f1d0db8171 | ||
|
|
9968d697f3 | ||
|
|
02c54a264d | ||
|
|
e814a3409f | ||
|
|
55847c7bdc | ||
|
|
598515e5b4 | ||
|
|
692625f8cd | ||
|
|
f8ae3f12e6 | ||
|
|
3780ed1b4f | ||
|
|
8d269fee30 | ||
|
|
35157f2e8b | ||
|
|
60f1947eb4 | ||
|
|
ffaab4a1b4 | ||
|
|
70e1309c9f | ||
|
|
5c0045f9f8 | ||
|
|
b66be9c226 | ||
|
|
651393988a | ||
|
|
cf19c8f8c2 | ||
|
|
ba3ae92702 | ||
|
|
8e2bed7f91 | ||
|
|
028b69c7d4 | ||
|
|
0cf913a7c1 | ||
|
|
13fbcd712b | ||
|
|
0aae107155 | ||
|
|
d2dcf7e7c1 | ||
|
|
6efdf1b9d0 | ||
|
|
a11259c683 | ||
|
|
863db14b61 | ||
|
|
335aaa5594 | ||
|
|
07ed93de19 | ||
|
|
8093e5ce7c | ||
|
|
585fba4bc6 | ||
|
|
b8f69b5008 | ||
|
|
aebfb19ab7 | ||
|
|
490669d378 | ||
|
|
3434d0f200 | ||
|
|
765a22e6f0 | ||
|
|
546c562ef0 | ||
|
|
b64d4e3658 | ||
|
|
0fb00d569e | ||
|
|
b64fa51268 | ||
|
|
1871d48f7f | ||
|
|
b010919099 | ||
|
|
ce2a7135cb | ||
|
|
0fed757b11 | ||
|
|
1a3b3b21fb | ||
|
|
d86e21c751 | ||
|
|
e408718230 | ||
|
|
ee848b8a8c | ||
|
|
a60c34d548 | ||
|
|
8a2fc5d62b | ||
|
|
da56a421e5 | ||
|
|
bfb0d0ddb5 | ||
|
|
c812c3991e | ||
|
|
ca9dad396f | ||
|
|
a615fc8e47 | ||
|
|
ac38f32e32 | ||
|
|
f2d1b9ac95 | ||
|
|
14a6280531 | ||
|
|
41300af944 | ||
|
|
21e91a7537 | ||
|
|
4127e0fc53 | ||
|
|
d090852895 | ||
|
|
78915f900b | ||
|
|
8cc19b0748 | ||
|
|
fe690922de | ||
|
|
257a471383 | ||
|
|
bee83a320b | ||
|
|
b45e114ef2 | ||
|
|
b14614ae53 | ||
|
|
8381fa1d42 | ||
|
|
a3eeba4761 | ||
|
|
97587064f8 | ||
|
|
ae01da780e | ||
|
|
60b0af5ab7 | ||
|
|
0e22acc255 | ||
|
|
655eea2b00 | ||
|
|
ce05f29dc4 | ||
|
|
7e12167b52 | ||
|
|
706a6e2d56 | ||
|
|
a4dc482372 | ||
|
|
f4191fb7fa | ||
|
|
d2063c7e11 | ||
|
|
c01a9006a6 | ||
|
|
f118e25e8c | ||
|
|
d40bbf6b09 | ||
|
|
0455063a39 | ||
|
|
532b2c222a | ||
|
|
67ea7d31e1 | ||
|
|
a1b1294247 | ||
|
|
1c3d3d703c | ||
|
|
9c3e3f8e06 | ||
|
|
48e5cf7e67 | ||
|
|
bd61ee22be | ||
|
|
4f8a0c4173 | ||
|
|
6b0fbe4634 | ||
|
|
2616a2bba3 | ||
|
|
c10e686ec6 | ||
|
|
a8ec3717c4 | ||
|
|
7dc855bbbe | ||
|
|
1ef4d2cde1 | ||
|
|
8c5aa4a0e6 | ||
|
|
5879eeabfa | ||
|
|
022ee36bca | ||
|
|
aacd689bae | ||
|
|
388c90f641 | ||
|
|
c22f9687fb | ||
|
|
0a88c812e8 | ||
|
|
e28ff38d39 | ||
|
|
ab1d97c985 | ||
|
|
4a489afb89 | ||
|
|
c957c6ce14 | ||
|
|
e57cc03084 | ||
|
|
3a0590f950 | ||
|
|
43e4cf632a | ||
|
|
92c6229e00 | ||
|
|
8252924203 | ||
|
|
bdb88cc87b | ||
|
|
f4be5641da | ||
|
|
4484e2d031 | ||
|
|
b8dc9ea560 | ||
|
|
d4bffba736 | ||
|
|
d2d0d53eef | ||
|
|
31a49268cb | ||
|
|
2f51349ff8 | ||
|
|
a885baf960 | ||
|
|
3f2793088a | ||
|
|
0f24c8e8bb | ||
|
|
8a751e097d | ||
|
|
4a582804b0 | ||
|
|
f278056493 | ||
|
|
f2c665e4fa | ||
|
|
ce32a0081e | ||
|
|
658d132c38 | ||
|
|
7d2f39a06f | ||
|
|
84d5d52ec8 | ||
|
|
563a495725 | ||
|
|
9e18fe64cf | ||
|
|
708a681ed9 | ||
|
|
a40937409a | ||
|
|
b8d374b2af | ||
|
|
fa31bd4bf7 | ||
|
|
847aab2712 | ||
|
|
710b800bc2 | ||
|
|
c92b359b79 | ||
|
|
e2fd371886 | ||
|
|
5b453ca972 | ||
|
|
6784bdcb54 | ||
|
|
7e4036f2a5 | ||
|
|
421cfc46ad | ||
|
|
0d4a49a0ff | ||
|
|
6453a86c2a | ||
|
|
d657bbdc18 | ||
|
|
8aeb4706e1 | ||
|
|
e04ec1042a | ||
|
|
e77e5c3cea | ||
|
|
222352b4b3 | ||
|
|
4ac95447eb | ||
|
|
9cba9d9ae0 | ||
|
|
056072af7d | ||
|
|
fb3fee5d4b | ||
|
|
e7be8991f1 | ||
|
|
09dd3f529b | ||
|
|
488c4d5000 | ||
|
|
abad833c5e | ||
|
|
4363e71e80 | ||
|
|
7971d9749a | ||
|
|
5ebe33d45f | ||
|
|
4887eb4957 | ||
|
|
0620919241 | ||
|
|
e84d624d23 | ||
|
|
45bc2ec380 | ||
|
|
9bf7b9bda5 | ||
|
|
ab19fa9ece | ||
|
|
53d7d69135 | ||
|
|
b22776dc5a | ||
|
|
dc6d9d4ba2 | ||
|
|
075ef5e02c | ||
|
|
16da0b469a | ||
|
|
5c2c2908b8 | ||
|
|
ad9da07de1 | ||
|
|
d1210e946c | ||
|
|
5d6fe4d9ae | ||
|
|
193f9c08fb | ||
|
|
4808c21cf4 | ||
|
|
4106d1f69d | ||
|
|
007720132b | ||
|
|
f3a58cd336 | ||
|
|
faca36e74c | ||
|
|
f38b77892b | ||
|
|
00297cd864 | ||
|
|
ce63e47fcd | ||
|
|
d53489d674 | ||
|
|
1fb3a59573 | ||
|
|
a5e60363cf | ||
|
|
3f054031a0 | ||
|
|
4a54febf38 | ||
|
|
fdb2ca4167 | ||
|
|
7112d53d4d | ||
|
|
1d83b2f2e6 | ||
|
|
a724b95441 | ||
|
|
0d894b7f52 | ||
|
|
e32d7eb127 | ||
|
|
caced64d11 | ||
|
|
3ec3f8bcd8 | ||
|
|
4426437ad3 | ||
|
|
1f0f74ff04 | ||
|
|
e43900074a | ||
|
|
732d2605a7 | ||
|
|
4d497022db | ||
|
|
2680a50927 | ||
|
|
874dab7535 | ||
|
|
fe9917ef1c | ||
|
|
e844cf11db | ||
|
|
f9e272dd8f | ||
|
|
dfe916d7c8 | ||
|
|
c3c769922d | ||
|
|
30e3fbb41c | ||
|
|
78694807ff | ||
|
|
8844e305ab | ||
|
|
1a37c43c98 | ||
|
|
bf78faa0f0 | ||
|
|
204ef7e68f | ||
|
|
176608d2f9 | ||
|
|
28dfdbf06d | ||
|
|
a443c654e5 | ||
|
|
6413050f2e | ||
|
|
fe7a940082 | ||
|
|
e586d6b967 | ||
|
|
2d25e352d4 | ||
|
|
4297d51a2d | ||
|
|
1440c72559 | ||
|
|
00efc2f88f | ||
|
|
d55c2f889c | ||
|
|
e1e535b009 | ||
|
|
789fff561e | ||
|
|
58fe25623b | ||
|
|
553b758c61 | ||
|
|
6da2f117f2 | ||
|
|
6ad22edf8e | ||
|
|
2dbe679849 | ||
|
|
2f74b69cc3 | ||
|
|
4320dab856 | ||
|
|
036b81707b | ||
|
|
8455d3da6f | ||
|
|
3d4fd08547 | ||
|
|
21c80e4953 | ||
|
|
5c704d7e58 | ||
|
|
230f5868f9 | ||
|
|
20dedab4b2 | ||
|
|
9118ac2b56 | ||
|
|
aab89d2483 | ||
|
|
b2e75e77e8 | ||
|
|
bcd1ccd91b | ||
|
|
673b45af09 | ||
|
|
a06040c035 | ||
|
|
e286b8f2ba | ||
|
|
69553f9017 | ||
|
|
609a2bf32e | ||
|
|
dad541423d | ||
|
|
b9d0d03223 | ||
|
|
8611d1848c | ||
|
|
5278601e5d | ||
|
|
a13b3f305a | ||
|
|
38089c6662 | ||
|
|
2d863f09eb | ||
|
|
37b98ba188 | ||
|
|
65d1e57ccd | ||
|
|
9ae32e2bd6 | ||
|
|
6e8f31e083 | ||
|
|
3c5cd941c7 | ||
|
|
2ea2a4d0a7 | ||
|
|
90102b1148 | ||
|
|
ec81cbd70d | ||
|
|
59c0109c91 | ||
|
|
9af2a731ca | ||
|
|
9b656ebbc0 | ||
|
|
9d3744aa25 | ||
|
|
9fddd56c96 | ||
|
|
89c4f58296 | ||
|
|
0ba1e7521a | ||
|
|
36747cf940 | ||
|
|
118088c35f | ||
|
|
63373710b4 | ||
|
|
209da766ba | ||
|
|
433cde0f9e | ||
|
|
9fe9256a0f | ||
|
|
014aeffb2a | ||
|
|
3b86b60207 | ||
|
|
0f52530d07 | ||
|
|
726ec72350 | ||
|
|
560ec9106d | ||
|
|
a51acfc314 | ||
|
|
78950ebfbb | ||
|
|
d3ae2b03f0 | ||
|
|
dd1fa51eb5 | ||
|
|
682289ef23 | ||
|
|
593cdbd060 | ||
|
|
4ed0ba5040 | ||
|
|
2472d6a727 | ||
|
|
18e31a4490 | ||
|
|
2caca92082 | ||
|
|
abf74e0ae4 | ||
|
|
dc7ce5ba8f | ||
|
|
6b5343f582 | ||
|
|
ca6276b922 | ||
|
|
3e4136e641 | ||
|
|
15b8e1a753 | ||
|
|
b7197bbd16 | ||
|
|
8966617508 | ||
|
|
9319c3f2e1 | ||
|
|
d4fbf7d6a6 | ||
|
|
e78fcbc6cb | ||
|
|
27b70cbf68 | ||
|
|
ffb54135d1 | ||
|
|
d40a8927c3 | ||
|
|
9172e10dba | ||
|
|
1907ea805c | ||
|
|
80598d7f8d | ||
|
|
13c3e7f5ff | ||
|
|
d4389d5057 | ||
|
|
cf2233bbb6 | ||
|
|
3847863b3d | ||
|
|
3368789b43 | ||
|
|
1bc7bbc76e | ||
|
|
e108bb9bcd | ||
|
|
5414b0756c | ||
|
|
11c827927c | ||
|
|
3054b8dcb9 | ||
|
|
399758cd5f | ||
|
|
1c8a8c460c | ||
|
|
ab28cee7cf | ||
|
|
5a3c1f0373 | ||
|
|
435da77388 | ||
|
|
da2910e36f | ||
|
|
eb512d9aa2 | ||
|
|
03f5e44be7 | ||
|
|
f153c1125d | ||
|
|
99b61b5e1d | ||
|
|
8036df4b20 | ||
|
|
aab55c8cf6 | ||
|
|
f3c5d26a4e | ||
|
|
64776936cc | ||
|
|
c17b324108 | ||
|
|
72e1cbbfb6 | ||
|
|
f102351052 | ||
|
|
ac28f90af3 | ||
|
|
f6c6204555 | ||
|
|
9873121000 | ||
|
|
5630b353c4 | ||
|
|
04ed5835ae | ||
|
|
407cb2a537 | ||
|
|
b520c1abb7 | ||
|
|
25b11c35fb | ||
|
|
ef0301d364 | ||
|
|
e694019027 | ||
|
|
22ebb2faf6 | ||
|
|
0d5ed2e835 | ||
|
|
8ab1769d70 | ||
|
|
6692fffb9b | ||
|
|
23414599ee | ||
|
|
8b3a38f573 | ||
|
|
9ec4322bf4 | ||
|
|
7037fc52f8 | ||
|
|
0e047cffad | ||
|
|
44b086a028 | ||
|
|
4e2eb86b36 | ||
|
|
1cbf60825d | ||
|
|
2d13bf1a61 | ||
|
|
968fee3488 | ||
|
|
da51fd59a0 | ||
|
|
3fa0a98830 | ||
|
|
e7bef745eb | ||
|
|
82b335ed04 | ||
|
|
f35f42c83d | ||
|
|
4adaddf13f | ||
|
|
b6579d7d45 | ||
|
|
87a5d20ac9 | ||
|
|
2875a7a2e5 | ||
|
|
f27ebc47c1 | ||
|
|
63b4bdcebe | ||
|
|
ba3660d0da | ||
|
|
83265d9d6c | ||
|
|
527a6ba454 | ||
|
|
f84b0a3219 | ||
|
|
ae6997a6b7 | ||
|
|
9d59e4250f | ||
|
|
48d9c14563 | ||
|
|
29b64eadd4 | ||
|
|
5dd5f9fc1c | ||
|
|
44c926ba8d | ||
|
|
6a55a8e5c0 | ||
|
|
64bad0a9cf | ||
|
|
b6dd347eb8 | ||
|
|
a89508f1ae | ||
|
|
ed7b674fbb | ||
|
|
0c2a4cbaba | ||
|
|
57562ad5e3 | ||
|
|
95581f505a | ||
|
|
599de60dc8 | ||
|
|
77101fec12 | ||
|
|
069d32be1a | ||
|
|
e78e6b74ed | ||
|
|
16217912db | ||
|
|
635ddc9b21 | ||
|
|
18d8f0d448 | ||
|
|
1c42d70d30 | ||
|
|
282f13a774 | ||
|
|
f867be9e04 | ||
|
|
4939447764 | ||
|
|
5a59975cb8 | ||
|
|
20f3cedc01 | ||
|
|
e563d71856 | ||
|
|
1ca78fd297 | ||
|
|
e76ee718e0 | ||
|
|
5c90a5f27e | ||
|
|
bee429fe29 | ||
|
|
ecbb353d68 | ||
|
|
ed21b94c28 | ||
|
|
2a282a29c3 | ||
|
|
bc09b418ca | ||
|
|
6f6db61a69 | ||
|
|
9fce80dba3 | ||
|
|
abfec85e28 | ||
|
|
9aa655365b | ||
|
|
aa56085758 | ||
|
|
9a3760951a | ||
|
|
4c8373452d | ||
|
|
0bb5db2e72 | ||
|
|
2dbc7d8485 | ||
|
|
858e884ec2 | ||
|
|
4672eeb99b | ||
|
|
aa824e7b6c | ||
|
|
bb2a1b9521 | ||
|
|
3a22ef8e86 | ||
|
|
54080c42fe | ||
|
|
a1fa87c150 | ||
|
|
0c553633b1 | ||
|
|
12486599e0 | ||
|
|
3c16218c5a | ||
|
|
f9850025ea | ||
|
|
65b76d72ca | ||
|
|
afca15f444 | ||
|
|
65b9843f14 | ||
|
|
653e2d8205 | ||
|
|
bbaf6df914 | ||
|
|
bc182c1c43 | ||
|
|
fe9b934af6 | ||
|
|
373298430b | ||
|
|
4a18eb02f3 | ||
|
|
0aab3e185e | ||
|
|
b1fb05dd28 | ||
|
|
9437a47946 | ||
|
|
bdf4f6190d | ||
|
|
f24a3a51ce | ||
|
|
ba6043392c | ||
|
|
60eb1611ea | ||
|
|
3ef6ea9155 | ||
|
|
2b38bc778d | ||
|
|
e334d44c95 | ||
|
|
39662ccf14 | ||
|
|
fd69d1c714 | ||
|
|
63eebdf6ac | ||
|
|
e19845e41d | ||
|
|
c1190064ad | ||
|
|
4f94d953c9 | ||
|
|
71a83c1fe9 | ||
|
|
5553be02ac | ||
|
|
b20fad2839 | ||
|
|
16edca7834 | ||
|
|
2545f9907f | ||
|
|
4efc951eaf | ||
|
|
d75191d679 | ||
|
|
ee667a48c9 | ||
|
|
067a83a87c | ||
|
|
d84dbf9535 | ||
|
|
d71254ad29 | ||
|
|
de7b7ff989 | ||
|
|
510900e640 | ||
|
|
00483018ca | ||
|
|
9416a14971 | ||
|
|
c9faa1a340 | ||
|
|
9bda01bd29 | ||
|
|
eead0c42d4 | ||
|
|
741e6039c1 | ||
|
|
db09b465bd | ||
|
|
a59f2ded38 | ||
|
|
e2fe04dadc | ||
|
|
563bf2ff3a | ||
|
|
07eeb4e2a0 | ||
|
|
5dc5b99b05 | ||
|
|
ba69c67dc2 | ||
|
|
d1d5f8a2b6 | ||
|
|
48324911ce | ||
|
|
4b0126a2e7 | ||
|
|
8a3c2e7242 | ||
|
|
f55c1a4078 | ||
|
|
c4d81a249a | ||
|
|
4c9d172721 | ||
|
|
36a936d3d6 | ||
|
|
d6164446c6 | ||
|
|
bb7a918a16 | ||
|
|
be254b15f2 | ||
|
|
83e1e3efdc | ||
|
|
7c48f9d6ec | ||
|
|
f2947de0ca | ||
|
|
d07c46f27e | ||
|
|
47e418a441 | ||
|
|
87b1207ac0 | ||
|
|
a86cbaa6fa | ||
|
|
c68cd6cf33 | ||
|
|
3071a1de41 | ||
|
|
e75d0c8094 | ||
|
|
14c685ab10 | ||
|
|
54082858dc | ||
|
|
4b7e7978ef | ||
|
|
066de70638 | ||
|
|
19c6796927 | ||
|
|
77c9b4fb54 | ||
|
|
3104137190 | ||
|
|
c8b65ecca0 | ||
|
|
555c881235 | ||
|
|
0ac9a1f9cc | ||
|
|
3c0554a42c | ||
|
|
0b19179630 | ||
|
|
30a14f8aaf | ||
|
|
877fc36013 | ||
|
|
a892adb66f | ||
|
|
a49b05661d | ||
|
|
266fc4e866 | ||
|
|
b738325880 | ||
|
|
ad7821391d | ||
|
|
1b0c146b54 | ||
|
|
1848a835f5 | ||
|
|
23cc75c68d | ||
|
|
17fcf12608 | ||
|
|
6a8737e9a2 | ||
|
|
9543058a2c | ||
|
|
b66cd82110 | ||
|
|
41ebb403ca | ||
|
|
c94436fcbd | ||
|
|
a59eda319e | ||
|
|
8a76975d8c | ||
|
|
737da45e7f | ||
|
|
df1bf8e67b | ||
|
|
f95757c551 | ||
|
|
5e46138961 | ||
|
|
dc8aa4d923 | ||
|
|
1d3e39b6bd | ||
|
|
9ad7303cf2 | ||
|
|
b1daa22dfc | ||
|
|
49c4edbcbe | ||
|
|
f4c3103f84 | ||
|
|
a2aea5530b | ||
|
|
01234f87f9 | ||
|
|
5d4186ac07 | ||
|
|
425ca35a22 | ||
|
|
fe5ca3a0c8 | ||
|
|
7fad710ca1 | ||
|
|
8d6c2600c9 | ||
|
|
38c7ea0801 | ||
|
|
abe0a9ec27 | ||
|
|
f0f8513370 | ||
|
|
bffd24e0d5 | ||
|
|
71cbab8fcc | ||
|
|
6816d06710 | ||
|
|
d19615f743 | ||
|
|
894e009b95 | ||
|
|
1a4515fc8a | ||
|
|
31696803e1 | ||
|
|
e715dfa354 | ||
|
|
c723a09107 | ||
|
|
8cf3ceeb71 | ||
|
|
921fc95668 | ||
|
|
9e42fb927d | ||
|
|
87d72e852c | ||
|
|
ba2782c5e7 | ||
|
|
9169fca9f8 | ||
|
|
1028fb1346 | ||
|
|
6846487909 | ||
|
|
2cc0c4c0ac | ||
|
|
5a5b643155 | ||
|
|
e97bec2bc1 | ||
|
|
78db64a419 | ||
|
|
55d32c5b98 | ||
|
|
333213d1dd | ||
|
|
03b16a5582 | ||
|
|
20c76abac4 | ||
|
|
4158e18675 | ||
|
|
f0c391e801 | ||
|
|
922a77ac55 | ||
|
|
a62f96595c | ||
|
|
fb8a79e112 | ||
|
|
782a3eccfe | ||
|
|
2c996fe7ad | ||
|
|
0c177ec923 | ||
|
|
41f00c0aa1 | ||
|
|
05b30771c5 | ||
|
|
e3249c8e4c | ||
|
|
a0b6e1076f | ||
|
|
85bb5a327c | ||
|
|
68f5c9965a | ||
|
|
727d0443a2 | ||
|
|
b915cea52f | ||
|
|
d98a1d5ae5 | ||
|
|
6f5bb136ff | ||
|
|
695ec149f1 | ||
|
|
50103aebb3 | ||
|
|
6f81e234cd | ||
|
|
7732435b64 | ||
|
|
2cf36f1e8f | ||
|
|
43d63a3187 | ||
|
|
40294e2762 | ||
|
|
a3f79850fe | ||
|
|
b9204cbe99 | ||
|
|
6f7914f3c4 | ||
|
|
0c9e230294 | ||
|
|
fa1d53a309 | ||
|
|
a41b0dbfea | ||
|
|
d28375b304 | ||
|
|
07c0b539d7 | ||
|
|
d18ebd6e36 | ||
|
|
5a642b151b | ||
|
|
0aa4ea3e87 | ||
|
|
efcef90ead | ||
|
|
af56aa4f16 | ||
|
|
d5257468eb | ||
|
|
a3b0db7949 | ||
|
|
5f509eb2d8 | ||
|
|
a38d561684 | ||
|
|
4b559ec182 | ||
|
|
0b209d69e5 | ||
|
|
11493cb615 | ||
|
|
0def41f03c | ||
|
|
1c191e426f | ||
|
|
de98baaad4 | ||
|
|
df0e19ff80 | ||
|
|
d22d864ba6 | ||
|
|
898b352af9 | ||
|
|
76a8e315b7 | ||
|
|
edaf695463 | ||
|
|
53fcac4a02 | ||
|
|
44054ba95f | ||
|
|
10aa77977e | ||
|
|
8e90658856 | ||
|
|
965d0543f4 | ||
|
|
e353855855 | ||
|
|
c54217a8cb | ||
|
|
710b3bac3d | ||
|
|
8a90579df7 | ||
|
|
39c8766914 | ||
|
|
694ea743cc | ||
|
|
3d9e7d1e97 | ||
|
|
ca71c00f1c | ||
|
|
2f2394dca2 | ||
|
|
fee4c20912 | ||
|
|
03342fd477 | ||
|
|
6dbff3b9df | ||
|
|
2f375b89a8 | ||
|
|
f67ac80c56 | ||
|
|
b06a35099f | ||
|
|
087099b9b6 | ||
|
|
04fe2ca996 | ||
|
|
bdb5748b44 | ||
|
|
1cbe5580a6 | ||
|
|
b57674a7cc | ||
|
|
53bd7bcc29 | ||
|
|
6787b97c6a | ||
|
|
0d43f9aaf4 | ||
|
|
40540f47bf | ||
|
|
24e05c9491 | ||
|
|
02c9465dfb | ||
|
|
a4d484ea47 | ||
|
|
c9d650f4c8 | ||
|
|
ed1d2d0a8b | ||
|
|
903de330c2 | ||
|
|
8621352701 | ||
|
|
564ab105ba | ||
|
|
b637e27c8d | ||
|
|
34ab949dfc | ||
|
|
59191008a0 | ||
|
|
17a04a75c9 | ||
|
|
884d669ae9 | ||
|
|
8a88b16b9e | ||
|
|
6545ae588d | ||
|
|
5ab54fcfc5 | ||
|
|
ae4befe377 | ||
|
|
0c320e3501 | ||
|
|
933f4fa6c8 | ||
|
|
d80c88f613 | ||
|
|
6d2e851a43 | ||
|
|
209aae50bc | ||
|
|
6fc988740d | ||
|
|
387ce22385 | ||
|
|
cc3c28135d | ||
|
|
6b6724afcf | ||
|
|
c37a179a3c | ||
|
|
d519369c6f | ||
|
|
883d9560a0 |
@@ -1,18 +1,18 @@
|
||||
### 2.4.3-20230711 ISO image built on 2023/07/11
|
||||
### 2.4.20-20231012 ISO image released on 2023/10/12
|
||||
|
||||
|
||||
|
||||
### Download and Verify
|
||||
|
||||
2.4.3-20230711 ISO image:
|
||||
https://download.securityonion.net/file/securityonion/securityonion-2.4.3-20230711.iso
|
||||
|
||||
MD5: F481ED39E02A5AF05EB50D319D97A6C7
|
||||
SHA1: 20F9BAA8F73A44C21A8DFE81F36247BCF33CEDA6
|
||||
SHA256: D805522E02CD4941641385F6FF86FAAC240DA6C5FD98F78460348632C7C631B0
|
||||
2.4.20-20231012 ISO image:
|
||||
https://download.securityonion.net/file/securityonion/securityonion-2.4.20-20231012.iso
|
||||
|
||||
MD5: 7D6ACA843068BA9432B3FF63BFD1EF0F
|
||||
SHA1: BEF2B906066A1B04921DF0B80E7FDD4BC8ECED5C
|
||||
SHA256: 5D511D50F11666C69AE12435A47B9A2D30CB3CC88F8D38DC58A5BC0ECADF1BF5
|
||||
|
||||
Signature for ISO image:
|
||||
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.3-20230711.iso.sig
|
||||
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.20-20231012.iso.sig
|
||||
|
||||
Signing key:
|
||||
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS
|
||||
@@ -26,22 +26,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.3-20230711.iso.sig
|
||||
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.20-20231012.iso.sig
|
||||
```
|
||||
|
||||
Download the ISO image:
|
||||
```
|
||||
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.3-20230711.iso
|
||||
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.20-20231012.iso
|
||||
```
|
||||
|
||||
Verify the downloaded ISO image using the signature file:
|
||||
```
|
||||
gpg --verify securityonion-2.4.3-20230711.iso.sig securityonion-2.4.3-20230711.iso
|
||||
gpg --verify securityonion-2.4.20-20231012.iso.sig securityonion-2.4.20-20231012.iso
|
||||
```
|
||||
|
||||
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
|
||||
```
|
||||
gpg: Signature made Tue 11 Jul 2023 06:23:37 PM EDT using RSA key ID FE507013
|
||||
gpg: Signature made Thu 12 Oct 2023 01:28:32 PM EDT 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,6 +1,6 @@
|
||||
## Security Onion 2.4 Beta 4
|
||||
## Security Onion 2.4
|
||||
|
||||
Security Onion 2.4 Beta 4 is here!
|
||||
Security Onion 2.4 is here!
|
||||
|
||||
## Screenshots
|
||||
|
||||
|
||||
@@ -4,14 +4,9 @@ base:
|
||||
- global.adv_global
|
||||
- docker.soc_docker
|
||||
- docker.adv_docker
|
||||
- firewall.soc_firewall
|
||||
- firewall.adv_firewall
|
||||
- influxdb.token
|
||||
- logrotate.soc_logrotate
|
||||
- logrotate.adv_logrotate
|
||||
- nginx.soc_nginx
|
||||
- nginx.adv_nginx
|
||||
- node_data.ips
|
||||
- ntp.soc_ntp
|
||||
- ntp.adv_ntp
|
||||
- patch.needs_restarting
|
||||
@@ -22,6 +17,13 @@ base:
|
||||
- telegraf.soc_telegraf
|
||||
- telegraf.adv_telegraf
|
||||
|
||||
'* and not *_desktop':
|
||||
- firewall.soc_firewall
|
||||
- firewall.adv_firewall
|
||||
- nginx.soc_nginx
|
||||
- nginx.adv_nginx
|
||||
- node_data.ips
|
||||
|
||||
'*_manager or *_managersearch':
|
||||
- match: compound
|
||||
{% if salt['file.file_exists']('/opt/so/saltstack/local/pillar/elasticsearch/auth.sls') %}
|
||||
|
||||
@@ -3,14 +3,14 @@ import subprocess
|
||||
|
||||
def check():
|
||||
|
||||
os = __grains__['os']
|
||||
osfam = __grains__['os_family']
|
||||
retval = 'False'
|
||||
|
||||
if os == 'Ubuntu':
|
||||
if osfam == 'Debian':
|
||||
if path.exists('/var/run/reboot-required'):
|
||||
retval = 'True'
|
||||
|
||||
elif os == 'Rocky':
|
||||
elif osfam == 'RedHat':
|
||||
cmd = 'needs-restarting -r > /dev/null 2>&1'
|
||||
|
||||
try:
|
||||
|
||||
@@ -188,6 +188,9 @@
|
||||
'docker_clean'
|
||||
],
|
||||
'so-desktop': [
|
||||
'ssl',
|
||||
'docker_clean',
|
||||
'telegraf'
|
||||
],
|
||||
}, grain='role') %}
|
||||
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
{%- set DOCKERRANGE = salt['pillar.get']('docker:range', '172.17.0.0/24') %}
|
||||
{%- set DOCKERBIND = salt['pillar.get']('docker:bip', '172.17.0.1/24') %}
|
||||
{
|
||||
"registry-mirrors": [
|
||||
"https://:5000"
|
||||
],
|
||||
"bip": "{{ DOCKERBIND }}",
|
||||
"bip": "172.17.0.1/24",
|
||||
"default-address-pools": [
|
||||
{
|
||||
"base": "{{ DOCKERRANGE }}",
|
||||
"base": "172.17.0.0/24",
|
||||
"size": 24
|
||||
}
|
||||
]
|
||||
|
||||
@@ -195,7 +195,7 @@ soversionfile:
|
||||
{% endif %}
|
||||
|
||||
{% if GLOBALS.so_model and GLOBALS.so_model not in ['SO2AMI01', 'SO2AZI01', 'SO2GCI01'] %}
|
||||
{% if GLOBALS.os == 'Rocky' %}
|
||||
{% if GLOBALS.os == 'OEL' %}
|
||||
# Install Raid tools
|
||||
raidpkgs:
|
||||
pkg.installed:
|
||||
@@ -217,8 +217,7 @@ so-raid-status:
|
||||
- month: '*'
|
||||
- dayweek: '*'
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% else %}
|
||||
|
||||
{{sls}}_state_not_allowed:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{% from 'vars/globals.map.jinja' import GLOBALS %}
|
||||
|
||||
{% if GLOBALS.os == 'Ubuntu' %}
|
||||
{% if GLOBALS.os_family == 'Debian' %}
|
||||
commonpkgs:
|
||||
pkg.installed:
|
||||
- skip_suggestions: True
|
||||
@@ -14,16 +14,24 @@ commonpkgs:
|
||||
- software-properties-common
|
||||
- apt-transport-https
|
||||
- openssl
|
||||
- netcat
|
||||
- netcat-openbsd
|
||||
- sqlite3
|
||||
- libssl-dev
|
||||
- procps
|
||||
- python3-dateutil
|
||||
- python3-docker
|
||||
- python3-packaging
|
||||
- python3-watchdog
|
||||
- python3-lxml
|
||||
- git
|
||||
- rsync
|
||||
- vim
|
||||
- tar
|
||||
- unzip
|
||||
{% if grains.oscodename != 'focal' %}
|
||||
- python3-rich
|
||||
{% endif %}
|
||||
|
||||
{% if grains.oscodename == 'focal' %}
|
||||
# since Ubuntu requires and internet connection we can use pip to install modules
|
||||
python3-pip:
|
||||
pkg.installed
|
||||
@@ -34,34 +42,45 @@ python-rich:
|
||||
- target: /usr/local/lib/python3.8/dist-packages/
|
||||
- require:
|
||||
- pkg: python3-pip
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if GLOBALS.os_family == 'RedHat' %}
|
||||
|
||||
remove_mariadb:
|
||||
pkg.removed:
|
||||
- name: mariadb-devel
|
||||
|
||||
{% elif GLOBALS.os == 'Rocky' %}
|
||||
commonpkgs:
|
||||
pkg.installed:
|
||||
- skip_suggestions: True
|
||||
- pkgs:
|
||||
- wget
|
||||
- jq
|
||||
- tcpdump
|
||||
- httpd-tools
|
||||
- net-tools
|
||||
- curl
|
||||
- sqlite
|
||||
- mariadb-devel
|
||||
- python3-dnf-plugin-versionlock
|
||||
- nmap-ncat
|
||||
- yum-utils
|
||||
- curl
|
||||
- device-mapper-persistent-data
|
||||
- lvm2
|
||||
- openssl
|
||||
- fuse
|
||||
- fuse-libs
|
||||
- fuse-overlayfs
|
||||
- fuse-common
|
||||
- fuse3
|
||||
- fuse3-libs
|
||||
- git
|
||||
- httpd-tools
|
||||
- jq
|
||||
- lvm2
|
||||
- net-tools
|
||||
- nmap-ncat
|
||||
- procps-ng
|
||||
- python3-docker
|
||||
- python3-m2crypto
|
||||
- rsync
|
||||
- python3-rich
|
||||
- python3-pyyaml
|
||||
- python3-watchdog
|
||||
- python3-packaging
|
||||
- python3-pyyaml
|
||||
- python3-rich
|
||||
- rsync
|
||||
- sqlite
|
||||
- tcpdump
|
||||
- unzip
|
||||
- wget
|
||||
- yum-utils
|
||||
|
||||
{% endif %}
|
||||
|
||||
@@ -19,4 +19,5 @@ soup_manager_scripts:
|
||||
- source: salt://manager/tools/sbin
|
||||
- include_pat:
|
||||
- so-firewall
|
||||
- soup
|
||||
- so-repo-sync
|
||||
- soup
|
||||
|
||||
@@ -5,7 +5,16 @@
|
||||
# https://securityonion.net/license; you may not use this file except in compliance with the
|
||||
# Elastic License 2.0.
|
||||
|
||||
ELASTIC_AGENT_TARBALL_VERSION="8.7.1"
|
||||
# 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.8.2"
|
||||
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"
|
||||
|
||||
@@ -145,13 +154,11 @@ check_salt_minion_status() {
|
||||
return $status
|
||||
}
|
||||
|
||||
|
||||
|
||||
copy_new_files() {
|
||||
# Copy new files over to the salt dir
|
||||
cd $UPDATE_DIR
|
||||
rsync -a salt $DEFAULT_SALT_DIR/
|
||||
rsync -a pillar $DEFAULT_SALT_DIR/
|
||||
rsync -a salt $DEFAULT_SALT_DIR/ --delete
|
||||
rsync -a pillar $DEFAULT_SALT_DIR/ --delete
|
||||
chown -R socore:socore $DEFAULT_SALT_DIR/
|
||||
chmod 755 $DEFAULT_SALT_DIR/pillar/firewall/addfirewall.sh
|
||||
cd /tmp
|
||||
@@ -161,6 +168,34 @@ disable_fastestmirror() {
|
||||
sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/fastestmirror.conf
|
||||
}
|
||||
|
||||
download_and_verify() {
|
||||
source_url=$1
|
||||
source_md5_url=$2
|
||||
dest_file=$3
|
||||
md5_file=$4
|
||||
expand_dir=$5
|
||||
|
||||
if [[ -n "$expand_dir" ]]; then
|
||||
mkdir -p "$expand_dir"
|
||||
fi
|
||||
|
||||
if ! verify_md5_checksum "$dest_file" "$md5_file"; then
|
||||
retry 15 10 "curl --fail --retry 5 --retry-delay 15 -L '$source_url' --output '$dest_file'" "" ""
|
||||
retry 15 10 "curl --fail --retry 5 --retry-delay 15 -L '$source_md5_url' --output '$md5_file'" "" ""
|
||||
|
||||
if verify_md5_checksum "$dest_file" "$md5_file"; then
|
||||
echo "Source file and checksum are good."
|
||||
else
|
||||
echo "Unable to download and verify the source file and checksum."
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "$expand_dir" ]]; then
|
||||
tar -xf "$dest_file" -C "$expand_dir"
|
||||
fi
|
||||
}
|
||||
|
||||
elastic_license() {
|
||||
|
||||
read -r -d '' message <<- EOM
|
||||
@@ -199,19 +234,20 @@ get_random_value() {
|
||||
}
|
||||
|
||||
gpg_rpm_import() {
|
||||
if [[ "$OS" == "rocky" ]]; then
|
||||
if [[ $is_oracle ]]; then
|
||||
if [[ "$WHATWOULDYOUSAYYAHDOHERE" == "setup" ]]; then
|
||||
local RPMKEYSLOC="../salt/repo/client/files/rocky/keys"
|
||||
local RPMKEYSLOC="../salt/repo/client/files/$OS/keys"
|
||||
else
|
||||
local RPMKEYSLOC="$UPDATE_DIR/salt/repo/client/files/rocky/keys"
|
||||
local RPMKEYSLOC="$UPDATE_DIR/salt/repo/client/files/$OS/keys"
|
||||
fi
|
||||
|
||||
RPMKEYS=('RPM-GPG-KEY-rockyofficial' 'RPM-GPG-KEY-EPEL-9' 'SALT-PROJECT-GPG-PUBKEY-2023.pub' 'docker.pub' 'securityonion.pub')
|
||||
|
||||
for RPMKEY in "${RPMKEYS[@]}"; do
|
||||
RPMKEYS=('RPM-GPG-KEY-oracle' 'RPM-GPG-KEY-EPEL-9' 'SALT-PROJECT-GPG-PUBKEY-2023.pub' 'docker.pub' 'securityonion.pub')
|
||||
for RPMKEY in "${RPMKEYS[@]}"; do
|
||||
rpm --import $RPMKEYSLOC/$RPMKEY
|
||||
echo "Imported $RPMKEY"
|
||||
done
|
||||
elif [[ $is_rpm ]]; then
|
||||
echo "Importing the security onion GPG key"
|
||||
rpm --import ../salt/repo/client/files/oracle/keys/securityonion.pub
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -224,12 +260,15 @@ init_monitor() {
|
||||
|
||||
if [[ $MONITORNIC == "bond0" ]]; then
|
||||
BIFACES=$(lookup_bond_interfaces)
|
||||
for i in rx tx sg tso ufo gso gro lro rx-vlan-offload tx-vlan-offload generic-receive-offload generic-segmentation-offload tcp-segmentation-offload; do
|
||||
ethtool -K "$MONITORNIC" "$i" off;
|
||||
done
|
||||
else
|
||||
BIFACES=$MONITORNIC
|
||||
fi
|
||||
|
||||
for DEVICE_IFACE in $BIFACES; do
|
||||
for i in rx tx sg tso ufo gso gro lro; do
|
||||
for i in rx tx sg tso ufo gso gro lro rx-vlan-offload tx-vlan-offload generic-receive-offload generic-segmentation-offload tcp-segmentation-offload; do
|
||||
ethtool -K "$DEVICE_IFACE" "$i" off;
|
||||
done
|
||||
ip link set dev "$DEVICE_IFACE" arp off multicast off allmulticast off promisc on
|
||||
@@ -395,19 +434,26 @@ salt_minion_count() {
|
||||
|
||||
}
|
||||
|
||||
set_cron_service_name() {
|
||||
if [[ "$OS" == "rocky" ]]; then
|
||||
cron_service_name="crond"
|
||||
else
|
||||
cron_service_name="cron"
|
||||
fi
|
||||
}
|
||||
|
||||
set_os() {
|
||||
if [ -f /etc/redhat-release ]; then
|
||||
OS=rocky
|
||||
if grep -q "Rocky Linux release 9" /etc/redhat-release; then
|
||||
OS=rocky
|
||||
OSVER=9
|
||||
is_rocky=true
|
||||
elif grep -q "CentOS Stream release 9" /etc/redhat-release; then
|
||||
OS=centos
|
||||
OSVER=9
|
||||
is_centos=true
|
||||
elif grep -q "Oracle Linux Server release 9" /etc/system-release; then
|
||||
OS=oel
|
||||
OSVER=9
|
||||
is_oracle=true
|
||||
fi
|
||||
cron_service_name="crond"
|
||||
else
|
||||
OS=ubuntu
|
||||
is_ubuntu=true
|
||||
cron_service_name="cron"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -416,7 +462,7 @@ set_minionid() {
|
||||
}
|
||||
|
||||
set_palette() {
|
||||
if [ "$OS" == ubuntu ]; then
|
||||
if [[ $is_deb ]]; then
|
||||
update-alternatives --set newt-palette /etc/newt/palette.original
|
||||
fi
|
||||
}
|
||||
@@ -463,6 +509,11 @@ has_uppercase() {
|
||||
|| return 1
|
||||
}
|
||||
|
||||
update_elastic_agent() {
|
||||
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"
|
||||
}
|
||||
|
||||
valid_cidr() {
|
||||
# Verify there is a backslash in the string
|
||||
echo "$1" | grep -qP "^[^/]+/[^/]+$" || return 1
|
||||
@@ -616,6 +667,23 @@ valid_username() {
|
||||
echo "$user" | grep -qP '^[a-z_]([a-z0-9_-]{0,31}|[a-z0-9_-]{0,30}\$)$' && return 0 || return 1
|
||||
}
|
||||
|
||||
verify_md5_checksum() {
|
||||
data_file=$1
|
||||
md5_file=${2:-${data_file}.md5}
|
||||
|
||||
if [[ ! -f "$dest_file" || ! -f "$md5_file" ]]; then
|
||||
return 2
|
||||
fi
|
||||
|
||||
SOURCEHASH=$(md5sum "$data_file" | awk '{ print $1 }')
|
||||
HASH=$(cat "$md5_file")
|
||||
|
||||
if [[ "$HASH" == "$SOURCEHASH" ]]; then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
wait_for_web_response() {
|
||||
url=$1
|
||||
expected=$2
|
||||
|
||||
233
salt/common/tools/sbin/so-log-check
Executable file
233
salt/common/tools/sbin/so-log-check
Executable file
@@ -0,0 +1,233 @@
|
||||
#!/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-common
|
||||
|
||||
RECENT_LOG_LINES=200
|
||||
EXCLUDE_STARTUP_ERRORS=N
|
||||
EXCLUDE_FALSE_POSITIVE_ERRORS=N
|
||||
EXCLUDE_KNOWN_ERRORS=N
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--exclude-connection-errors)
|
||||
EXCLUDE_STARTUP_ERRORS=Y
|
||||
;;
|
||||
--exclude-false-positives)
|
||||
EXCLUDE_FALSE_POSITIVE_ERRORS=Y
|
||||
;;
|
||||
--exclude-known-errors)
|
||||
EXCLUDE_KNOWN_ERRORS=Y
|
||||
;;
|
||||
--unknown)
|
||||
EXCLUDE_STARTUP_ERRORS=Y
|
||||
EXCLUDE_FALSE_POSITIVE_ERRORS=Y
|
||||
EXCLUDE_KNOWN_ERRORS=Y
|
||||
;;
|
||||
--recent-log-lines)
|
||||
shift
|
||||
RECENT_LOG_LINES=$1
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 [options]"
|
||||
echo ""
|
||||
echo "where options are:"
|
||||
echo " --recent-log-lines N looks at the most recent N log lines per file or container; defaults to 200"
|
||||
echo " --exclude-connection-errors exclude errors caused by a recent server or container restart"
|
||||
echo " --exclude-false-positives exclude logs that are known false positives"
|
||||
echo " --exclude-known-errors exclude errors that are known and non-critical issues"
|
||||
echo " --unknown exclude everything mentioned above; only show unknown errors"
|
||||
echo ""
|
||||
echo "A non-zero return value indicates errors were found"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
echo "Security Onion Log Check - $(date)"
|
||||
echo "-------------------------------------------"
|
||||
echo ""
|
||||
echo "- RECENT_LOG_LINES: $RECENT_LOG_LINES"
|
||||
echo "- EXCLUDE_STARTUP_ERRORS: $EXCLUDE_STARTUP_ERRORS"
|
||||
echo "- EXCLUDE_FALSE_POSITIVE_ERRORS: $EXCLUDE_FALSE_POSITIVE_ERRORS"
|
||||
echo "- EXCLUDE_KNOWN_ERRORS: $EXCLUDE_KNOWN_ERRORS"
|
||||
echo ""
|
||||
|
||||
function status() {
|
||||
header "$1"
|
||||
}
|
||||
|
||||
function exclude_container() {
|
||||
name=$1
|
||||
|
||||
exclude_id=$(docker ps | grep "$name" | awk '{print $1}')
|
||||
if [[ -n "$exclude_id" ]]; then
|
||||
CONTAINER_IDS=$(echo $CONTAINER_IDS | sed -e "s/$exclude_id//g")
|
||||
return $?
|
||||
fi
|
||||
return $?
|
||||
}
|
||||
|
||||
function exclude_log() {
|
||||
name=$1
|
||||
|
||||
cat /tmp/log_check_files | grep -v $name > /tmp/log_check_files.new
|
||||
mv /tmp/log_check_files.new /tmp/log_check_files
|
||||
}
|
||||
|
||||
function check_for_errors() {
|
||||
if cat /tmp/log_check | grep -i error | grep -vEi "$EXCLUDED_ERRORS"; then
|
||||
RESULT=1
|
||||
fi
|
||||
}
|
||||
|
||||
EXCLUDED_ERRORS="__LOG_CHECK_PLACEHOLDER_EXCLUSION__"
|
||||
|
||||
if [[ $EXCLUDE_STARTUP_ERRORS == 'Y' ]]; then
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|database is locked" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|econnreset" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|unreachable" # server not yet ready (logstash waiting on elastic)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|shutdown process" # server not yet ready (logstash waiting on elastic)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|contain valid certificates" # server not yet ready (logstash waiting on elastic)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|failedaction" # server not yet ready (logstash waiting on elastic)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|no route to host" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|not running" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|unavailable" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|request.py" # server not yet ready (python stack output)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|httperror" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|servfail" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|connect" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|missing shards" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|failed to send metrics" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|broken pipe" # server not yet ready
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|status: 502" # server not yet ready (nginx waiting on upstream)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|timeout exceeded" # server not yet ready (telegraf waiting on elasticsearch)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|influxsize kbytes" # server not yet ready (telegraf waiting on influx)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|expected field at" # server not yet ready (telegraf waiting on health data)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|cached the public key" # server not yet ready (salt minion waiting on key acceptance)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|no ingest nodes" # server not yet ready (logstash waiting on elastic)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|failed to poll" # server not yet ready (sensoroni waiting on soc)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|minions returned with non" # server not yet ready (salt waiting on minions)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|so_long_term" # server not yet ready (influxdb not yet setup)
|
||||
fi
|
||||
|
||||
if [[ $EXCLUDE_FALSE_POSITIVE_ERRORS == 'Y' ]]; then
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|elastalert_status_error" # false positive
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|elastalert_error" # false positive
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|error: '0'" # false positive
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|errors_index" # false positive
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|noerror" # false positive
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|outofmemoryerror" # false positive (elastic command line)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|adding component template" # false positive (elastic security)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|adding index template" # false positive (elastic security)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|fs_errors" # false positive (suricata stats)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|error-template" # false positive (elastic templates)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|deprecated" # false positive (playbook)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|windows" # false positive (playbook)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|could cause errors" # false positive (playbook)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|_error.yml" # false positive (playbook)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|id.orig_h" # false positive (zeek test data)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|emerging-all.rules" # false positive (error in rulename)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|invalid query input" # false positive (Invalid user input in hunt query)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|example" # false positive (example test data)
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|status 200" # false positive (request successful, contained error string in content)
|
||||
fi
|
||||
|
||||
if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|eof"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|raise" # redis/python generic stack line, rely on other lines for actual error
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|fail\\(error\\)" # redis/python generic stack line, rely on other lines for actual error
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|urlerror" # idstools connection timeout
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|timeouterror" # idstools connection timeout
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|forbidden" # playbook
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|_ml" # Elastic ML errors
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|context canceled" # elastic agent during shutdown
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|exited with code 128" # soctopus errors during forced restart by highstate
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|geoip databases update" # airgap can't update GeoIP DB
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|filenotfounderror" # bug in 2.4.10 filecheck salt state caused duplicate cronjobs
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|salt-minion-check" # bug in early 2.4 place Jinja script in non-jinja salt dir causing cron output errors
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|generating elastalert config" # playbook expected error
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|activerecord" # playbook expected error
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|monitoring.metrics" # known issue with elastic agent casting the field incorrectly if an integer value shows up before a float
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|repodownload.conf" # known issue with reposync on pre-2.4.20
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|missing versions record" # stenographer corrupt index
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|soc.field." # known ingest type collisions issue with earlier versions of SO
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|iteration"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|communication packets"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|use of closed"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|bookkeeper"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|noindices"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|failed to start transient scope"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|so-user.lock exists"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|systemd-run"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|retcode: 1"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|telemetry-task"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|redisqueue"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|fleet_detail_query"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|num errors=0"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|provisioning/alerting"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|provisioning/notifiers"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|provisoning/plugins"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|active-responses.log"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|scanentropy"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|integration policy"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|blob unknown"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|token required"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|zeekcaptureloss"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|unable to create detection"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|error installing new prebuilt rules"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|parent.error"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|req.LocalMeta.host.ip" # known issue in GH
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|sendmail" # zeek
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|stats.log"
|
||||
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|context deadline exceeded"
|
||||
fi
|
||||
|
||||
RESULT=0
|
||||
|
||||
# Check Security Onion container stdout/stderr logs
|
||||
CONTAINER_IDS=$(docker ps -q)
|
||||
exclude_container so-kibana # kibana error logs are too verbose with large varieties of errors most of which are temporary
|
||||
exclude_container so-idstools # ignore due to known issues and noisy logging
|
||||
exclude_container so-playbook # ignore due to several playbook known issues
|
||||
|
||||
for container_id in $CONTAINER_IDS; do
|
||||
container_name=$(docker ps --format json | jq ". | select(.ID==\"$container_id\")|.Names")
|
||||
status "Checking container $container_name"
|
||||
docker logs -n $RECENT_LOG_LINES $container_id > /tmp/log_check 2>&1
|
||||
check_for_errors
|
||||
done
|
||||
|
||||
# Check Security Onion related log files
|
||||
find /opt/so/log/ /nsm -name \*.log > /tmp/log_check_files
|
||||
if [[ -f /var/log/cron ]]; then
|
||||
echo "/var/log/cron" >> /tmp/log_check_files
|
||||
fi
|
||||
exclude_log "kibana.log" # kibana error logs are too verbose with large varieties of errors most of which are temporary
|
||||
exclude_log "spool" # disregard zeek analyze logs as this is data specific
|
||||
exclude_log "import" # disregard imported test data the contains error strings
|
||||
exclude_log "update.log" # ignore playbook updates due to several known issues
|
||||
exclude_log "playbook.log" # ignore due to several playbook known issues
|
||||
|
||||
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
|
||||
check_for_errors
|
||||
done
|
||||
|
||||
# Cleanup temp files
|
||||
rm -f /tmp/log_check_files
|
||||
rm -f /tmp/log_check
|
||||
|
||||
if [[ $RESULT -eq 0 ]]; then
|
||||
echo -e "\nResult: No errors found"
|
||||
else
|
||||
echo -e "\nResult: One or more errors found"
|
||||
fi
|
||||
|
||||
exit $RESULT
|
||||
@@ -103,7 +103,7 @@ def output(options, console, code, data):
|
||||
def check_container_status(options, console):
|
||||
code = 0
|
||||
cli = "docker"
|
||||
proc = subprocess.run([cli, 'ps', '--format', '{{json .}}'], stdout=subprocess.PIPE, encoding="utf-8")
|
||||
proc = subprocess.run([cli, 'ps', '--format', 'json'], stdout=subprocess.PIPE, encoding="utf-8")
|
||||
if proc.returncode != 0:
|
||||
fail("Container system error; unable to obtain container process statuses")
|
||||
|
||||
|
||||
@@ -5,4 +5,14 @@
|
||||
# https://securityonion.net/license; you may not use this file except in compliance with the
|
||||
# Elastic License 2.0.
|
||||
|
||||
. /usr/sbin/so-common
|
||||
|
||||
set -e
|
||||
|
||||
# Playback live sample data onto monitor interface
|
||||
so-tcpreplay /opt/samples/* 2> /dev/null
|
||||
|
||||
# Ingest sample pfsense log entry
|
||||
if is_sensor_node; then
|
||||
echo "<134>$(date '+%b %d %H:%M:%S') filterlog[31624]: 84,,,1567509287,igb0.244,match,pass,in,4,0x0,,64,0,0,DF,6,tcp,64,192.168.1.1,10.10.10.10,56320,443,0,S,3333585167,,65535,,mss;nop;wscale;nop;nop;TS;sackOK;eol" | nc -uv -w1 127.0.0.1 514 > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
# https://securityonion.net/license; you may not use this file except in compliance with the
|
||||
# Elastic License 2.0.
|
||||
|
||||
source /usr/sbin/so-common
|
||||
doc_desktop_url="$DOC_BASE_URL/desktop.html"
|
||||
|
||||
{# we only want the script to install the desktop if it is Rocky -#}
|
||||
{% if grains.os == 'Rocky' -%}
|
||||
{# we only want the script to install the desktop if it is OEL -#}
|
||||
{% if grains.os == 'OEL' -%}
|
||||
{# if this is a manager -#}
|
||||
{% if grains.master == grains.id.split('_')|first -%}
|
||||
|
||||
source /usr/sbin/so-common
|
||||
doc_desktop_url="$DOC_BASE_URL/desktop.html"
|
||||
pillar_file="/opt/so/saltstack/local/pillar/minions/{{grains.id}}.sls"
|
||||
pillar_file="/opt/so/saltstack/local/pillar/minions/adv_{{grains.id}}.sls"
|
||||
|
||||
if [ -f "$pillar_file" ]; then
|
||||
if ! grep -q "^desktop:$" "$pillar_file"; then
|
||||
@@ -65,7 +65,7 @@ if [ -f "$pillar_file" ]; then
|
||||
fi
|
||||
else # desktop is already added
|
||||
echo "The desktop pillar already exists in $pillar_file."
|
||||
echo "To enable/disable the gui, set 'desktop:gui:enabled' to true or false in $pillar_file."
|
||||
echo "To enable/disable the gui, set 'desktop:gui:enabled' to true or false in $pillar_file. Alternatively, this can be set in the SOC UI under advanced."
|
||||
echo "Additional documentation can be found at $doc_desktop_url."
|
||||
fi
|
||||
else # if the pillar file doesn't exist
|
||||
@@ -75,17 +75,22 @@ fi
|
||||
{#- if this is not a manager #}
|
||||
{% else -%}
|
||||
|
||||
echo "Since this is not a manager, the pillar values to enable Security Onion Desktop must be set manually. Please view the documentation at $doc_desktop_url."
|
||||
echo "Since this is not a manager, the pillar values to enable Security Onion Desktop must be set manually. This can be enabled in the SOC UI under advanced by adding the following:"
|
||||
echo "desktop:"
|
||||
echo " gui:"
|
||||
echo " enabled: true"
|
||||
echo ""
|
||||
echo "Please view the documentation at $doc_desktop_url."
|
||||
|
||||
{#- endif if this is a manager #}
|
||||
{% endif -%}
|
||||
|
||||
{#- if not Rocky #}
|
||||
{#- if not OEL #}
|
||||
{%- else %}
|
||||
|
||||
echo "The Security Onion Desktop can only be installed on Rocky Linux. Please view the documentation at $doc_desktop_url."
|
||||
echo "The Security Onion Desktop can only be installed on Oracle Linux. Please view the documentation at $doc_desktop_url."
|
||||
|
||||
{#- endif grains.os == Rocky #}
|
||||
{#- endif grains.os == OEL #}
|
||||
{% endif -%}
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -27,6 +27,8 @@ Imports one or more evtx files into Security Onion. The evtx files will be analy
|
||||
Options:
|
||||
--json Outputs summary in JSON format. Implies --quiet.
|
||||
--quiet Silences progress information to stdout.
|
||||
--shift Adds a time shift. Accepts a single argument that is intended to be the date of the last record, and shifts the dates of the previous records accordingly.
|
||||
Ex. sudo so-import-evtx --shift "2023-08-01 01:01:01" example.evtx
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -44,6 +46,10 @@ while [[ $# -gt 0 ]]; do
|
||||
--quiet)
|
||||
quiet=1
|
||||
;;
|
||||
--shift)
|
||||
SHIFTDATE=$1
|
||||
shift
|
||||
;;
|
||||
-*)
|
||||
echo "Encountered unexpected parameter: $param"
|
||||
usage
|
||||
@@ -68,12 +74,14 @@ function status {
|
||||
function evtx2es() {
|
||||
EVTX=$1
|
||||
HASH=$2
|
||||
SHIFTDATE=$3
|
||||
|
||||
docker run --rm \
|
||||
-e "SHIFTTS=$SHIFTDATE" \
|
||||
-v "$EVTX:/tmp/data.evtx" \
|
||||
-v "/nsm/import/$HASH/evtx/:/tmp/evtx/" \
|
||||
-v "/nsm/import/evtx-end_newest:/tmp/newest" \
|
||||
-v "/nsm/import/evtx-start_oldest:/tmp/oldest" \
|
||||
-v "/nsm/import/$HASH/evtx-end_newest:/tmp/newest" \
|
||||
-v "/nsm/import/$HASH/evtx-start_oldest:/tmp/oldest" \
|
||||
--entrypoint "/evtx_calc_timestamps.sh" \
|
||||
{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-pcaptools:{{ VERSION }} >> $LOG_FILE 2>&1
|
||||
}
|
||||
@@ -103,17 +111,13 @@ INVALID_EVTXS_COUNT=0
|
||||
VALID_EVTXS_COUNT=0
|
||||
SKIPPED_EVTXS_COUNT=0
|
||||
|
||||
touch /nsm/import/evtx-start_oldest
|
||||
touch /nsm/import/evtx-end_newest
|
||||
|
||||
echo $START_OLDEST > /nsm/import/evtx-start_oldest
|
||||
echo $END_NEWEST > /nsm/import/evtx-end_newest
|
||||
|
||||
# paths must be quoted in case they include spaces
|
||||
for EVTX in $INPUT_FILES; do
|
||||
EVTX=$(/usr/bin/realpath "$EVTX")
|
||||
status "Processing Import: ${EVTX}"
|
||||
|
||||
if ! [ -z "$SHIFTDATE" ]; then
|
||||
status "- timeshifting logs to end date of $SHIFTDATE"
|
||||
fi
|
||||
# generate a unique hash to assist with dedupe checks
|
||||
HASH=$(md5sum "${EVTX}" | awk '{ print $1 }')
|
||||
HASH_DIR=/nsm/import/${HASH}
|
||||
@@ -131,12 +135,19 @@ for EVTX in $INPUT_FILES; do
|
||||
status "- this EVTX has already been imported; skipping"
|
||||
SKIPPED_EVTXS_COUNT=$((SKIPPED_EVTXS_COUNT + 1))
|
||||
else
|
||||
# create EVTX directory
|
||||
EVTX_DIR=$HASH_DIR/evtx
|
||||
mkdir -p $EVTX_DIR
|
||||
# create import timestamp files
|
||||
for i in evtx-start_oldest evtx-end_newest; do
|
||||
if ! [ -f "$i" ]; then
|
||||
touch /nsm/import/$HASH/$i
|
||||
fi
|
||||
done
|
||||
|
||||
# import evtx and write them to import ingest pipeline
|
||||
status "- importing logs to Elasticsearch..."
|
||||
evtx2es "${EVTX}" $HASH
|
||||
evtx2es "${EVTX}" $HASH "$SHIFTDATE"
|
||||
if [[ $? -ne 0 ]]; then
|
||||
INVALID_EVTXS_COUNT=$((INVALID_EVTXS_COUNT + 1))
|
||||
status "- WARNING: This evtx file may not have fully imported successfully"
|
||||
@@ -144,28 +155,37 @@ for EVTX in $INPUT_FILES; do
|
||||
VALID_EVTXS_COUNT=$((VALID_EVTXS_COUNT + 1))
|
||||
fi
|
||||
|
||||
# compare $START to $START_OLDEST
|
||||
START=$(cat /nsm/import/evtx-start_oldest)
|
||||
START_COMPARE=$(date -d $START +%s)
|
||||
START_OLDEST_COMPARE=$(date -d $START_OLDEST +%s)
|
||||
if [ $START_COMPARE -lt $START_OLDEST_COMPARE ]; then
|
||||
START_OLDEST=$START
|
||||
fi
|
||||
|
||||
# compare $ENDNEXT to $END_NEWEST
|
||||
END=$(cat /nsm/import/evtx-end_newest)
|
||||
ENDNEXT=`date +%Y-%m-%d --date="$END 1 day"`
|
||||
ENDNEXT_COMPARE=$(date -d $ENDNEXT +%s)
|
||||
END_NEWEST_COMPARE=$(date -d $END_NEWEST +%s)
|
||||
if [ $ENDNEXT_COMPARE -gt $END_NEWEST_COMPARE ]; then
|
||||
END_NEWEST=$ENDNEXT
|
||||
fi
|
||||
|
||||
cp -f "${EVTX}" "${EVTX_DIR}"/data.evtx
|
||||
chmod 644 "${EVTX_DIR}"/data.evtx
|
||||
|
||||
fi # end of valid evtx
|
||||
|
||||
# determine start and end and make sure they aren't reversed
|
||||
START=$(cat /nsm/import/$HASH/evtx-start_oldest)
|
||||
END=$(cat /nsm/import/$HASH/evtx-end_newest)
|
||||
START_EPOCH=`date -d "$START" +"%s"`
|
||||
END_EPOCH=`date -d "$END" +"%s"`
|
||||
if [ "$START_EPOCH" -gt "$END_EPOCH" ]; then
|
||||
TEMP=$START
|
||||
START=$END
|
||||
END=$TEMP
|
||||
fi
|
||||
|
||||
# compare $START to $START_OLDEST
|
||||
START_COMPARE=$(date -d $START +%s)
|
||||
START_OLDEST_COMPARE=$(date -d $START_OLDEST +%s)
|
||||
if [ $START_COMPARE -lt $START_OLDEST_COMPARE ]; then
|
||||
START_OLDEST=$START
|
||||
fi
|
||||
|
||||
# compare $ENDNEXT to $END_NEWEST
|
||||
ENDNEXT=`date +%Y-%m-%d --date="$END 1 day"`
|
||||
ENDNEXT_COMPARE=$(date -d $ENDNEXT +%s)
|
||||
END_NEWEST_COMPARE=$(date -d $END_NEWEST +%s)
|
||||
if [ $ENDNEXT_COMPARE -gt $END_NEWEST_COMPARE ]; then
|
||||
END_NEWEST=$ENDNEXT
|
||||
fi
|
||||
|
||||
status
|
||||
|
||||
done # end of for-loop processing evtx files
|
||||
@@ -222,4 +242,4 @@ if [[ $json -eq 1 ]]; then
|
||||
}'''
|
||||
fi
|
||||
|
||||
exit $RESULT
|
||||
exit $RESULT
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/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
|
||||
# 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.
|
||||
|
||||
@@ -9,25 +9,26 @@
|
||||
|
||||
. /usr/sbin/so-common
|
||||
|
||||
appliance_check() {
|
||||
{%- if salt['grains.get']('sosmodel', '') %}
|
||||
APPLIANCE=1
|
||||
{%- if grains['sosmodel'] in ['SO2AMI01', 'SO2GCI01', 'SO2AZI01'] %}
|
||||
exit 0
|
||||
{%- endif %}
|
||||
DUDEYOUGOTADELL=$(dmidecode |grep Dell)
|
||||
if [[ -n $DUDEYOUGOTADELL ]]; then
|
||||
APPTYPE=dell
|
||||
else
|
||||
APPTYPE=sm
|
||||
fi
|
||||
mkdir -p /opt/so/log/raid
|
||||
|
||||
{%- else %}
|
||||
echo "This is not an appliance"
|
||||
exit 0
|
||||
{%- endif %}
|
||||
}
|
||||
{%- if salt['grains.get']('sosmodel', '') %}
|
||||
{%- set model = salt['grains.get']('sosmodel') %}
|
||||
model={{ model }}
|
||||
# Don't need cloud images to use this
|
||||
if [[ $model =~ ^(SO2AMI01|SO2AZI01|SO2GCI01)$ ]]; then
|
||||
exit 0
|
||||
fi
|
||||
{%- else %}
|
||||
echo "This is not an appliance"
|
||||
exit 0
|
||||
{%- endif %}
|
||||
if [[ $model =~ ^(SOS10K|SOS500|SOS1000|SOS1000F|SOS4000|SOSSN7200|SOSSNNV|SOSMN)$ ]]; then
|
||||
is_bossraid=true
|
||||
fi
|
||||
if [[ $model =~ ^(SOSSNNV|SOSMN)$ ]]; then
|
||||
is_swraid=true
|
||||
fi
|
||||
if [[ $model =~ ^(SOS10K|SOS500|SOS1000|SOS1000F|SOS4000|SOSSN7200)$ ]]; then
|
||||
is_hwraid=true
|
||||
fi
|
||||
|
||||
check_nsm_raid() {
|
||||
PERCCLI=$(/opt/raidtools/perccli/perccli64 /c0/v0 show|grep RAID|grep Optl)
|
||||
@@ -49,61 +50,44 @@ check_nsm_raid() {
|
||||
check_boss_raid() {
|
||||
MVCLI=$(/usr/local/bin/mvcli info -o vd |grep status |grep functional)
|
||||
|
||||
if [[ -n $DUDEYOUGOTADELL ]]; then
|
||||
if [[ -n $MVCLI ]]; then
|
||||
BOSSRAID=0
|
||||
else
|
||||
BOSSRAID=1
|
||||
fi
|
||||
if [[ -n $MVCLI ]]; then
|
||||
BOSSRAID=0
|
||||
else
|
||||
BOSSRAID=1
|
||||
fi
|
||||
}
|
||||
|
||||
check_software_raid() {
|
||||
if [[ -n $DUDEYOUGOTADELL ]]; then
|
||||
SWRC=$(grep "_" /proc/mdstat)
|
||||
|
||||
if [[ -n $SWRC ]]; then
|
||||
# RAID is failed in some way
|
||||
SWRAID=1
|
||||
else
|
||||
SWRAID=0
|
||||
fi
|
||||
SWRC=$(grep "_" /proc/mdstat)
|
||||
if [[ -n $SWRC ]]; then
|
||||
# RAID is failed in some way
|
||||
SWRAID=1
|
||||
else
|
||||
SWRAID=0
|
||||
fi
|
||||
}
|
||||
|
||||
# This script checks raid status if you use SO appliances
|
||||
# Set everything to 0
|
||||
SWRAID=0
|
||||
BOSSRAID=0
|
||||
HWRAID=0
|
||||
|
||||
# See if this is an appliance
|
||||
|
||||
appliance_check
|
||||
check_nsm_raid
|
||||
check_boss_raid
|
||||
{%- if salt['grains.get']('sosmodel', '') %}
|
||||
{%- if grains['sosmodel'] in ['SOSMN', 'SOSSNNV'] %}
|
||||
check_software_raid
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
|
||||
if [[ -n $SWRAID ]]; then
|
||||
if [[ $SWRAID == '0' && $BOSSRAID == '0' ]]; then
|
||||
RAIDSTATUS=0
|
||||
else
|
||||
RAIDSTATUS=1
|
||||
fi
|
||||
elif [[ -n $DUDEYOUGOTADELL ]]; then
|
||||
if [[ $BOSSRAID == '0' && $HWRAID == '0' ]]; then
|
||||
RAIDSTATUS=0
|
||||
else
|
||||
RAIDSTATUS=1
|
||||
fi
|
||||
elif [[ "$APPTYPE" == 'sm' ]]; then
|
||||
if [[ -n "$HWRAID" ]]; then
|
||||
RAIDSTATUS=0
|
||||
else
|
||||
RAIDSTATUS=1
|
||||
fi
|
||||
if [[ $is_hwraid ]]; then
|
||||
check_nsm_raid
|
||||
fi
|
||||
if [[ $is_bossraid ]]; then
|
||||
check_boss_raid
|
||||
fi
|
||||
if [[ $is_swraid ]]; then
|
||||
check_software_raid
|
||||
fi
|
||||
|
||||
echo "nsmraid=$RAIDSTATUS" > /opt/so/log/raid/status.log
|
||||
sum=$(($SWRAID + $BOSSRAID + $HWRAID))
|
||||
|
||||
if [[ $sum == "0" ]]; then
|
||||
RAIDSTATUS=0
|
||||
else
|
||||
RAIDSTATUS=1
|
||||
fi
|
||||
|
||||
echo "nsmraid=$RAIDSTATUS" > /opt/so/log/raid/status.log
|
||||
8
salt/desktop/files/00-background
Normal file
8
salt/desktop/files/00-background
Normal file
@@ -0,0 +1,8 @@
|
||||
# Specify the dconf path
|
||||
[org/gnome/desktop/background]
|
||||
|
||||
# Specify the path to the desktop background image file
|
||||
picture-uri='file:///usr/local/share/backgrounds/so-wallpaper.jpg'
|
||||
|
||||
# Specify one of the rendering options for the background image:
|
||||
picture-options='zoom'
|
||||
7
salt/desktop/files/session.jinja
Normal file
7
salt/desktop/files/session.jinja
Normal file
@@ -0,0 +1,7 @@
|
||||
# This file is managed by Salt in the desktop.xwindows state
|
||||
# It will not be overwritten if it already exists
|
||||
|
||||
[User]
|
||||
Session=gnome-classic
|
||||
Icon=/home/{{USERNAME}}/.face
|
||||
SystemAccount=false
|
||||
@@ -1,170 +1,278 @@
|
||||
{% from 'vars/globals.map.jinja' import GLOBALS %}
|
||||
|
||||
{# we only want this state to run it is CentOS #}
|
||||
{% if GLOBALS.os == 'Rocky' %}
|
||||
|
||||
{% if grains.os == 'OEL' %}
|
||||
|
||||
desktop_packages:
|
||||
pkg.installed:
|
||||
- pkgs:
|
||||
- ModemManager
|
||||
- ModemManager-glib
|
||||
- NetworkManager
|
||||
- NetworkManager-adsl
|
||||
- NetworkManager-bluetooth
|
||||
- NetworkManager-l2tp-gnome
|
||||
- NetworkManager-libreswan-gnome
|
||||
- NetworkManager-openconnect-gnome
|
||||
- NetworkManager-openvpn-gnome
|
||||
- NetworkManager-ppp
|
||||
- NetworkManager-pptp-gnome
|
||||
- NetworkManager-config-server
|
||||
- NetworkManager-libnm
|
||||
- NetworkManager-team
|
||||
- NetworkManager-tui
|
||||
- NetworkManager-wifi
|
||||
- NetworkManager-wwan
|
||||
- PackageKit
|
||||
- PackageKit-command-not-found
|
||||
- PackageKit-glib
|
||||
- PackageKit-gstreamer-plugin
|
||||
- aajohan-comfortaa-fonts
|
||||
- abattis-cantarell-fonts
|
||||
- acl
|
||||
- alsa-ucm
|
||||
- alsa-utils
|
||||
- anaconda
|
||||
- anaconda-install-env-deps
|
||||
- anaconda-live
|
||||
- at
|
||||
- attr
|
||||
- PackageKit-gtk3-module
|
||||
- audit
|
||||
- audit-libs
|
||||
- authselect
|
||||
- authselect-libs
|
||||
- avahi
|
||||
- avahi-glib
|
||||
- avahi-libs
|
||||
- baobab
|
||||
- basesystem
|
||||
- bash
|
||||
- bash-completion
|
||||
- bc
|
||||
- blktrace
|
||||
- bcache-tools
|
||||
- bluez
|
||||
- bluez-libs
|
||||
- bluez-obexd
|
||||
- bolt
|
||||
- bpftool
|
||||
- bzip2
|
||||
- bzip2-libs
|
||||
- c-ares
|
||||
- ca-certificates
|
||||
- cairo
|
||||
- cairo-gobject
|
||||
- cairomm
|
||||
- checkpolicy
|
||||
- chkconfig
|
||||
- chrome-gnome-shell
|
||||
- chromium
|
||||
- chrony
|
||||
- cinnamon
|
||||
- cinnamon-control-center
|
||||
- cinnamon-screensaver
|
||||
- cockpit
|
||||
- coreutils
|
||||
- cpio
|
||||
- cronie
|
||||
- crontabs
|
||||
- crypto-policies
|
||||
- crypto-policies-scripts
|
||||
- cryptsetup
|
||||
- curl
|
||||
- cyrus-sasl-plain
|
||||
- dbus
|
||||
- clutter
|
||||
- clutter-gst3
|
||||
- clutter-gtk
|
||||
- cogl
|
||||
- color-filesystem
|
||||
- colord
|
||||
- colord-gtk
|
||||
- colord-libs
|
||||
- conmon
|
||||
- cups
|
||||
- cups-client
|
||||
- cups-filesystem
|
||||
- cups-filters
|
||||
- cups-filters-libs
|
||||
- cups-ipptool
|
||||
- cups-libs
|
||||
- cups-pk-helper
|
||||
- dconf
|
||||
- dejavu-sans-fonts
|
||||
- dejavu-sans-mono-fonts
|
||||
- dejavu-serif-fonts
|
||||
- dnf
|
||||
- dnf-plugins-core
|
||||
- dos2unix
|
||||
- dosfstools
|
||||
- dracut-config-rescue
|
||||
- dracut-live
|
||||
- desktop-file-utils
|
||||
- dsniff
|
||||
- e2fsprogs
|
||||
- ed
|
||||
- efi-filesystem
|
||||
- efibootmgr
|
||||
- efivar-libs
|
||||
- eom
|
||||
- ethtool
|
||||
- f36-backgrounds-extras-gnome
|
||||
- f36-backgrounds-gnome
|
||||
- f37-backgrounds-extras-gnome
|
||||
- f37-backgrounds-gnome
|
||||
- evolution-data-server
|
||||
- evolution-data-server-langpacks
|
||||
- file
|
||||
- filesystem
|
||||
- firewall-config
|
||||
- firewalld
|
||||
- fprintd-pam
|
||||
- git
|
||||
- glibc
|
||||
- glibc-all-langpacks
|
||||
- flac-libs
|
||||
- flashrom
|
||||
- flatpak
|
||||
- flatpak-libs
|
||||
- flatpak-selinux
|
||||
- flatpak-session-helper
|
||||
- fontconfig
|
||||
- fonts-filesystem
|
||||
- foomatic
|
||||
- foomatic-db
|
||||
- foomatic-db-filesystem
|
||||
- foomatic-db-ppds
|
||||
- freetype
|
||||
- fuse
|
||||
- fuse-common
|
||||
- fuse-libs
|
||||
- fuse-overlayfs
|
||||
- fuse3
|
||||
- fuse3-libs
|
||||
- fwupd
|
||||
- fwupd-plugin-flashrom
|
||||
- gcr
|
||||
- gcr-base
|
||||
- gd
|
||||
- gdbm-libs
|
||||
- gdisk
|
||||
- gdk-pixbuf2
|
||||
- gdk-pixbuf2-modules
|
||||
- gdm
|
||||
- gedit
|
||||
- geoclue2
|
||||
- geoclue2-libs
|
||||
- geocode-glib
|
||||
- gettext
|
||||
- gettext-libs
|
||||
- ghostscript
|
||||
- ghostscript-tools-fonts
|
||||
- ghostscript-tools-printing
|
||||
- giflib
|
||||
- glx-utils
|
||||
- gmp
|
||||
- gnome-autoar
|
||||
- gnome-bluetooth
|
||||
- gnome-bluetooth-libs
|
||||
- gnome-calculator
|
||||
- gnome-characters
|
||||
- gnome-classic-session
|
||||
- gnome-color-manager
|
||||
- gnome-control-center
|
||||
- gnome-control-center-filesystem
|
||||
- gnome-desktop3
|
||||
- gnome-disk-utility
|
||||
- gnome-font-viewer
|
||||
- gnome-initial-setup
|
||||
- gnome-keyring
|
||||
- gnome-keyring-pam
|
||||
- gnome-logs
|
||||
- gnome-menus
|
||||
- gnome-online-accounts
|
||||
- gnome-remote-desktop
|
||||
- gnome-screenshot
|
||||
- gnome-session
|
||||
- gnome-session-wayland-session
|
||||
- gnome-session-xsession
|
||||
- gnome-settings-daemon
|
||||
- gnome-shell
|
||||
- gnome-shell-extension-apps-menu
|
||||
- gnome-shell-extension-background-logo
|
||||
- gnome-shell-extension-common
|
||||
- gnome-shell-extension-desktop-icons
|
||||
- gnome-shell-extension-launch-new-instance
|
||||
- gnome-shell-extension-places-menu
|
||||
- gnome-shell-extension-window-list
|
||||
- gnome-software
|
||||
- gnome-system-monitor
|
||||
- gnome-terminal
|
||||
- gnupg2
|
||||
- gnome-terminal-nautilus
|
||||
- gnome-tour
|
||||
- gnome-user-docs
|
||||
- gnome-video-effects
|
||||
- gobject-introspection
|
||||
- gom
|
||||
- google-droid-sans-fonts
|
||||
- google-noto-cjk-fonts-common
|
||||
- google-noto-emoji-color-fonts
|
||||
- google-noto-fonts-common
|
||||
- google-noto-sans-cjk-ttc-fonts
|
||||
- google-noto-sans-gurmukhi-fonts
|
||||
- google-noto-sans-sinhala-vf-fonts
|
||||
- google-noto-serif-cjk-ttc-fonts
|
||||
- grub2-common
|
||||
- grub2-pc-modules
|
||||
- grub2-tools
|
||||
- grub2-tools-efi
|
||||
- grub2-tools-extra
|
||||
- grub2-tools-minimal
|
||||
- grubby
|
||||
- gpgme
|
||||
- gpm-libs
|
||||
- graphene
|
||||
- graphite2
|
||||
- gsettings-desktop-schemas
|
||||
- gsm
|
||||
- gsound
|
||||
- gspell
|
||||
- gstreamer1
|
||||
- gstreamer1-plugins-bad-free
|
||||
- gstreamer1-plugins-base
|
||||
- gstreamer1-plugins-good
|
||||
- gstreamer1-plugins-good-gtk
|
||||
- gstreamer1-plugins-ugly-free
|
||||
- gtk-update-icon-cache
|
||||
- gtk2
|
||||
- gtk3
|
||||
- gtk4
|
||||
- gtkmm30
|
||||
- gtksourceview4
|
||||
- gutenprint
|
||||
- gutenprint-cups
|
||||
- gutenprint-doc
|
||||
- gutenprint-libs
|
||||
- gvfs
|
||||
- gvfs-client
|
||||
- gvfs-fuse
|
||||
- gvfs-goa
|
||||
- gvfs-gphoto2
|
||||
- gvfs-mtp
|
||||
- gvfs-smb
|
||||
- hostname
|
||||
- hyperv-daemons
|
||||
- ibus-anthy
|
||||
- ibus-hangul
|
||||
- ibus-libpinyin
|
||||
- ibus-libzhuyin
|
||||
- ibus-m17n
|
||||
- ibus-typing-booster
|
||||
- imsettings-systemd
|
||||
- initial-setup-gui
|
||||
- initscripts
|
||||
- gzip
|
||||
- harfbuzz
|
||||
- harfbuzz-icu
|
||||
- hdparm
|
||||
- hicolor-icon-theme
|
||||
- highcontrast-icon-theme
|
||||
- hplip-common
|
||||
- hplip-libs
|
||||
- hunspell
|
||||
- hunspell-en
|
||||
- hunspell-en-GB
|
||||
- hunspell-en-US
|
||||
- hunspell-filesystem
|
||||
- hyphen
|
||||
- ibus
|
||||
- ibus-gtk3
|
||||
- ibus-libs
|
||||
- ibus-setup
|
||||
- iio-sensor-proxy
|
||||
- ima-evm-utils
|
||||
- inih
|
||||
- initscripts-rename-device
|
||||
- iproute
|
||||
- iproute-tc
|
||||
- iprutils
|
||||
- iputils
|
||||
- irqbalance
|
||||
- iwl100-firmware
|
||||
- iwl1000-firmware
|
||||
- iwl105-firmware
|
||||
- iwl135-firmware
|
||||
- iwl2000-firmware
|
||||
- iwl2030-firmware
|
||||
- iwl3160-firmware
|
||||
- iwl5000-firmware
|
||||
- iwl5150-firmware
|
||||
- iwl6000g2a-firmware
|
||||
- iwl6000g2b-firmware
|
||||
- iwl6050-firmware
|
||||
- iwl7260-firmware
|
||||
- initscripts-service
|
||||
- iso-codes
|
||||
- jansson
|
||||
- jbig2dec-libs
|
||||
- jbigkit-libs
|
||||
- jomolhari-fonts
|
||||
- jose
|
||||
- jq
|
||||
- json-c
|
||||
- json-glib
|
||||
- julietaula-montserrat-fonts
|
||||
- kbd
|
||||
- kernel
|
||||
- kernel-modules
|
||||
- kernel-modules-extra
|
||||
- kernel-tools
|
||||
- kexec-tools
|
||||
- kbd-misc
|
||||
- khmer-os-system-fonts
|
||||
- kmod-kvdo
|
||||
- kpatch
|
||||
- kpatch-dnf
|
||||
- ledmon
|
||||
- less
|
||||
- langpacks-core-en
|
||||
- langpacks-core-font-en
|
||||
- langpacks-en
|
||||
- lcms2
|
||||
- libICE
|
||||
- libSM
|
||||
- libX11
|
||||
- libX11-common
|
||||
- libX11-xcb
|
||||
- libXau
|
||||
- libXcomposite
|
||||
- libXcursor
|
||||
- libXdamage
|
||||
- libXdmcp
|
||||
- libXext
|
||||
- libXfixes
|
||||
- libXfont2
|
||||
- libXft
|
||||
- libXi
|
||||
- libXinerama
|
||||
- libXmu
|
||||
- libXpm
|
||||
- libXrandr
|
||||
- libXrender
|
||||
- libXres
|
||||
- libXt
|
||||
- libXtst
|
||||
- libXv
|
||||
- libXxf86dga
|
||||
- libXxf86vm
|
||||
- libappstream-glib
|
||||
- liberation-fonts-common
|
||||
- liberation-mono-fonts
|
||||
- liberation-sans-fonts
|
||||
- liberation-serif-fonts
|
||||
- libertas-sd8787-firmware
|
||||
- libstoragemgmt
|
||||
- libsysfs
|
||||
- lightdm
|
||||
- linux-firmware
|
||||
- logrotate
|
||||
- libglvnd-gles
|
||||
- libglvnd-glx
|
||||
- libglvnd-opengl
|
||||
- libgnomekbd
|
||||
- libgomp
|
||||
- libgphoto2
|
||||
- lockdev
|
||||
- lohit-assamese-fonts
|
||||
- lohit-bengali-fonts
|
||||
- lohit-devanagari-fonts
|
||||
@@ -175,136 +283,160 @@ desktop_packages:
|
||||
- lohit-telugu-fonts
|
||||
- lshw
|
||||
- lsof
|
||||
- lsscsi
|
||||
- lvm2
|
||||
- mailcap
|
||||
- man-db
|
||||
- man-pages
|
||||
- mcelog
|
||||
- mdadm
|
||||
- memtest86+
|
||||
- metacity
|
||||
- mesa-dri-drivers
|
||||
- mesa-filesystem
|
||||
- mesa-libEGL
|
||||
- mesa-libGL
|
||||
- mesa-libgbm
|
||||
- mesa-libglapi
|
||||
- mesa-libxatracker
|
||||
- mesa-vulkan-drivers
|
||||
- microcode_ctl
|
||||
- mlocate
|
||||
- mobile-broadband-provider-info
|
||||
- mono-devel
|
||||
- mpfr
|
||||
- mpg123-libs
|
||||
- mtdev
|
||||
- mtr
|
||||
- nano
|
||||
- ncurses
|
||||
- nemo-fileroller
|
||||
- nemo-image-converter
|
||||
- nemo-preview
|
||||
- nautilus
|
||||
- nautilus-extensions
|
||||
- net-tools
|
||||
- netronome-firmware
|
||||
- ngrep
|
||||
- nm-connection-editor
|
||||
- nmap-ncat
|
||||
- nvme-cli
|
||||
- open-vm-tools-desktop
|
||||
- openssh-clients
|
||||
- openssh-server
|
||||
- p11-kit
|
||||
- paktype-naskh-basic-fonts
|
||||
- parole
|
||||
- parted
|
||||
- passwd
|
||||
- oracle-backgrounds
|
||||
- oracle-indexhtml
|
||||
- oracle-logos
|
||||
- pcaudiolib
|
||||
- pciutils
|
||||
- pinentry
|
||||
- pinentry-gnome3
|
||||
- pinfo
|
||||
- pipewire
|
||||
- pipewire-alsa
|
||||
- pipewire-gstreamer
|
||||
- pipewire-jack-audio-connection-kit
|
||||
- pipewire-libs
|
||||
- pipewire-pulseaudio
|
||||
- pipewire-utils
|
||||
- pixman
|
||||
- plymouth
|
||||
- plymouth-core-libs
|
||||
- plymouth-graphics-libs
|
||||
- plymouth-plugin-label
|
||||
- plymouth-plugin-two-step
|
||||
- plymouth-scripts
|
||||
- plymouth-system-theme
|
||||
- plymouth-theme-spinner
|
||||
- policycoreutils
|
||||
- powerline
|
||||
- ppp
|
||||
- prefixdevname
|
||||
- procps-ng
|
||||
- psacct
|
||||
- policycoreutils-python-utils
|
||||
- pt-sans-fonts
|
||||
- python3-libselinux
|
||||
- python3-scapy
|
||||
- qemu-guest-agent
|
||||
- quota
|
||||
- realmd
|
||||
- redshift-gtk
|
||||
- rocky-backgrounds
|
||||
- rocky-release
|
||||
- rootfiles
|
||||
- rpm
|
||||
- rpm-plugin-audit
|
||||
- rsync
|
||||
- rsyslog
|
||||
- rsyslog-gnutls
|
||||
- rsyslog-gssapi
|
||||
- rsyslog-relp
|
||||
- salt-minion
|
||||
- pulseaudio-libs
|
||||
- pulseaudio-libs-glib2
|
||||
- pulseaudio-utils
|
||||
- sane-airscan
|
||||
- sane-backends
|
||||
- sane-backends-drivers-cameras
|
||||
- sane-backends-drivers-scanners
|
||||
- selinux-policy-targeted
|
||||
- setroubleshoot
|
||||
- setup
|
||||
- sg3_utils
|
||||
- sg3_utils-libs
|
||||
- shadow-utils
|
||||
- sane-backends-libs
|
||||
- sil-abyssinica-fonts
|
||||
- sil-nuosu-fonts
|
||||
- sil-padauk-fonts
|
||||
- slick-greeter
|
||||
- slick-greeter-cinnamon
|
||||
- smartmontools
|
||||
- smc-meera-fonts
|
||||
- sos
|
||||
- snappy
|
||||
- sound-theme-freedesktop
|
||||
- soundtouch
|
||||
- securityonion-networkminer
|
||||
- speech-dispatcher
|
||||
- speech-dispatcher-espeak-ng
|
||||
- speex
|
||||
- spice-vdagent
|
||||
- ssldump
|
||||
- sssd
|
||||
- sssd-common
|
||||
- sssd-kcm
|
||||
- stix-fonts
|
||||
- strace
|
||||
- sudo
|
||||
- switcheroo-control
|
||||
- symlinks
|
||||
- syslinux
|
||||
- systemd
|
||||
- systemd-udev
|
||||
- tar
|
||||
- system-config-printer-libs
|
||||
- system-config-printer-udev
|
||||
- taglib
|
||||
- tcpdump
|
||||
- tcpflow
|
||||
- teamd
|
||||
- thai-scalable-fonts-common
|
||||
- thai-scalable-waree-fonts
|
||||
- time
|
||||
- tmux
|
||||
- tmux-powerline
|
||||
- transmission
|
||||
- totem
|
||||
- totem-pl-parser
|
||||
- totem-video-thumbnailer
|
||||
- tpm2-tools
|
||||
- tpm2-tss
|
||||
- tracer-common
|
||||
- tracker
|
||||
- tracker-miners
|
||||
- tree
|
||||
- tuned
|
||||
- twolame-libs
|
||||
- tzdata
|
||||
- udisks2
|
||||
- udisks2-iscsi
|
||||
- udisks2-lvm2
|
||||
- unzip
|
||||
- upower
|
||||
- urw-base35-bookman-fonts
|
||||
- urw-base35-c059-fonts
|
||||
- urw-base35-d050000l-fonts
|
||||
- urw-base35-fonts
|
||||
- urw-base35-fonts-common
|
||||
- urw-base35-gothic-fonts
|
||||
- urw-base35-nimbus-mono-ps-fonts
|
||||
- urw-base35-nimbus-roman-fonts
|
||||
- urw-base35-nimbus-sans-fonts
|
||||
- urw-base35-p052-fonts
|
||||
- urw-base35-standard-symbols-ps-fonts
|
||||
- urw-base35-z003-fonts
|
||||
- usb_modeswitch
|
||||
- usb_modeswitch-data
|
||||
- usbutils
|
||||
- util-linux
|
||||
- util-linux-user
|
||||
- usermode
|
||||
- userspace-rcu
|
||||
- vdo
|
||||
- vim-enhanced
|
||||
- vim-minimal
|
||||
- vim-powerline
|
||||
- virt-what
|
||||
- wget
|
||||
- vulkan-loader
|
||||
- wavpack
|
||||
- webkit2gtk3
|
||||
- webkit2gtk3-jsc
|
||||
- webrtc-audio-processing
|
||||
- whois
|
||||
- which
|
||||
- wireless-regdb
|
||||
- wireplumber
|
||||
- wireplumber-libs
|
||||
- wireshark
|
||||
- woff2
|
||||
- words
|
||||
- wpa_supplicant
|
||||
- wpebackend-fdo
|
||||
- xdg-dbus-proxy
|
||||
- xdg-desktop-portal
|
||||
- xdg-desktop-portal-gnome
|
||||
- xdg-desktop-portal-gtk
|
||||
- xdg-user-dirs
|
||||
- xdg-user-dirs-gtk
|
||||
- xed
|
||||
- xfsdump
|
||||
- xfsprogs
|
||||
- xreader
|
||||
- yum
|
||||
- xdg-utils
|
||||
- xkeyboard-config
|
||||
- xorg-x11-drv-evdev
|
||||
- xorg-x11-drv-fbdev
|
||||
- xorg-x11-drv-libinput
|
||||
- xorg-x11-drv-vmware
|
||||
- xorg-x11-drv-wacom
|
||||
- xorg-x11-drv-wacom-serial-support
|
||||
- xorg-x11-server-Xorg
|
||||
- xorg-x11-server-Xwayland
|
||||
- xorg-x11-server-common
|
||||
- xorg-x11-server-utils
|
||||
- xorg-x11-utils
|
||||
- xorg-x11-xauth
|
||||
- xorg-x11-xinit
|
||||
- xorg-x11-xinit-session
|
||||
- zip
|
||||
|
||||
{% else %}
|
||||
|
||||
desktop_packages_os_fail:
|
||||
test.fail_without_changes:
|
||||
- comment: 'SO desktop can only be installed on Rocky'
|
||||
- comment: 'SO desktop can only be installed on Oracle Linux'
|
||||
|
||||
{% endif %}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
{% from 'vars/globals.map.jinja' import GLOBALS %}
|
||||
|
||||
{# we only want this state to run it is CentOS #}
|
||||
{% if GLOBALS.os == 'Rocky' %}
|
||||
{% if grains.os == 'OEL' %}
|
||||
|
||||
remove_graphical_target:
|
||||
file.symlink:
|
||||
@@ -12,6 +10,6 @@ remove_graphical_target:
|
||||
{% else %}
|
||||
desktop_trusted-ca_os_fail:
|
||||
test.fail_without_changes:
|
||||
- comment: 'SO Desktop can only be installed on Rocky'
|
||||
- comment: 'SO Desktop can only be installed on Oracle Linux'
|
||||
|
||||
{% endif %}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{% from 'vars/globals.map.jinja' import GLOBALS %}
|
||||
|
||||
{# we only want this state to run it is CentOS #}
|
||||
{% if GLOBALS.os == 'Rocky' %}
|
||||
{% if GLOBALS.os == 'OEL' %}
|
||||
|
||||
{% set global_ca_text = [] %}
|
||||
{% set global_ca_server = [] %}
|
||||
@@ -31,6 +31,6 @@ update_ca_certs:
|
||||
|
||||
desktop_trusted-ca_os_fail:
|
||||
test.fail_without_changes:
|
||||
- comment: 'SO Desktop can only be installed on CentOS'
|
||||
- comment: 'SO Desktop can only be installed on Oracle Linux'
|
||||
|
||||
{% endif %}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
{% from 'vars/globals.map.jinja' import GLOBALS %}
|
||||
|
||||
{# we only want this state to run it is CentOS #}
|
||||
{% if GLOBALS.os == 'Rocky' %}
|
||||
{% if grains.os == 'OEL' %}
|
||||
|
||||
include:
|
||||
- desktop.packages
|
||||
@@ -14,10 +12,45 @@ graphical_target:
|
||||
- require:
|
||||
- desktop_packages
|
||||
|
||||
{# set users to use gnome-classic #}
|
||||
{% for username in salt['file.find'](path='/home/',mindepth=1,maxdepth=1,type='d') %}
|
||||
{% set username = username.split('/')[2] %}
|
||||
{% if username != 'zeek' %}
|
||||
{% if not salt['file.file_exists']('/var/lib/AccountsService/users/' ~ username) %}
|
||||
|
||||
{{username}}_session:
|
||||
file.managed:
|
||||
- name: /var/lib/AccountsService/users/{{username}}
|
||||
- source: salt://desktop/files/session.jinja
|
||||
- template: jinja
|
||||
- defaults:
|
||||
USERNAME: {{username}}
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
desktop_wallpaper:
|
||||
file.managed:
|
||||
- name: /usr/local/share/backgrounds/so-wallpaper.jpg
|
||||
- source: salt://desktop/files/so-wallpaper.jpg
|
||||
- makedirs: True
|
||||
|
||||
set_wallpaper:
|
||||
file.managed:
|
||||
- name: /etc/dconf/db/local.d/00-background
|
||||
- source: salt://desktop/files/00-background
|
||||
|
||||
run_dconf_update:
|
||||
cmd.run:
|
||||
- name: 'dconf update'
|
||||
- onchanges:
|
||||
- file: set_wallpaper
|
||||
|
||||
{% else %}
|
||||
|
||||
desktop_xwindows_os_fail:
|
||||
test.fail_without_changes:
|
||||
- comment: 'SO Desktop can only be installed on Rocky'
|
||||
- comment: 'SO Desktop can only be installed on Oracle Linux'
|
||||
|
||||
{% endif %}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
docker:
|
||||
bip: '172.17.0.1'
|
||||
range: '172.17.0.0/24'
|
||||
sorange: '172.17.1.0/24'
|
||||
sobip: '172.17.1.1'
|
||||
range: '172.17.1.0/24'
|
||||
gateway: '172.17.1.1'
|
||||
containers:
|
||||
'so-dockerregistry':
|
||||
final_octet: 20
|
||||
@@ -180,6 +178,9 @@ docker:
|
||||
extra_env: []
|
||||
'so-elastic-agent':
|
||||
final_octet: 46
|
||||
port_bindings:
|
||||
- 0.0.0.0:514:514/tcp
|
||||
- 0.0.0.0:514:514/udp
|
||||
custom_bind_mounts: []
|
||||
extra_hosts: []
|
||||
extra_env: []
|
||||
@@ -202,4 +203,4 @@ docker:
|
||||
final_octet: 99
|
||||
custom_bind_mounts: []
|
||||
extra_hosts: []
|
||||
extra_env: []
|
||||
extra_env: []
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{% import_yaml 'docker/defaults.yaml' as DOCKERDEFAULTS %}
|
||||
{% set DOCKER = salt['pillar.get']('docker', DOCKERDEFAULTS.docker, merge=True) %}
|
||||
{% set RANGESPLIT = DOCKER.sorange.split('.') %}
|
||||
{% set RANGESPLIT = DOCKER.range.split('.') %}
|
||||
{% set FIRSTTHREE = RANGESPLIT[0] ~ '.' ~ RANGESPLIT[1] ~ '.' ~ RANGESPLIT[2] ~ '.' %}
|
||||
|
||||
{% for container, vals in DOCKER.containers.items() %}
|
||||
|
||||
@@ -12,7 +12,28 @@ dockergroup:
|
||||
- name: docker
|
||||
- gid: 920
|
||||
|
||||
{% if GLOBALS.os == 'Ubuntu' %}
|
||||
{% if GLOBALS.os_family == 'Debian' %}
|
||||
{% if grains.oscodename == 'bookworm' %}
|
||||
dockerheldpackages:
|
||||
pkg.installed:
|
||||
- pkgs:
|
||||
- containerd.io: 1.6.21-1
|
||||
- docker-ce: 5:24.0.3-1~debian.12~bookworm
|
||||
- docker-ce-cli: 5:24.0.3-1~debian.12~bookworm
|
||||
- docker-ce-rootless-extras: 5:24.0.3-1~debian.12~bookworm
|
||||
- hold: True
|
||||
- update_holds: True
|
||||
{% elif grains.oscodename == 'jammy' %}
|
||||
dockerheldpackages:
|
||||
pkg.installed:
|
||||
- pkgs:
|
||||
- containerd.io: 1.6.21-1
|
||||
- docker-ce: 5:24.0.2-1~ubuntu.22.04~jammy
|
||||
- docker-ce-cli: 5:24.0.2-1~ubuntu.22.04~jammy
|
||||
- docker-ce-rootless-extras: 5:24.0.2-1~ubuntu.22.04~jammy
|
||||
- hold: True
|
||||
- update_holds: True
|
||||
{% else %}
|
||||
dockerheldpackages:
|
||||
pkg.installed:
|
||||
- pkgs:
|
||||
@@ -22,14 +43,15 @@ dockerheldpackages:
|
||||
- docker-ce-rootless-extras: 5:20.10.5~3-0~ubuntu-focal
|
||||
- hold: True
|
||||
- update_holds: True
|
||||
{% endif %}
|
||||
{% else %}
|
||||
dockerheldpackages:
|
||||
pkg.installed:
|
||||
- pkgs:
|
||||
- containerd.io: 1.6.21-3.1.el9
|
||||
- docker-ce: 24.0.2-1.el9
|
||||
- docker-ce-cli: 24.0.2-1.el9
|
||||
- docker-ce-rootless-extras: 24.0.2-1.el9
|
||||
- docker-ce: 24.0.4-1.el9
|
||||
- docker-ce-cli: 24.0.4-1.el9
|
||||
- docker-ce-rootless-extras: 24.0.4-1.el9
|
||||
- hold: True
|
||||
- update_holds: True
|
||||
{% endif %}
|
||||
@@ -80,8 +102,8 @@ dockerreserveports:
|
||||
sos_docker_net:
|
||||
docker_network.present:
|
||||
- name: sobridge
|
||||
- subnet: {{ DOCKER.sorange }}
|
||||
- gateway: {{ DOCKER.sobip }}
|
||||
- subnet: {{ DOCKER.range }}
|
||||
- gateway: {{ DOCKER.gateway }}
|
||||
- options:
|
||||
com.docker.network.bridge.name: 'sobridge'
|
||||
com.docker.network.driver.mtu: '1500'
|
||||
|
||||
@@ -1,22 +1,14 @@
|
||||
docker:
|
||||
bip:
|
||||
description: Bind IP for the default docker interface.
|
||||
gateway:
|
||||
description: Gateway for the default docker interface.
|
||||
helpLink: docker.html
|
||||
advanced: True
|
||||
range:
|
||||
description: Default docker IP range for containers.
|
||||
helpLink: docker.html
|
||||
advanced: True
|
||||
sobip:
|
||||
description: Bind IP for the SO docker interface.
|
||||
helpLink: docker.html
|
||||
advanced: True
|
||||
sorange:
|
||||
description: IP range for the SO docker containers.
|
||||
helpLink: docker.html
|
||||
advanced: True
|
||||
containers:
|
||||
so-curator: &dockerOptions
|
||||
so-dockerregistry: &dockerOptions
|
||||
final_octet:
|
||||
description: Last octet of the container IP address.
|
||||
helpLink: docker.html
|
||||
@@ -28,6 +20,7 @@ docker:
|
||||
helpLink: docker.html
|
||||
advanced: True
|
||||
multiline: True
|
||||
forcedType: "[]string"
|
||||
custom_bind_mounts:
|
||||
description: List of custom local volume bindings.
|
||||
advanced: True
|
||||
@@ -46,12 +39,8 @@ docker:
|
||||
helpLink: docker.html
|
||||
multiline: True
|
||||
forcedType: "[]string"
|
||||
so-dockerregistry: *dockerOptions
|
||||
so-elastalert: *dockerOptions
|
||||
so-elastic-fleet-package-registry: *dockerOptions
|
||||
so-elastic-fleet: *dockerOptions
|
||||
so-elasticsearch: *dockerOptions
|
||||
so-idh: *dockerOptions
|
||||
so-idstools: *dockerOptions
|
||||
so-influxdb: *dockerOptions
|
||||
so-kibana: *dockerOptions
|
||||
@@ -61,11 +50,21 @@ docker:
|
||||
so-nginx: *dockerOptions
|
||||
so-playbook: *dockerOptions
|
||||
so-redis: *dockerOptions
|
||||
so-sensoroni: *dockerOptions
|
||||
so-soc: *dockerOptions
|
||||
so-soctopus: *dockerOptions
|
||||
so-strelka-backend: *dockerOptions
|
||||
so-strelka-coordinator: *dockerOptions
|
||||
so-strelka-filestream: *dockerOptions
|
||||
so-strelka-frontend: *dockerOptions
|
||||
so-strelka-manager: *dockerOptions
|
||||
so-strelka-gatekeeper: *dockerOptions
|
||||
so-strelka-manager: *dockerOptions
|
||||
so-strelka-coordinator: *dockerOptions
|
||||
so-elastalert: *dockerOptions
|
||||
so-curator: *dockerOptions
|
||||
so-elastic-fleet-package-registry: *dockerOptions
|
||||
so-idh: *dockerOptions
|
||||
so-elastic-agent: *dockerOptions
|
||||
so-telegraf: *dockerOptions
|
||||
so-steno: *dockerOptions
|
||||
so-suricata: *dockerOptions
|
||||
so-zeek: *dockerOptions
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
prune_images:
|
||||
cmd.run:
|
||||
- name: so-docker-prune
|
||||
- order: last
|
||||
|
||||
{% else %}
|
||||
|
||||
|
||||
@@ -28,6 +28,22 @@ elasticagentconfdir:
|
||||
- group: 939
|
||||
- makedirs: True
|
||||
|
||||
elasticagentlogdir:
|
||||
file.directory:
|
||||
- name: /opt/so/log/elasticagent
|
||||
- user: 949
|
||||
- group: 939
|
||||
- makedirs: True
|
||||
|
||||
elasticagent_sbin_jinja:
|
||||
file.recurse:
|
||||
- name: /usr/sbin
|
||||
- source: salt://elasticagent/tools/sbin_jinja
|
||||
- user: 949
|
||||
- group: 939
|
||||
- file_mode: 755
|
||||
- template: jinja
|
||||
|
||||
# Create config
|
||||
create-elastic-agent-config:
|
||||
file.managed:
|
||||
@@ -37,7 +53,6 @@ create-elastic-agent-config:
|
||||
- group: 939
|
||||
- template: jinja
|
||||
|
||||
|
||||
{% else %}
|
||||
|
||||
{{sls}}_state_not_allowed:
|
||||
|
||||
@@ -31,21 +31,33 @@ so-elastic-agent:
|
||||
- {{ XTRAHOST }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
- port_bindings:
|
||||
{% for BINDING in DOCKER.containers['so-elastic-agent'].port_bindings %}
|
||||
- {{ BINDING }}
|
||||
{% endfor %}
|
||||
- binds:
|
||||
- /opt/so/conf/elastic-agent/elastic-agent.yml:/usr/share/elastic-agent/elastic-agent.yml:ro
|
||||
- /opt/so/log/elasticagent:/usr/share/elastic-agent/logs
|
||||
- /etc/pki/tls/certs/intca.crt:/etc/pki/tls/certs/intca.crt:ro
|
||||
- /nsm:/nsm:ro
|
||||
- /opt/so/log:/opt/so/log:ro
|
||||
{% if DOCKER.containers['so-elastic-agent'].custom_bind_mounts %}
|
||||
{% for BIND in DOCKER.containers['so-elastic-agent'].custom_bind_mounts %}
|
||||
- {{ BIND }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if DOCKER.containers['so-elastic-agent'].extra_env %}
|
||||
{% endif %}
|
||||
- environment:
|
||||
- FLEET_CA=/etc/pki/tls/certs/intca.crt
|
||||
- LOGS_PATH=logs
|
||||
{% if DOCKER.containers['so-elastic-agent'].extra_env %}
|
||||
{% for XTRAENV in DOCKER.containers['so-elastic-agent'].extra_env %}
|
||||
- {{ XTRAENV }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
- require:
|
||||
- file: create-elastic-agent-config
|
||||
- watch:
|
||||
- file: create-elastic-agent-config
|
||||
|
||||
delete_so-elastic-agent_so-status.disabled:
|
||||
file.uncomment:
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{%- set ES_PASS = salt['pillar.get']('elasticsearch:auth:users:so_elastic_user:pass', '') %}
|
||||
|
||||
id: aea1ba80-1065-11ee-a369-97538913b6a9
|
||||
revision: 2
|
||||
revision: 1
|
||||
outputs:
|
||||
default:
|
||||
type: elasticsearch
|
||||
@@ -11,7 +11,7 @@ outputs:
|
||||
- 'https://{{ GLOBALS.hostname }}:9200'
|
||||
username: '{{ ES_USER }}'
|
||||
password: '{{ ES_PASS }}'
|
||||
ssl.verification_mode: none
|
||||
ssl.verification_mode: full
|
||||
output_permissions: {}
|
||||
agent:
|
||||
download:
|
||||
@@ -22,56 +22,369 @@ agent:
|
||||
metrics: false
|
||||
features: {}
|
||||
inputs:
|
||||
- id: logfile-logs-80ffa884-2cfc-459a-964a-34df25714d85
|
||||
name: suricata-logs
|
||||
revision: 1
|
||||
- id: logfile-logs-fefef78c-422f-4cfa-8abf-4cd1b9428f62
|
||||
name: import-evtx-logs
|
||||
revision: 2
|
||||
type: logfile
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: log
|
||||
version:
|
||||
version:
|
||||
data_stream:
|
||||
namespace: so
|
||||
package_policy_id: 80ffa884-2cfc-459a-964a-34df25714d85
|
||||
package_policy_id: fefef78c-422f-4cfa-8abf-4cd1b9428f62
|
||||
streams:
|
||||
- id: logfile-log.log-80ffa884-2cfc-459a-964a-34df25714d85
|
||||
- id: logfile-log.log-fefef78c-422f-4cfa-8abf-4cd1b9428f62
|
||||
data_stream:
|
||||
dataset: import
|
||||
paths:
|
||||
- /nsm/import/*/evtx/*.json
|
||||
processors:
|
||||
- dissect:
|
||||
field: log.file.path
|
||||
tokenizer: '/nsm/import/%{import.id}/evtx/%{import.file}'
|
||||
target_prefix: ''
|
||||
- decode_json_fields:
|
||||
fields:
|
||||
- message
|
||||
target: ''
|
||||
- drop_fields:
|
||||
ignore_missing: true
|
||||
fields:
|
||||
- host
|
||||
- add_fields:
|
||||
fields:
|
||||
dataset: system.security
|
||||
type: logs
|
||||
namespace: default
|
||||
target: data_stream
|
||||
- add_fields:
|
||||
fields:
|
||||
dataset: system.security
|
||||
module: system
|
||||
imported: true
|
||||
target: event
|
||||
- then:
|
||||
- add_fields:
|
||||
fields:
|
||||
dataset: windows.sysmon_operational
|
||||
target: data_stream
|
||||
- add_fields:
|
||||
fields:
|
||||
dataset: windows.sysmon_operational
|
||||
module: windows
|
||||
imported: true
|
||||
target: event
|
||||
if:
|
||||
equals:
|
||||
winlog.channel: Microsoft-Windows-Sysmon/Operational
|
||||
- then:
|
||||
- add_fields:
|
||||
fields:
|
||||
dataset: system.application
|
||||
target: data_stream
|
||||
- add_fields:
|
||||
fields:
|
||||
dataset: system.application
|
||||
target: event
|
||||
if:
|
||||
equals:
|
||||
winlog.channel: Application
|
||||
- then:
|
||||
- add_fields:
|
||||
fields:
|
||||
dataset: system.system
|
||||
target: data_stream
|
||||
- add_fields:
|
||||
fields:
|
||||
dataset: system.system
|
||||
target: event
|
||||
if:
|
||||
equals:
|
||||
winlog.channel: System
|
||||
- then:
|
||||
- add_fields:
|
||||
fields:
|
||||
dataset: windows.powershell_operational
|
||||
target: data_stream
|
||||
- add_fields:
|
||||
fields:
|
||||
dataset: windows.powershell_operational
|
||||
module: windows
|
||||
target: event
|
||||
if:
|
||||
equals:
|
||||
winlog.channel: Microsoft-Windows-PowerShell/Operational
|
||||
tags:
|
||||
- import
|
||||
- id: logfile-redis-fc98c947-7d17-4861-a318-7ad075f6d1b0
|
||||
name: redis-logs
|
||||
revision: 2
|
||||
type: logfile
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: redis
|
||||
version:
|
||||
data_stream:
|
||||
namespace: default
|
||||
package_policy_id: fc98c947-7d17-4861-a318-7ad075f6d1b0
|
||||
streams:
|
||||
- id: logfile-redis.log-fc98c947-7d17-4861-a318-7ad075f6d1b0
|
||||
data_stream:
|
||||
dataset: redis.log
|
||||
type: logs
|
||||
exclude_files:
|
||||
- .gz$
|
||||
paths:
|
||||
- /opt/so/log/redis/redis.log
|
||||
tags:
|
||||
- redis-log
|
||||
exclude_lines:
|
||||
- '^\s+[\-`(''.|_]'
|
||||
- id: logfile-logs-3b56803d-5ade-4c93-b25e-9b37182f66b8
|
||||
name: import-suricata-logs
|
||||
revision: 2
|
||||
type: logfile
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: log
|
||||
version:
|
||||
data_stream:
|
||||
namespace: so
|
||||
package_policy_id: 3b56803d-5ade-4c93-b25e-9b37182f66b8
|
||||
streams:
|
||||
- id: logfile-log.log-3b56803d-5ade-4c93-b25e-9b37182f66b8
|
||||
data_stream:
|
||||
dataset: import
|
||||
pipeline: suricata.common
|
||||
paths:
|
||||
- /nsm/import/*/suricata/eve*.json
|
||||
processors:
|
||||
- add_fields:
|
||||
fields:
|
||||
module: suricata
|
||||
imported: true
|
||||
category: network
|
||||
target: event
|
||||
- dissect:
|
||||
field: log.file.path
|
||||
tokenizer: '/nsm/import/%{import.id}/suricata/%{import.file}'
|
||||
target_prefix: ''
|
||||
- id: logfile-logs-c327e1a3-1ebe-449c-a8eb-f6f35032e69d
|
||||
name: soc-server-logs
|
||||
revision: 2
|
||||
type: logfile
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: log
|
||||
version:
|
||||
data_stream:
|
||||
namespace: so
|
||||
package_policy_id: c327e1a3-1ebe-449c-a8eb-f6f35032e69d
|
||||
streams:
|
||||
- id: logfile-log.log-c327e1a3-1ebe-449c-a8eb-f6f35032e69d
|
||||
data_stream:
|
||||
dataset: soc
|
||||
pipeline: common
|
||||
paths:
|
||||
- /opt/so/log/soc/sensoroni-server.log
|
||||
processors:
|
||||
- decode_json_fields:
|
||||
add_error_key: true
|
||||
process_array: true
|
||||
max_depth: 2
|
||||
fields:
|
||||
- message
|
||||
target: soc
|
||||
- add_fields:
|
||||
fields:
|
||||
module: soc
|
||||
dataset_temp: server
|
||||
category: host
|
||||
target: event
|
||||
- rename:
|
||||
ignore_missing: true
|
||||
fields:
|
||||
- from: soc.fields.sourceIp
|
||||
to: source.ip
|
||||
- from: soc.fields.status
|
||||
to: http.response.status_code
|
||||
- from: soc.fields.method
|
||||
to: http.request.method
|
||||
- from: soc.fields.path
|
||||
to: url.path
|
||||
- from: soc.message
|
||||
to: event.action
|
||||
- from: soc.level
|
||||
to: log.level
|
||||
tags:
|
||||
- so-soc
|
||||
- id: logfile-logs-906e0d4c-9ec3-4c6a-bef6-e347ec9fd073
|
||||
name: soc-sensoroni-logs
|
||||
revision: 2
|
||||
type: logfile
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: log
|
||||
version:
|
||||
data_stream:
|
||||
namespace: so
|
||||
package_policy_id: 906e0d4c-9ec3-4c6a-bef6-e347ec9fd073
|
||||
streams:
|
||||
- id: logfile-log.log-906e0d4c-9ec3-4c6a-bef6-e347ec9fd073
|
||||
data_stream:
|
||||
dataset: soc
|
||||
pipeline: common
|
||||
paths:
|
||||
- /opt/so/log/sensoroni/sensoroni.log
|
||||
processors:
|
||||
- decode_json_fields:
|
||||
add_error_key: true
|
||||
process_array: true
|
||||
max_depth: 2
|
||||
fields:
|
||||
- message
|
||||
target: sensoroni
|
||||
- add_fields:
|
||||
fields:
|
||||
module: soc
|
||||
dataset_temp: sensoroni
|
||||
category: host
|
||||
target: event
|
||||
- rename:
|
||||
ignore_missing: true
|
||||
fields:
|
||||
- from: sensoroni.fields.sourceIp
|
||||
to: source.ip
|
||||
- from: sensoroni.fields.status
|
||||
to: http.response.status_code
|
||||
- from: sensoroni.fields.method
|
||||
to: http.request.method
|
||||
- from: sensoroni.fields.path
|
||||
to: url.path
|
||||
- from: sensoroni.message
|
||||
to: event.action
|
||||
- from: sensoroni.level
|
||||
to: log.level
|
||||
- id: logfile-logs-df0d7f2c-221f-433b-b18b-d1cf83250515
|
||||
name: soc-salt-relay-logs
|
||||
revision: 2
|
||||
type: logfile
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: log
|
||||
version:
|
||||
data_stream:
|
||||
namespace: so
|
||||
package_policy_id: df0d7f2c-221f-433b-b18b-d1cf83250515
|
||||
streams:
|
||||
- id: logfile-log.log-df0d7f2c-221f-433b-b18b-d1cf83250515
|
||||
data_stream:
|
||||
dataset: soc
|
||||
pipeline: common
|
||||
paths:
|
||||
- /opt/so/log/soc/salt-relay.log
|
||||
processors:
|
||||
- dissect:
|
||||
field: message
|
||||
tokenizer: '%{soc.ts} | %{event.action}'
|
||||
target_prefix: ''
|
||||
- add_fields:
|
||||
fields:
|
||||
module: soc
|
||||
dataset_temp: salt_relay
|
||||
category: host
|
||||
target: event
|
||||
tags:
|
||||
- so-soc
|
||||
- id: logfile-logs-74bd2366-fe52-493c-bddc-843a017fc4d0
|
||||
name: soc-auth-sync-logs
|
||||
revision: 2
|
||||
type: logfile
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: log
|
||||
version:
|
||||
data_stream:
|
||||
namespace: so
|
||||
package_policy_id: 74bd2366-fe52-493c-bddc-843a017fc4d0
|
||||
streams:
|
||||
- id: logfile-log.log-74bd2366-fe52-493c-bddc-843a017fc4d0
|
||||
data_stream:
|
||||
dataset: soc
|
||||
pipeline: common
|
||||
paths:
|
||||
- /opt/so/log/soc/sync.log
|
||||
processors:
|
||||
- dissect:
|
||||
field: message
|
||||
tokenizer: '%{event.action}'
|
||||
target_prefix: ''
|
||||
- add_fields:
|
||||
fields:
|
||||
module: soc
|
||||
dataset_temp: auth_sync
|
||||
category: host
|
||||
target: event
|
||||
tags:
|
||||
- so-soc
|
||||
- id: logfile-logs-d151d9bf-ff2a-4529-9520-c99244bc0253
|
||||
name: suricata-logs
|
||||
revision: 2
|
||||
type: logfile
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: log
|
||||
version:
|
||||
data_stream:
|
||||
namespace: so
|
||||
package_policy_id: d151d9bf-ff2a-4529-9520-c99244bc0253
|
||||
streams:
|
||||
- id: logfile-log.log-d151d9bf-ff2a-4529-9520-c99244bc0253
|
||||
data_stream:
|
||||
dataset: suricata
|
||||
pipeline: suricata.common
|
||||
paths:
|
||||
- /nsm/suricata/eve*.json
|
||||
processors:
|
||||
- add_fields:
|
||||
target: event
|
||||
fields:
|
||||
category: network
|
||||
module: suricata
|
||||
pipeline: suricata.common
|
||||
- id: logfile-logs-90103ac4-f6bd-4a4a-b596-952c332390fc
|
||||
category: network
|
||||
target: event
|
||||
- id: logfile-logs-31f94d05-ae75-40ee-b9c5-0e0356eff327
|
||||
name: strelka-logs
|
||||
revision: 1
|
||||
revision: 2
|
||||
type: logfile
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: log
|
||||
version:
|
||||
version:
|
||||
data_stream:
|
||||
namespace: so
|
||||
package_policy_id: 90103ac4-f6bd-4a4a-b596-952c332390fc
|
||||
package_policy_id: 31f94d05-ae75-40ee-b9c5-0e0356eff327
|
||||
streams:
|
||||
- id: logfile-log.log-90103ac4-f6bd-4a4a-b596-952c332390fc
|
||||
- id: logfile-log.log-31f94d05-ae75-40ee-b9c5-0e0356eff327
|
||||
data_stream:
|
||||
dataset: strelka
|
||||
pipeline: strelka.file
|
||||
paths:
|
||||
- /nsm/strelka/log/strelka.log
|
||||
processors:
|
||||
- add_fields:
|
||||
target: event
|
||||
fields:
|
||||
category: file
|
||||
module: strelka
|
||||
pipeline: strelka.file
|
||||
category: file
|
||||
target: event
|
||||
- id: logfile-logs-6197fe84-9b58-4d9b-8464-3d517f28808d
|
||||
name: zeek-logs
|
||||
revision: 1
|
||||
@@ -117,3 +430,54 @@ inputs:
|
||||
exclude_files:
|
||||
- >-
|
||||
broker|capture_loss|cluster|ecat_arp_info|known_hosts|known_services|loaded_scripts|ntp|ocsp|packet_filter|reporter|stats|stderr|stdout.log$
|
||||
- id: udp-udp-35051de0-46a5-11ee-8d5d-9f98c8182f60
|
||||
name: syslog-udp-514
|
||||
revision: 3
|
||||
type: udp
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: udp
|
||||
version: 1.10.0
|
||||
data_stream:
|
||||
namespace: so
|
||||
package_policy_id: 35051de0-46a5-11ee-8d5d-9f98c8182f60
|
||||
streams:
|
||||
- id: udp-udp.generic-35051de0-46a5-11ee-8d5d-9f98c8182f60
|
||||
data_stream:
|
||||
dataset: syslog
|
||||
pipeline: syslog
|
||||
host: '0.0.0.0:514'
|
||||
max_message_size: 10KiB
|
||||
processors:
|
||||
- add_fields:
|
||||
fields:
|
||||
module: syslog
|
||||
target: event
|
||||
tags:
|
||||
- syslog
|
||||
- id: tcp-tcp-33d37bb0-46a5-11ee-8d5d-9f98c8182f60
|
||||
name: syslog-tcp-514
|
||||
revision: 3
|
||||
type: tcp
|
||||
use_output: default
|
||||
meta:
|
||||
package:
|
||||
name: tcp
|
||||
version: 1.10.0
|
||||
data_stream:
|
||||
namespace: so
|
||||
package_policy_id: 33d37bb0-46a5-11ee-8d5d-9f98c8182f60
|
||||
streams:
|
||||
- id: tcp-tcp.generic-33d37bb0-46a5-11ee-8d5d-9f98c8182f60
|
||||
data_stream:
|
||||
dataset: syslog
|
||||
pipeline: syslog
|
||||
host: '0.0.0.0:514'
|
||||
processors:
|
||||
- add_fields:
|
||||
fields:
|
||||
module: syslog
|
||||
target: event
|
||||
tags:
|
||||
- syslog
|
||||
|
||||
16
salt/elasticagent/tools/sbin_jinja/so-elastic-agent-inspect
Executable file
16
salt/elasticagent/tools/sbin_jinja/so-elastic-agent-inspect
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/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-common
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
docker exec so-elastic-agent /usr/share/elastic-agent/elastic-agent inspect
|
||||
{% else %}
|
||||
/bin/elastic-agent inspect
|
||||
{% endif %}
|
||||
17
salt/elasticagent/tools/sbin_jinja/so-elastic-agent-restart
Executable file
17
salt/elasticagent/tools/sbin_jinja/so-elastic-agent-restart
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/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-common
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
/usr/sbin/so-stop elastic-agent $1
|
||||
/usr/sbin/so-start elasticagent $1
|
||||
{% else %}
|
||||
service elastic-agent restart
|
||||
{% endif %}
|
||||
@@ -5,6 +5,13 @@
|
||||
# https://securityonion.net/license; you may not use this file except in compliance with the
|
||||
# Elastic License 2.0.
|
||||
|
||||
|
||||
|
||||
. /usr/sbin/so-common
|
||||
|
||||
/usr/sbin/so-restart elastic-agent $1
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
/usr/sbin/so-start elasticagent $1
|
||||
{% else %}
|
||||
service elastic-agent start
|
||||
{% endif %}
|
||||
|
||||
17
salt/elasticagent/tools/sbin_jinja/so-elastic-agent-status
Executable file
17
salt/elasticagent/tools/sbin_jinja/so-elastic-agent-status
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/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-common
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
docker exec so-elastic-agent /usr/share/elastic-agent/elastic-agent status
|
||||
{% else %}
|
||||
/bin/elastic-agent status
|
||||
{% endif %}
|
||||
|
||||
@@ -9,4 +9,9 @@
|
||||
|
||||
. /usr/sbin/so-common
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
/usr/sbin/so-stop elastic-agent $1
|
||||
{% else %}
|
||||
service elastic-agent stop
|
||||
{% endif %}
|
||||
|
||||
17
salt/elasticagent/tools/sbin_jinja/so-elastic-agent-version
Executable file
17
salt/elasticagent/tools/sbin_jinja/so-elastic-agent-version
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/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-common
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
docker exec so-elastic-agent /usr/share/elastic-agent/elastic-agent version
|
||||
{% else %}
|
||||
/bin/elastic-agent version
|
||||
{% endif %}
|
||||
|
||||
@@ -37,6 +37,8 @@ elasticfleet_sbin_jinja:
|
||||
- group: 939
|
||||
- file_mode: 755
|
||||
- template: jinja
|
||||
- exclude_pat:
|
||||
- so-elastic-fleet-package-upgrade # exclude this because we need to watch it for changes
|
||||
|
||||
eaconfdir:
|
||||
file.directory:
|
||||
@@ -45,6 +47,13 @@ eaconfdir:
|
||||
- group: 939
|
||||
- makedirs: True
|
||||
|
||||
ealogdir:
|
||||
file.directory:
|
||||
- name: /opt/so/log/elasticfleet
|
||||
- user: 947
|
||||
- group: 939
|
||||
- makedirs: True
|
||||
|
||||
eastatedir:
|
||||
file.directory:
|
||||
- name: /opt/so/conf/elastic-fleet/state
|
||||
@@ -52,6 +61,14 @@ eastatedir:
|
||||
- group: 939
|
||||
- makedirs: True
|
||||
|
||||
eapackageupgrade:
|
||||
file.managed:
|
||||
- name: /usr/sbin/so-elastic-fleet-package-upgrade
|
||||
- source: salt://elasticfleet/tools/sbin_jinja/so-elastic-fleet-package-upgrade
|
||||
- user: 947
|
||||
- group: 939
|
||||
- template: jinja
|
||||
|
||||
{% if GLOBALS.role != "so-fleet" %}
|
||||
eaintegrationsdir:
|
||||
file.directory:
|
||||
@@ -81,6 +98,7 @@ ea-integrations-load:
|
||||
- onchanges:
|
||||
- file: eaintegration
|
||||
- file: eadynamicintegration
|
||||
- file: eapackageupgrade
|
||||
{% endif %}
|
||||
{% else %}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ elasticfleet:
|
||||
enabled: False
|
||||
config:
|
||||
server:
|
||||
custom_fqdn: ''
|
||||
custom_fqdn: []
|
||||
enable_auto_configuration: True
|
||||
endpoints_enrollment: ''
|
||||
es_token: ''
|
||||
@@ -13,7 +13,10 @@ elasticfleet:
|
||||
- broker
|
||||
- capture_loss
|
||||
- cluster
|
||||
- conn-summary
|
||||
- console
|
||||
- ecat_arp_info
|
||||
- known_certs
|
||||
- known_hosts
|
||||
- known_services
|
||||
- loaded_scripts
|
||||
@@ -25,10 +28,53 @@ elasticfleet:
|
||||
- stderr
|
||||
- stdout
|
||||
packages:
|
||||
- apache
|
||||
- auditd
|
||||
- aws
|
||||
- azure
|
||||
- barracuda
|
||||
- cisco_asa
|
||||
- cloudflare
|
||||
- crowdstrike
|
||||
- darktrace
|
||||
- elasticsearch
|
||||
- endpoint
|
||||
- f5_bigip
|
||||
- fleet_server
|
||||
- fim
|
||||
- fortinet
|
||||
- fortinet_fortigate
|
||||
- gcp
|
||||
- github
|
||||
- google_workspace
|
||||
- http_endpoint
|
||||
- httpjson
|
||||
- juniper
|
||||
- juniper_srx
|
||||
- kafka_log
|
||||
- lastpass
|
||||
- log
|
||||
- m365_defender
|
||||
- microsoft_defender_endpoint
|
||||
- microsoft_dhcp
|
||||
- netflow
|
||||
- o365
|
||||
- okta
|
||||
- osquery_manager
|
||||
- panw
|
||||
- pfsense
|
||||
- redis
|
||||
- sentinel_one
|
||||
- sonicwall_firewall
|
||||
- symantec_endpoint
|
||||
- system
|
||||
- tcp
|
||||
- ti_abusech
|
||||
- ti_misp
|
||||
- ti_otx
|
||||
- ti_recordedfuture
|
||||
- udp
|
||||
- windows
|
||||
- zscaler_zia
|
||||
- zscaler_zpa
|
||||
- 1password
|
||||
|
||||
@@ -15,15 +15,30 @@
|
||||
include:
|
||||
- elasticfleet.config
|
||||
- elasticfleet.sostatus
|
||||
- ssl
|
||||
|
||||
{% if ELASTICFLEETMERGED.config.server.enable_auto_configuration and grains.role not in ['so-import', 'so-eval'] %}
|
||||
# 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'] %}
|
||||
so-elastic-fleet-auto-configure-logstash-outputs:
|
||||
cmd.run:
|
||||
- name: /usr/sbin/so-elastic-fleet-outputs-update
|
||||
- retry: True
|
||||
{% endif %}
|
||||
|
||||
#so-elastic-fleet-auto-configure-server-urls:
|
||||
# cmd.run:
|
||||
# - name: /usr/sbin/so-elastic-fleet-urls-update
|
||||
# If enabled, automatically update Fleet Server URLs & ES Connection
|
||||
{% if ELASTICFLEETMERGED.config.server.enable_auto_configuration and grains.role not in ['so-fleet'] %}
|
||||
so-elastic-fleet-auto-configure-server-urls:
|
||||
cmd.run:
|
||||
- name: /usr/sbin/so-elastic-fleet-urls-update
|
||||
- retry: True
|
||||
{% endif %}
|
||||
|
||||
# Automatically update Fleet Server Elasticsearch URLs
|
||||
{% if grains.role not in ['so-fleet'] %}
|
||||
so-elastic-fleet-auto-configure-elasticsearch-urls:
|
||||
cmd.run:
|
||||
- name: /usr/sbin/so-elastic-fleet-es-url-update
|
||||
- retry: True
|
||||
{% endif %}
|
||||
|
||||
{% if SERVICETOKEN != '' %}
|
||||
@@ -50,8 +65,10 @@ so-elastic-fleet:
|
||||
- {{ BINDING }}
|
||||
{% endfor %}
|
||||
- binds:
|
||||
- /etc/pki:/etc/pki:ro
|
||||
#- /opt/so/conf/elastic-fleet/state:/usr/share/elastic-agent/state:rw
|
||||
- /etc/pki/elasticfleet-server.crt:/etc/pki/elasticfleet-server.crt:ro
|
||||
- /etc/pki/elasticfleet-server.key:/etc/pki/elasticfleet-server.key:ro
|
||||
- /etc/pki/tls/certs/intca.crt:/etc/pki/tls/certs/intca.crt:ro
|
||||
- /opt/so/log/elasticfleet:/usr/share/elastic-agent/logs
|
||||
{% if DOCKER.containers['so-elastic-fleet'].custom_bind_mounts %}
|
||||
{% for BIND in DOCKER.containers['so-elastic-fleet'].custom_bind_mounts %}
|
||||
- {{ BIND }}
|
||||
@@ -59,25 +76,34 @@ so-elastic-fleet:
|
||||
{% endif %}
|
||||
- environment:
|
||||
- FLEET_SERVER_ENABLE=true
|
||||
- FLEET_URL=https://{{ GLOBALS.node_ip }}:8220
|
||||
- FLEET_URL=https://{{ GLOBALS.hostname }}:8220
|
||||
- FLEET_SERVER_ELASTICSEARCH_HOST=https://{{ GLOBALS.manager }}:9200
|
||||
- FLEET_SERVER_SERVICE_TOKEN={{ SERVICETOKEN }}
|
||||
- FLEET_SERVER_POLICY_ID=FleetServer_{{ GLOBALS.hostname }}
|
||||
- FLEET_SERVER_ELASTICSEARCH_CA=/etc/pki/tls/certs/intca.crt
|
||||
- FLEET_SERVER_CERT=/etc/pki/elasticfleet-server.crt
|
||||
- FLEET_SERVER_CERT_KEY=/etc/pki/elasticfleet-server.key
|
||||
- FLEET_CA=/etc/pki/tls/certs/intca.crt
|
||||
- FLEET_CA=/etc/pki/tls/certs/intca.crt
|
||||
- FLEET_SERVER_ELASTICSEARCH_CA=/etc/pki/tls/certs/intca.crt
|
||||
- LOGS_PATH=logs
|
||||
{% if DOCKER.containers['so-elastic-fleet'].extra_env %}
|
||||
{% for XTRAENV in DOCKER.containers['so-elastic-fleet'].extra_env %}
|
||||
- {{ XTRAENV }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
- watch:
|
||||
- x509: etc_elasticfleet_key
|
||||
- x509: etc_elasticfleet_crt
|
||||
{% endif %}
|
||||
|
||||
{% if GLOBALS.role != "so-fleet" %}
|
||||
so-elastic-fleet-integrations:
|
||||
cmd.run:
|
||||
- name: /usr/sbin/so-elastic-fleet-integration-policy-load
|
||||
|
||||
so-elastic-agent-grid-upgrade:
|
||||
cmd.run:
|
||||
- name: /usr/sbin/so-elastic-agent-grid-upgrade
|
||||
- retry: True
|
||||
{% endif %}
|
||||
|
||||
delete_so-elastic-fleet_so-status.disabled:
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -5,17 +5,16 @@
|
||||
"package": {
|
||||
"name": "endpoint",
|
||||
"title": "Elastic Defend",
|
||||
"version": ""
|
||||
"version": "8.8.0"
|
||||
},
|
||||
"enabled": true,
|
||||
"policy_id": "endpoints-initial",
|
||||
"vars": {},
|
||||
"inputs": [{
|
||||
"type": "endpoint",
|
||||
"type": "ENDPOINT_INTEGRATION_CONFIG",
|
||||
"enabled": true,
|
||||
"streams": [],
|
||||
"config": {
|
||||
"integration_config": {
|
||||
"_config": {
|
||||
"value": {
|
||||
"type": "endpoint",
|
||||
"endpointConfig": {
|
||||
@@ -25,4 +24,4 @@
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
@@ -13,9 +13,14 @@
|
||||
"system.auth": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"ignore_older": "72h",
|
||||
"paths": [
|
||||
"/var/log/auth.log*",
|
||||
"/var/log/secure*"
|
||||
],
|
||||
"preserve_original_event": false,
|
||||
"tags": [
|
||||
"system-auth"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -24,34 +29,49 @@
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/var/log/messages*",
|
||||
"/var/log/syslog*"
|
||||
]
|
||||
"/var/log/syslog*",
|
||||
"/var/log/system*"
|
||||
],
|
||||
"tags": [],
|
||||
"ignore_older": "72h"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"system-winlog": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"preserve_original_event": false
|
||||
},
|
||||
"streams": {
|
||||
"system.application": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"preserve_original_event": false,
|
||||
"ignore_older": "72h",
|
||||
"language": 0,
|
||||
"tags": []
|
||||
}
|
||||
},
|
||||
"system.security": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"preserve_original_event": false,
|
||||
"ignore_older": "72h",
|
||||
"language": 0,
|
||||
"tags": []
|
||||
}
|
||||
},
|
||||
"system.system": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"preserve_original_event": false,
|
||||
"ignore_older": "72h",
|
||||
"language": 0,
|
||||
"tags": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"system-system/metrics": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"system-system/metrics": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
@@ -20,8 +20,8 @@
|
||||
],
|
||||
"data_stream.dataset": "import",
|
||||
"custom": "",
|
||||
"processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/evtx/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n- drop_fields:\n fields: [\"host\"]\n ignore_missing: true\n- add_fields:\n target: data_stream\n fields:\n namespace: default\n type: logs\n dataset: system.security\n- add_fields:\n target: event\n fields:\n dataset: system.security\n module: system\n imported: true \n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-Sysmon/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.sysmon_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.sysmon_operational\n module: windows\n imported: true\n- if:\n equals:\n winlog.channel: 'Application'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.application\n - add_fields:\n target: event\n fields:\n dataset: system.application\n- if:\n equals:\n winlog.channel: 'System'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.system\n - add_fields:\n target: event\n fields:\n dataset: system.system\n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-PowerShell/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.powershell_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.powershell_operational\n module: windows",
|
||||
"tags": [
|
||||
"processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/evtx/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n- drop_fields:\n fields: [\"host\"]\n ignore_missing: true\n- add_fields:\n target: data_stream\n fields:\n type: logs\n dataset: system.security\n- add_fields:\n target: event\n fields:\n dataset: system.security\n module: system\n imported: true\n- add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.security-1.34.0\n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-Sysmon/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.sysmon_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.sysmon_operational\n module: windows\n imported: true\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.sysmon_operational-1.24.0\n- if:\n equals:\n winlog.channel: 'Application'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.application\n - add_fields:\n target: event\n fields:\n dataset: system.application\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.application-1.34.0\n- if:\n equals:\n winlog.channel: 'System'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.system\n - add_fields:\n target: event\n fields:\n dataset: system.system\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.system-1.34.0\n \n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-PowerShell/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.powershell_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.powershell_operational\n module: windows\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.powershell_operational-1.24.0\n- add_fields:\n target: data_stream\n fields:\n dataset: import",
|
||||
"tags": [
|
||||
"import"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"log.logs": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
{
|
||||
"package": {
|
||||
"name": "elasticsearch",
|
||||
"version": ""
|
||||
},
|
||||
"name": "elasticsearch-logs",
|
||||
"namespace": "default",
|
||||
"description": "Elasticsearch Logs",
|
||||
"policy_id": "so-grid-nodes_heavy",
|
||||
"inputs": {
|
||||
"elasticsearch-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"elasticsearch.audit": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/var/log/elasticsearch/*_audit.json"
|
||||
]
|
||||
}
|
||||
},
|
||||
"elasticsearch.deprecation": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/var/log/elasticsearch/*_deprecation.json"
|
||||
]
|
||||
}
|
||||
},
|
||||
"elasticsearch.gc": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/var/log/elasticsearch/gc.log.[0-9]*",
|
||||
"/var/log/elasticsearch/gc.log"
|
||||
]
|
||||
}
|
||||
},
|
||||
"elasticsearch.server": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/opt/so/log/elasticsearch/*.log"
|
||||
]
|
||||
}
|
||||
},
|
||||
"elasticsearch.slowlog": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/var/log/elasticsearch/*_index_search_slowlog.json",
|
||||
"/var/log/elasticsearch/*_index_indexing_slowlog.json"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"elasticsearch-elasticsearch/metrics": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"hosts": [
|
||||
"http://localhost:9200"
|
||||
],
|
||||
"scope": "node"
|
||||
},
|
||||
"streams": {
|
||||
"elasticsearch.stack_monitoring.ccr": {
|
||||
"enabled": false
|
||||
},
|
||||
"elasticsearch.stack_monitoring.cluster_stats": {
|
||||
"enabled": false
|
||||
},
|
||||
"elasticsearch.stack_monitoring.enrich": {
|
||||
"enabled": false
|
||||
},
|
||||
"elasticsearch.stack_monitoring.index": {
|
||||
"enabled": false
|
||||
},
|
||||
"elasticsearch.stack_monitoring.index_recovery": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"active.only": true
|
||||
}
|
||||
},
|
||||
"elasticsearch.stack_monitoring.index_summary": {
|
||||
"enabled": false
|
||||
},
|
||||
"elasticsearch.stack_monitoring.ml_job": {
|
||||
"enabled": false
|
||||
},
|
||||
"elasticsearch.stack_monitoring.node": {
|
||||
"enabled": false
|
||||
},
|
||||
"elasticsearch.stack_monitoring.node_stats": {
|
||||
"enabled": false
|
||||
},
|
||||
"elasticsearch.stack_monitoring.pending_tasks": {
|
||||
"enabled": false
|
||||
},
|
||||
"elasticsearch.stack_monitoring.shard": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"package": {
|
||||
"name": "log",
|
||||
"version": ""
|
||||
},
|
||||
"name": "kratos-logs",
|
||||
"namespace": "so",
|
||||
"description": "Kratos logs",
|
||||
"policy_id": "so-grid-nodes_heavy",
|
||||
"inputs": {
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/opt/so/log/kratos/kratos.log"
|
||||
],
|
||||
"data_stream.dataset": "kratos",
|
||||
"tags": ["so-kratos"],
|
||||
"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: kratos",
|
||||
"custom": "pipeline: kratos"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
"name": "osquery_manager",
|
||||
"version": ""
|
||||
},
|
||||
"name": "osquery-grid-nodes",
|
||||
"name": "osquery-grid-nodes_heavy",
|
||||
"namespace": "default",
|
||||
"policy_id": "so-grid-nodes_heavy",
|
||||
"inputs": {
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
{
|
||||
"package": {
|
||||
"name": "redis",
|
||||
"version": ""
|
||||
},
|
||||
"name": "redis-logs",
|
||||
"namespace": "default",
|
||||
"description": "Redis logs",
|
||||
"policy_id": "so-grid-nodes_heavy",
|
||||
"inputs": {
|
||||
"redis-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"redis.log": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/opt/so/log/redis/redis.log"
|
||||
],
|
||||
"tags": [
|
||||
"redis-log"
|
||||
],
|
||||
"preserve_original_event": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"redis-redis": {
|
||||
"enabled": false,
|
||||
"streams": {
|
||||
"redis.slowlog": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"hosts": [
|
||||
"127.0.0.1:6379"
|
||||
],
|
||||
"password": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"redis-redis/metrics": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"hosts": [
|
||||
"127.0.0.1:6379"
|
||||
],
|
||||
"idle_timeout": "20s",
|
||||
"maxconn": 10,
|
||||
"network": "tcp",
|
||||
"password": ""
|
||||
},
|
||||
"streams": {
|
||||
"redis.info": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"period": "10s"
|
||||
}
|
||||
},
|
||||
"redis.key": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"key.patterns": "- limit: 20\n pattern: *\n",
|
||||
"period": "10s"
|
||||
}
|
||||
},
|
||||
"redis.keyspace": {
|
||||
"enabled": false,
|
||||
"vars": {
|
||||
"period": "10s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"package": {
|
||||
"name": "log",
|
||||
"version": ""
|
||||
},
|
||||
"name": "soc-auth-sync-logs",
|
||||
"namespace": "so",
|
||||
"description": "Security Onion - Elastic Auth Sync - Logs",
|
||||
"policy_id": "so-grid-nodes_heavy",
|
||||
"inputs": {
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/opt/so/log/soc/sync.log"
|
||||
],
|
||||
"data_stream.dataset": "soc",
|
||||
"tags": ["so-soc"],
|
||||
"processors": "- dissect:\n tokenizer: \"%{event.action}\"\n field: \"message\"\n target_prefix: \"\"\n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: auth_sync",
|
||||
"custom": "pipeline: common"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"package": {
|
||||
"name": "log",
|
||||
"version": ""
|
||||
},
|
||||
"name": "soc-salt-relay-logs",
|
||||
"namespace": "so",
|
||||
"description": "Security Onion - Salt Relay - Logs",
|
||||
"policy_id": "so-grid-nodes_heavy",
|
||||
"inputs": {
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/opt/so/log/soc/salt-relay.log"
|
||||
],
|
||||
"data_stream.dataset": "soc",
|
||||
"tags": ["so-soc"],
|
||||
"processors": "- dissect:\n tokenizer: \"%{soc.ts} | %{event.action}\"\n field: \"message\"\n target_prefix: \"\"\n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: salt_relay",
|
||||
"custom": "pipeline: common"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"package": {
|
||||
"name": "log",
|
||||
"version": ""
|
||||
},
|
||||
"name": "soc-sensoroni-logs",
|
||||
"namespace": "so",
|
||||
"description": "Security Onion - Sensoroni - Logs",
|
||||
"policy_id": "so-grid-nodes_heavy",
|
||||
"inputs": {
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/opt/so/log/sensoroni/sensoroni.log"
|
||||
],
|
||||
"data_stream.dataset": "soc",
|
||||
"tags": [],
|
||||
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"sensoroni\"\n process_array: true\n max_depth: 2\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: sensoroni\n- rename:\n fields:\n - from: \"sensoroni.fields.sourceIp\"\n to: \"source.ip\"\n - from: \"sensoroni.fields.status\"\n to: \"http.response.status_code\"\n - from: \"sensoroni.fields.method\"\n to: \"http.request.method\"\n - from: \"sensoroni.fields.path\"\n to: \"url.path\"\n - from: \"sensoroni.message\"\n to: \"event.action\"\n - from: \"sensoroni.level\"\n to: \"log.level\"\n ignore_missing: true",
|
||||
"custom": "pipeline: common"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"package": {
|
||||
"name": "log",
|
||||
"version": ""
|
||||
},
|
||||
"name": "soc-server-logs",
|
||||
"namespace": "so",
|
||||
"description": "Security Onion Console Logs",
|
||||
"policy_id": "so-grid-nodes_heavy",
|
||||
"inputs": {
|
||||
"logs-logfile": {
|
||||
"enabled": true,
|
||||
"streams": {
|
||||
"log.log": {
|
||||
"enabled": true,
|
||||
"vars": {
|
||||
"paths": [
|
||||
"/opt/so/log/soc/sensoroni-server.log"
|
||||
],
|
||||
"data_stream.dataset": "soc",
|
||||
"tags": ["so-soc"],
|
||||
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"soc\"\n process_array: true\n max_depth: 2\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: server\n- rename:\n fields:\n - from: \"soc.fields.sourceIp\"\n to: \"source.ip\"\n - from: \"soc.fields.status\"\n to: \"http.response.status_code\"\n - from: \"soc.fields.method\"\n to: \"http.request.method\"\n - from: \"soc.fields.path\"\n to: \"url.path\"\n - from: \"soc.message\"\n to: \"event.action\"\n - from: \"soc.level\"\n to: \"log.level\"\n ignore_missing: true",
|
||||
"custom": "pipeline: common"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
"name": "system",
|
||||
"version": ""
|
||||
},
|
||||
"name": "system-grid-nodes",
|
||||
"name": "system-grid-nodes_heavy",
|
||||
"namespace": "default",
|
||||
"inputs": {
|
||||
"system-logfile": {
|
||||
|
||||
@@ -14,12 +14,14 @@ run_installer:
|
||||
- name: salt://elasticfleet/files/so_agent-installers/so-elastic-agent_linux_amd64
|
||||
- cwd: /opt/so
|
||||
- args: -token={{ GRIDNODETOKENGENERAL }}
|
||||
- retry: True
|
||||
{% else %}
|
||||
run_installer:
|
||||
cmd.script:
|
||||
- name: salt://elasticfleet/files/so_agent-installers/so-elastic-agent_linux_amd64
|
||||
- cwd: /opt/so
|
||||
- args: -token={{ GRIDNODETOKENHEAVY }}
|
||||
- retry: True
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
@@ -12,10 +12,11 @@ elasticfleet:
|
||||
config:
|
||||
server:
|
||||
custom_fqdn:
|
||||
description: Custom FQDN for Agents to connect to.
|
||||
description: Custom FQDN for Agents to connect to. One per line.
|
||||
global: True
|
||||
helpLink: elastic-fleet.html
|
||||
advanced: True
|
||||
forcedType: "[]string"
|
||||
enable_auto_configuration:
|
||||
description: Enable auto-configuration of Logstash Outputs & Fleet Host URLs.
|
||||
global: True
|
||||
|
||||
28
salt/elasticfleet/tools/sbin/so-elastic-fleet-common
Executable file → Normal file
28
salt/elasticfleet/tools/sbin/so-elastic-fleet-common
Executable file → Normal file
@@ -42,6 +42,23 @@ elastic_fleet_integration_create() {
|
||||
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
|
||||
}
|
||||
|
||||
|
||||
elastic_fleet_integration_remove() {
|
||||
|
||||
AGENT_POLICY=$1
|
||||
|
||||
NAME=$2
|
||||
|
||||
INTEGRATION_ID=$(/usr/sbin/so-elastic-fleet-agent-policy-view "$AGENT_POLICY" | jq -r '.item.package_policies[] | select(.name=="'"$NAME"'") | .id')
|
||||
|
||||
JSON_STRING=$( jq -n \
|
||||
--arg INTEGRATIONID "$INTEGRATION_ID" \
|
||||
'{"packagePolicyIds":[$INTEGRATIONID]}'
|
||||
)
|
||||
|
||||
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/package_policies/delete" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
|
||||
}
|
||||
|
||||
elastic_fleet_integration_update() {
|
||||
|
||||
UPDATE_ID=$1
|
||||
@@ -56,9 +73,15 @@ elastic_fleet_package_version_check() {
|
||||
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.version'
|
||||
}
|
||||
|
||||
elastic_fleet_package_latest_version_check() {
|
||||
PACKAGE=$1
|
||||
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.latestVersion'
|
||||
}
|
||||
|
||||
elastic_fleet_package_install() {
|
||||
PKGKEY=$1
|
||||
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST -H 'kbn-xsrf: true' "localhost:5601/api/fleet/epm/packages/$PKGKEY"
|
||||
PKG=$1
|
||||
VERSION=$2
|
||||
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{"force":true}' "localhost:5601/api/fleet/epm/packages/$PKG/$VERSION"
|
||||
}
|
||||
|
||||
elastic_fleet_package_is_installed() {
|
||||
@@ -92,3 +115,4 @@ elastic_fleet_policy_update() {
|
||||
|
||||
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/agent_policies/$POLICYID" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#!/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.
|
||||
|
||||
# Usage: Run with --force to update the Elastic Defend integration policy
|
||||
|
||||
. /usr/sbin/so-elastic-fleet-common
|
||||
|
||||
# Manage Elastic Defend Integration for Initial Endpoints Policy
|
||||
for INTEGRATION in /opt/so/conf/elastic-fleet/integrations/elastic-defend/*.json
|
||||
do
|
||||
printf "\n\nInitial Endpoints Policy - Loading $INTEGRATION\n"
|
||||
elastic_fleet_integration_check "endpoints-initial" "$INTEGRATION"
|
||||
if [ -n "$INTEGRATION_ID" ]; then
|
||||
if [ "$1" = "--force" ]; then
|
||||
printf "\n\nIntegration $NAME exists - Updating integration\n"
|
||||
elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"
|
||||
else
|
||||
printf "\n\nIntegration $NAME exists - Not updating - rerun with --force to force the update.\n"
|
||||
fi
|
||||
else
|
||||
printf "\n\nIntegration does not exist - Creating integration\n"
|
||||
elastic_fleet_integration_create "@$INTEGRATION"
|
||||
fi
|
||||
done
|
||||
17
salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-policy-load
Executable file → Normal file
17
salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-policy-load
Executable file → Normal file
@@ -9,16 +9,20 @@
|
||||
RETURN_CODE=0
|
||||
|
||||
if [ ! -f /opt/so/state/eaintegrations.txt ]; then
|
||||
# First, check for any package upgrades
|
||||
/usr/sbin/so-elastic-fleet-package-upgrade
|
||||
|
||||
# Second, configure Elastic Defend Integration seperately
|
||||
/usr/sbin/so-elastic-fleet-integration-policy-elastic-defend
|
||||
|
||||
# Initial Endpoints
|
||||
for INTEGRATION in /opt/so/conf/elastic-fleet/integrations/endpoints-initial/*.json
|
||||
do
|
||||
printf "\n\nInitial Endpoints Policy - Loading $INTEGRATION\n"
|
||||
elastic_fleet_integration_check "endpoints-initial" "$INTEGRATION"
|
||||
if [ -n "$INTEGRATION_ID" ]; then
|
||||
if [ "$NAME" != "elastic-defend-endpoints" ]; then
|
||||
printf "\n\nIntegration $NAME exists - Updating integration\n"
|
||||
elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"
|
||||
fi
|
||||
printf "\n\nIntegration $NAME exists - Updating integration\n"
|
||||
elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"
|
||||
else
|
||||
printf "\n\nIntegration does not exist - Creating integration\n"
|
||||
elastic_fleet_integration_create "@$INTEGRATION"
|
||||
@@ -35,9 +39,7 @@ if [ ! -f /opt/so/state/eaintegrations.txt ]; then
|
||||
elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"
|
||||
else
|
||||
printf "\n\nIntegration does not exist - Creating integration\n"
|
||||
if [ "$NAME" != "elasticsearch-logs" ]; then
|
||||
elastic_fleet_integration_create "@$INTEGRATION"
|
||||
fi
|
||||
elastic_fleet_integration_create "@$INTEGRATION"
|
||||
fi
|
||||
done
|
||||
if [[ "$RETURN_CODE" != "1" ]]; then
|
||||
@@ -66,3 +68,4 @@ else
|
||||
exit $RETURN_CODE
|
||||
fi
|
||||
|
||||
|
||||
|
||||
15
salt/elasticfleet/tools/sbin/so-elastic-fleet-package-list
Executable file
15
salt/elasticfleet/tools/sbin/so-elastic-fleet-package-list
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/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
|
||||
|
||||
# Let's snag a cookie from Kibana
|
||||
SESSIONCOOKIE=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}')
|
||||
|
||||
# List configured package policies
|
||||
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages" -H 'kbn-xsrf: true' | jq
|
||||
|
||||
echo
|
||||
@@ -11,6 +11,12 @@
|
||||
. /usr/sbin/so-common
|
||||
. /usr/sbin/so-elastic-fleet-common
|
||||
|
||||
LOG="/opt/so/log/elasticfleet/so-elastic-agent-gen-installers.log"
|
||||
|
||||
# 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
|
||||
|
||||
for i in {1..30}
|
||||
do
|
||||
ENROLLMENTOKEN=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "localhost:5601/api/fleet/enrollment_api_keys" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' | jq .list | jq -r -c '.[] | select(.policy_id | contains("endpoints-initial")) | .api_key')
|
||||
@@ -40,7 +46,7 @@ do
|
||||
done
|
||||
|
||||
printf "\n### Stripping out unused components"
|
||||
find /nsm/elastic-agent-workspace/elastic-agent-*/data/elastic-agent-*/components -regex '.*fleet.*\|.*packet.*\|.*apm*.*\|.*audit.*\|.*heart.*\|.*cloud.*' -delete
|
||||
find /nsm/elastic-agent-workspace/elastic-agent-*/data/elastic-agent-*/components -maxdepth 1 -regex '.*fleet.*\|.*packet.*\|.*apm.*\|.*audit.*\|.*heart.*\|.*cloud.*' -delete
|
||||
|
||||
printf "\n### Tarring everything up again"
|
||||
for OS in "${OSARCH[@]}"
|
||||
@@ -59,7 +65,7 @@ do
|
||||
if [[ $GOOS == 'darwin/arm64' ]]; then GOOS="darwin" && GOARCH="arm64"; fi
|
||||
printf "\n\n### Generating $GOOS/$GOARCH Installer...\n"
|
||||
docker run -e CGO_ENABLED=0 -e GOOS=$GOOS -e GOARCH=$GOARCH \
|
||||
--mount type=bind,source=/etc/ssl/certs/,target=/workspace/files/cert/ \
|
||||
--mount type=bind,source=/etc/pki/tls/certs/,target=/workspace/files/cert/ \
|
||||
--mount type=bind,source=/nsm/elastic-agent-workspace/,target=/workspace/files/elastic-agent/ \
|
||||
--mount type=bind,source=/opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/,target=/output/ \
|
||||
{{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-agent-builder:{{ GLOBALS.so_version }} go build -ldflags "-X main.fleetHostURLsList=$FLEETHOST -X main.enrollmentToken=$ENROLLMENTOKEN" -o /output/so-elastic-agent_${GOOS}_${GOARCH}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# 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; you may not use
|
||||
# this file except in compliance with the Elastic License 2.0.
|
||||
|
||||
. /usr/sbin/so-common
|
||||
|
||||
# Only run on Managers
|
||||
if ! is_manager_node; then
|
||||
printf "Not a Manager Node... Exiting"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Get current list of Grid Node Agents that need to be upgraded
|
||||
RAW_JSON=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/agents?perPage=20&page=1&kuery=policy_id%20%3A%20so-grid-nodes_%2A&showInactive=false&showUpgradeable=true&getStatusSummary=true")
|
||||
|
||||
# Check to make sure that the server responded with good data - else, bail from script
|
||||
CHECKSUM=$(jq -r '.page' <<< "$RAW_JSON")
|
||||
if [ "$CHECKSUM" -ne 1 ]; then
|
||||
printf "Failed to query for current Grid Agents...\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Generate list of Node Agents that need updates
|
||||
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"
|
||||
|
||||
# Generate updated JSON payload
|
||||
JSON_STRING=$(jq -n --arg ELASTICVERSION $ELASTIC_AGENT_TARBALL_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
|
||||
16
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-inspect
Executable file
16
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-inspect
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/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
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
docker exec so-elastic-agent /usr/share/elastic-agent/elastic-agent inspect
|
||||
{% else %}
|
||||
/bin/elastic-agent inspect
|
||||
{% endif %}
|
||||
16
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-restart
Executable file
16
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-restart
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/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
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
docker exec so-elastic-agent service elastic-agent restart
|
||||
{% else %}
|
||||
service elastic-agent restart
|
||||
{% endif %}
|
||||
17
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-start
Executable file
17
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-start
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/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
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
docker exec so-elastic-agent service elastic-agent start
|
||||
{% else %}
|
||||
service elastic-agent start
|
||||
{% endif %}
|
||||
|
||||
17
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-status
Executable file
17
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-status
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/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
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
docker exec so-elastic-agent /usr/share/elastic-agent/elastic-agent status
|
||||
{% else %}
|
||||
/bin/elastic-agent status
|
||||
{% endif %}
|
||||
|
||||
17
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-stop
Executable file
17
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-stop
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/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
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
docker exec so-elastic-agent service elastic-agent stop
|
||||
{% else %}
|
||||
service elastic-agent stop
|
||||
{% endif %}
|
||||
|
||||
17
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-version
Executable file
17
salt/elasticfleet/tools/sbin_jinja/so-elastic-agent-version
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/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
|
||||
|
||||
{% if grains.role == 'so-heavynode' %}
|
||||
docker exec so-elastic-agent /usr/share/elastic-agent/elastic-agent version
|
||||
{% else %}
|
||||
/bin/elastic-agent version
|
||||
{% endif %}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
# 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; you may not use
|
||||
# this file except in compliance with the Elastic License 2.0.
|
||||
{% from 'vars/globals.map.jinja' import GLOBALS %}
|
||||
|
||||
. /usr/sbin/so-common
|
||||
|
||||
# Only run on Managers
|
||||
if ! is_manager_node; then
|
||||
printf "Not a Manager Node... Exiting"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
function update_es_urls() {
|
||||
|
||||
# Generate updated JSON payload
|
||||
{% if grains.role not in ['so-import', 'so-eval'] %}
|
||||
JSON_STRING=$(jq -n --arg UPDATEDLIST $NEW_LIST_JSON '{"name":"so-manager_elasticsearch","type":"elasticsearch","hosts": $UPDATEDLIST,"config_yaml":""}')
|
||||
{%- else %}
|
||||
JSON_STRING=$(jq -n --arg UPDATEDLIST $NEW_LIST_JSON '{"name":"so-manager_elasticsearch","type":"elasticsearch","hosts": $UPDATEDLIST,"is_default":true,"is_default_monitoring":true,"config_yaml":""}')
|
||||
{%- endif %}
|
||||
# Update Fleet Elasticsearch URLs
|
||||
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/outputs/so-manager_elasticsearch" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
|
||||
}
|
||||
|
||||
# Get current list of Fleet Elasticsearch URLs
|
||||
RAW_JSON=$(curl -K /opt/so/conf/elasticsearch/curl.config 'http://localhost:5601/api/fleet/outputs/so-manager_elasticsearch')
|
||||
|
||||
# Check to make sure that the server responded with good data - else, bail from script
|
||||
CHECKSUM=$(jq -r '.item.id' <<< "$RAW_JSON")
|
||||
if [ "$CHECKSUM" != "so-manager_elasticsearch" ]; then
|
||||
printf "Failed to query for current Fleet Server Elasticsearch URLs..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the current list of Fleet Server Elasticsearch & hash them
|
||||
CURRENT_LIST=$(jq -c -r '.item.hosts' <<< "$RAW_JSON")
|
||||
CURRENT_HASH=$(sha1sum <<< "$CURRENT_LIST" | awk '{print $1}')
|
||||
|
||||
# Create array & add initial elements
|
||||
NEW_LIST=("https://{{ GLOBALS.hostname }}:9200")
|
||||
|
||||
|
||||
# Sort & hash the new list of Fleet Elasticsearch URLs
|
||||
NEW_LIST_JSON=$(jq --compact-output --null-input '$ARGS.positional' --args -- "${NEW_LIST[@]}")
|
||||
NEW_HASH=$(sha1sum <<< "$NEW_LIST_JSON" | awk '{print $1}')
|
||||
|
||||
# Compare the current & new list of URLs - if different, update the Fleet Elasticsearch URLs
|
||||
if [ "$1" = "--force" ]; then
|
||||
printf "\nUpdating List, since --force was specified.\n"
|
||||
printf "Current List: $CURRENT_LIST\nNew List: $NEW_LIST_JSON\n"
|
||||
update_es_urls
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$NEW_HASH" = "$CURRENT_HASH" ]; then
|
||||
printf "\nHashes match - no update needed.\n"
|
||||
printf "Current List: $CURRENT_LIST\nNew List: $NEW_LIST_JSON\n"
|
||||
exit 0
|
||||
else
|
||||
printf "\nHashes don't match - update needed.\n"
|
||||
printf "Current List: $CURRENT_LIST\nNew List: $NEW_LIST_JSON\n"
|
||||
update_es_urls
|
||||
fi
|
||||
@@ -2,7 +2,15 @@
|
||||
# or more contributor license agreements. Licensed under the Elastic License 2.0; you may not use
|
||||
# this file except in compliance with the Elastic License 2.0.
|
||||
{% from 'vars/globals.map.jinja' import GLOBALS %}
|
||||
{% set CUSTOMFQDN = salt['pillar.get']('elasticfleet:config:server:custom_fqdn') %}
|
||||
{% from 'elasticfleet/map.jinja' import ELASTICFLEETMERGED %}
|
||||
|
||||
. /usr/sbin/so-common
|
||||
|
||||
# Only run on Managers
|
||||
if ! is_manager_node; then
|
||||
printf "Not a Manager Node... Exiting"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
function update_logstash_outputs() {
|
||||
# Generate updated JSON payload
|
||||
@@ -27,15 +35,20 @@ CURRENT_LIST=$(jq -c -r '.item.hosts' <<< "$RAW_JSON")
|
||||
CURRENT_HASH=$(sha1sum <<< "$CURRENT_LIST" | awk '{print $1}')
|
||||
|
||||
# Create array & add initial elements
|
||||
if [ "{{ GLOBALS.manager_ip }}" = "{{ GLOBALS.url_base }}" ]; then
|
||||
if [ "{{ GLOBALS.hostname }}" = "{{ GLOBALS.url_base }}" ]; then
|
||||
NEW_LIST=("{{ GLOBALS.url_base }}:5055")
|
||||
else
|
||||
NEW_LIST=("{{ GLOBALS.url_base }}:5055" "{{ GLOBALS.manager_ip }}:5055")
|
||||
NEW_LIST=("{{ GLOBALS.url_base }}:5055" "{{ GLOBALS.hostname }}:5055")
|
||||
fi
|
||||
|
||||
{% if CUSTOMFQDN != "" %}
|
||||
# Add Custom Hostname to list
|
||||
NEW_LIST+=("{{ CUSTOMFQDN }}:5055")
|
||||
# Query for FQDN entries & add them to the list
|
||||
{% if ELASTICFLEETMERGED.config.server.custom_fqdn | length > 0 %}
|
||||
CUSTOMFQDNLIST=('{{ ELASTICFLEETMERGED.config.server.custom_fqdn | join(' ') }}')
|
||||
readarray -t -d ' ' CUSTOMFQDN < <(printf '%s' "$CUSTOMFQDNLIST")
|
||||
for CUSTOMNAME in "${CUSTOMFQDN[@]}"
|
||||
do
|
||||
NEW_LIST+=("$CUSTOMNAME:5055")
|
||||
done
|
||||
{% endif %}
|
||||
|
||||
# Query for the current Grid Nodes that are running Logstash
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
{%- for PACKAGE in SUPPORTED_PACKAGES %}
|
||||
echo "Setting up {{ PACKAGE }} package..."
|
||||
VERSION=$(elastic_fleet_package_version_check "{{ PACKAGE }}")
|
||||
elastic_fleet_package_install "{{ PACKAGE }}-$VERSION"
|
||||
elastic_fleet_package_install "{{ PACKAGE }}" "$VERSION"
|
||||
echo
|
||||
{%- endfor %}
|
||||
echo
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#!/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; you may not use
|
||||
# this file except in compliance with the Elastic License 2.0.
|
||||
{%- import_yaml 'elasticfleet/defaults.yaml' as ELASTICFLEETDEFAULTS %}
|
||||
{%- set SUPPORTED_PACKAGES = salt['pillar.get']('elasticfleet:packages', default=ELASTICFLEETDEFAULTS.elasticfleet.packages, merge=True) %}
|
||||
|
||||
. /usr/sbin/so-elastic-fleet-common
|
||||
|
||||
{%- for PACKAGE in SUPPORTED_PACKAGES %}
|
||||
echo "Upgrading {{ PACKAGE }} package..."
|
||||
VERSION=$(elastic_fleet_package_latest_version_check "{{ PACKAGE }}")
|
||||
elastic_fleet_package_install "{{ PACKAGE }}" "$VERSION"
|
||||
echo
|
||||
{%- endfor %}
|
||||
echo
|
||||
/usr/sbin/so-elasticsearch-templates-load
|
||||
@@ -6,6 +6,8 @@
|
||||
# this file except in compliance with the Elastic License 2.0.
|
||||
{% from 'vars/globals.map.jinja' import GLOBALS %}
|
||||
|
||||
INTCA=/etc/pki/tls/certs/intca.crt
|
||||
|
||||
. /usr/sbin/so-elastic-fleet-common
|
||||
|
||||
printf "\n### Create ES Token ###\n"
|
||||
@@ -13,7 +15,7 @@ ESTOKEN=$(curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5
|
||||
|
||||
### Create Outputs & Fleet URLs ###
|
||||
printf "\nAdd Manager Elasticsearch Output...\n"
|
||||
ESCACRT=$(openssl x509 -in /etc/pki/tls/certs/intca.crt)
|
||||
ESCACRT=$(openssl x509 -in $INTCA)
|
||||
JSON_STRING=$( jq -n \
|
||||
--arg ESCACRT "$ESCACRT" \
|
||||
'{"name":"so-manager_elasticsearch","id":"so-manager_elasticsearch","type":"elasticsearch","hosts":["https://{{ GLOBALS.manager_ip }}:9200","https://{{ GLOBALS.manager }}:9200"],"is_default":true,"is_default_monitoring":true,"config_yaml":"","ssl":{"certificate_authorities": [$ESCACRT]}}' )
|
||||
@@ -22,9 +24,9 @@ printf "\n\n"
|
||||
|
||||
printf "\nCreate Logstash Output Config if node is not an Import or Eval install\n"
|
||||
{% if grains.role not in ['so-import', 'so-eval'] %}
|
||||
LOGSTASHCRT=$(openssl x509 -in /etc/pki/elasticfleet-agent.crt)
|
||||
LOGSTASHKEY=$(openssl rsa -in /etc/pki/elasticfleet-agent.key)
|
||||
LOGSTASHCA=$(openssl x509 -in /etc/pki/tls/certs/intca.crt)
|
||||
LOGSTASHCRT=$(openssl x509 -in /etc/pki/elasticfleet-logstash.crt)
|
||||
LOGSTASHKEY=$(openssl rsa -in /etc/pki/elasticfleet-logstash.key)
|
||||
LOGSTASHCA=$(openssl x509 -in $INTCA)
|
||||
JSON_STRING=$( jq -n \
|
||||
--arg LOGSTASHCRT "$LOGSTASHCRT" \
|
||||
--arg LOGSTASHKEY "$LOGSTASHKEY" \
|
||||
@@ -35,12 +37,12 @@ curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fl
|
||||
printf "\n\n"
|
||||
{%- endif %}
|
||||
|
||||
# Add Manager IP & URL Base to Fleet Host URLs
|
||||
# Add Manager Hostname & URL Base to Fleet Host URLs
|
||||
printf "\nAdd SO-Manager Fleet URL\n"
|
||||
if [ "{{ GLOBALS.manager_ip }}" = "{{ GLOBALS.url_base }}" ]; then
|
||||
if [ "{{ GLOBALS.hostname }}" = "{{ GLOBALS.url_base }}" ]; then
|
||||
JSON_STRING=$( jq -n '{"id":"grid-default","name":"grid-default","is_default":true,"host_urls":["https://{{ GLOBALS.url_base }}:8220"]}')
|
||||
else
|
||||
JSON_STRING=$( jq -n '{"id":"grid-default","name":"grid-default","is_default":true,"host_urls":["https://{{ GLOBALS.url_base }}:8220", "https://{{ GLOBALS.manager_ip }}:8220"]}')
|
||||
JSON_STRING=$( jq -n '{"id":"grid-default","name":"grid-default","is_default":true,"host_urls":["https://{{ GLOBALS.url_base }}:8220", "https://{{ GLOBALS.hostname }}:8220"]}')
|
||||
fi
|
||||
|
||||
## This array replaces whatever URLs are currently configured
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
# 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; you may not use
|
||||
# this file except in compliance with the Elastic License 2.0.
|
||||
{% from 'vars/globals.map.jinja' import GLOBALS %}
|
||||
{% from 'elasticfleet/map.jinja' import ELASTICFLEETMERGED %}
|
||||
|
||||
. /usr/sbin/so-common
|
||||
|
||||
# Only run on Managers
|
||||
if ! is_manager_node; then
|
||||
printf "Not a Manager Node... Exiting"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
function update_fleet_urls() {
|
||||
# Generate updated JSON payload
|
||||
JSON_STRING=$(jq -n --arg UPDATEDLIST $NEW_LIST_JSON '{"name":"grid-default","is_default":true,"host_urls": $UPDATEDLIST}')
|
||||
|
||||
# Update Fleet Server URLs
|
||||
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/fleet_server_hosts/grid-default" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
|
||||
}
|
||||
|
||||
# Get current list of Fleet Server URLs
|
||||
RAW_JSON=$(curl -K /opt/so/conf/elasticsearch/curl.config 'http://localhost:5601/api/fleet/fleet_server_hosts/grid-default')
|
||||
|
||||
# Check to make sure that the server responded with good data - else, bail from script
|
||||
CHECKSUM=$(jq -r '.item.id' <<< "$RAW_JSON")
|
||||
if [ "$CHECKSUM" != "grid-default" ]; then
|
||||
printf "Failed to query for current Fleet Server URLs..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the current list of Fleet Server URLs & hash them
|
||||
CURRENT_LIST=$(jq -c -r '.item.host_urls' <<< "$RAW_JSON")
|
||||
CURRENT_HASH=$(sha1sum <<< "$CURRENT_LIST" | awk '{print $1}')
|
||||
|
||||
# Create array & add initial elements
|
||||
if [ "{{ GLOBALS.hostname }}" = "{{ GLOBALS.url_base }}" ]; then
|
||||
NEW_LIST=("https://{{ GLOBALS.url_base }}:8220")
|
||||
else
|
||||
NEW_LIST=("https://{{ GLOBALS.url_base }}:8220" "https://{{ GLOBALS.hostname }}:8220")
|
||||
fi
|
||||
|
||||
# Query for FQDN entries & add them to the list
|
||||
{% if ELASTICFLEETMERGED.config.server.custom_fqdn | length > 0 %}
|
||||
CUSTOMFQDNLIST=('{{ ELASTICFLEETMERGED.config.server.custom_fqdn | join(' ') }}')
|
||||
readarray -t -d ' ' CUSTOMFQDN < <(printf '%s' "$CUSTOMFQDNLIST")
|
||||
for CUSTOMNAME in "${CUSTOMFQDN[@]}"
|
||||
do
|
||||
NEW_LIST+=("https://$CUSTOMNAME:8220")
|
||||
done
|
||||
{% endif %}
|
||||
|
||||
# Query for the current Grid Nodes that are running Logstash (which includes Fleet Nodes)
|
||||
LOGSTASHNODES=$(salt-call --out=json pillar.get logstash:nodes | jq '.local')
|
||||
|
||||
# Query for Fleet Nodes & add them to the list (Hostname)
|
||||
if grep -q "fleet" <<< $LOGSTASHNODES; then
|
||||
readarray -t FLEETNODES < <(jq -r ' .fleet | keys_unsorted[]' <<< $LOGSTASHNODES)
|
||||
for NODE in "${FLEETNODES[@]}"
|
||||
do
|
||||
NEW_LIST+=("https://$NODE:8220")
|
||||
done
|
||||
fi
|
||||
|
||||
# Sort & hash the new list of Fleet Server URLs
|
||||
NEW_LIST_JSON=$(jq --compact-output --null-input '$ARGS.positional' --args -- "${NEW_LIST[@]}")
|
||||
NEW_HASH=$(sha1sum <<< "$NEW_LIST_JSON" | awk '{print $1}')
|
||||
|
||||
# Compare the current & new list of URLs - if different, update the Fleet Server URLs & regenerate the agent installer
|
||||
if [ "$NEW_HASH" = "$CURRENT_HASH" ]; then
|
||||
printf "\nHashes match - no update needed.\n"
|
||||
printf "Current List: $CURRENT_LIST\nNew List: $NEW_LIST_JSON\n"
|
||||
exit 0
|
||||
else
|
||||
printf "\nHashes don't match - update needed.\n"
|
||||
printf "Current List: $CURRENT_LIST\nNew List: $NEW_LIST_JSON\n"
|
||||
update_fleet_urls
|
||||
/sbin/so-elastic-agent-gen-installers >> /opt/so/log/elasticfleet/so-elastic-agent-gen-installers.log &
|
||||
fi
|
||||
@@ -21,7 +21,7 @@
|
||||
{% do ELASTICSEARCHDEFAULTS.elasticsearch.config.discovery.seed_hosts.append(NODE.keys()|first) %}
|
||||
{% endfor %}
|
||||
{% if grains.id.split('_') | last == 'manager' %}
|
||||
{% do ELASTICSEARCHDEFAULTS.elasticsearch.config.node.update({'roles': ['master','data','remote_cluster_client']}) %}
|
||||
{% do ELASTICSEARCHDEFAULTS.elasticsearch.config.node.update({'roles': ['master','data','remote_cluster_client','transform']}) %}
|
||||
{% else %}
|
||||
{% do ELASTICSEARCHDEFAULTS.elasticsearch.config.node.update({'roles': ['master', 'data_hot', 'remote_cluster_client']}) %}
|
||||
{% endif %}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -59,7 +59,7 @@ so-elasticsearch:
|
||||
{% if GLOBALS.is_manager %}
|
||||
- /etc/pki/ca.crt:/usr/share/elasticsearch/config/ca.crt:ro
|
||||
{% else %}
|
||||
- /etc/ssl/certs/intca.crt:/usr/share/elasticsearch/config/ca.crt:ro
|
||||
- /etc/pki/tls/certs/intca.crt:/usr/share/elasticsearch/config/ca.crt:ro
|
||||
{% endif %}
|
||||
- /etc/pki/elasticsearch.crt:/usr/share/elasticsearch/config/elasticsearch.crt:ro
|
||||
- /etc/pki/elasticsearch.key:/usr/share/elasticsearch/config/elasticsearch.key:ro
|
||||
@@ -108,6 +108,7 @@ escomponenttemplates:
|
||||
- source: salt://elasticsearch/templates/component
|
||||
- user: 930
|
||||
- group: 939
|
||||
- clean: True
|
||||
- onchanges_in:
|
||||
- cmd: so-elasticsearch-templates
|
||||
|
||||
|
||||
@@ -72,8 +72,16 @@
|
||||
{ "set": { "ignore_failure": true, "field": "event.module", "value": "elastic_agent" } },
|
||||
{ "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}}" } },
|
||||
{ "split": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "separator": "\\.", "target_field": "dataset_tag_temp" } },
|
||||
{ "append": { "if": "ctx.dataset_tag_temp != null", "field": "tags", "value": "{{dataset_tag_temp.1}}" } },
|
||||
{ "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}}" } },
|
||||
{ "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" } },
|
||||
{ "date": { "if": "ctx.event?.module == 'system'", "field": "event.created", "target_field": "@timestamp", "formats": ["yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"] } },
|
||||
{ "community_id":{ "if": "ctx.event?.dataset == 'endpoint.events.network'", "ignore_failure":true } },
|
||||
{ "remove": { "field": [ "message2", "type", "fields", "category", "module", "dataset", "event.dataset_temp", "dataset_tag_temp", "module_temp" ], "ignore_missing": true, "ignore_failure": true } }
|
||||
],
|
||||
"on_failure": [
|
||||
|
||||
@@ -49,11 +49,10 @@
|
||||
"on_failure" : [ {"set" : {"field" : "error.message","value" : "{{ _ingest.on_failure_message }}"}}]
|
||||
}
|
||||
},
|
||||
{ "set": { "field": "_index", "value": "so-firewall", "override": true } },
|
||||
{ "set": { "if": "ctx.network?.transport_id == '0'", "field": "network.transport", "value": "icmp", "override": true } },
|
||||
{ "community_id": {} },
|
||||
{ "set": { "field": "module", "value": "pfsense", "override": true } },
|
||||
{ "set": { "field": "dataset", "value": "firewall", "override": true } },
|
||||
{ "set": { "field": "event.module", "value": "pfsense", "override": true } },
|
||||
{ "set": { "field": "event.dataset", "value": "firewall", "override": true } },
|
||||
{ "set": { "field": "category", "value": "network", "override": true } },
|
||||
{ "remove": { "field": ["real_message", "ip_sub_msg", "firewall.sub_message"], "ignore_failure": true } }
|
||||
]
|
||||
|
||||
@@ -63,7 +63,8 @@
|
||||
{ "set": { "if": "ctx.rule?.score != null && ctx.rule?.score >= 50 && ctx.rule?.score <=69", "field": "event.severity", "value": 2, "override": true } },
|
||||
{ "set": { "if": "ctx.rule?.score != null && ctx.rule?.score >= 70 && ctx.rule?.score <=89", "field": "event.severity", "value": 3, "override": true } },
|
||||
{ "set": { "if": "ctx.rule?.score != null && ctx.rule?.score >= 90", "field": "event.severity", "value": 4, "override": true } },
|
||||
{ "set": { "if": "ctx.scan?.entropy?.entropy == 0", "field": "scan.entropy.entropy", "value": 0.0, "override": true } },
|
||||
{ "set": { "if": "ctx.scan?.entropy?.entropy == '0'", "field": "scan.entropy.entropy", "value": "0.0", "override": true } },
|
||||
{ "set": { "if": "ctx.scan?.pe?.image_version == '0'", "field": "scan.pe.image_version", "value": "0.0", "override": true } },
|
||||
{ "set": { "field": "observer.name", "value": "{{agent.name}}" }},
|
||||
{ "convert" : { "field" : "scan.exiftool","type": "string", "ignore_missing":true }},
|
||||
{ "remove": { "field": ["host", "path", "message", "exiftool", "scan.yara.meta"], "ignore_missing": true } },
|
||||
|
||||
@@ -46,28 +46,37 @@ elasticsearch:
|
||||
description: Max number of boolean clauses per query.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
index_settings:
|
||||
so-elasticsearch: &indexSettings
|
||||
warm:
|
||||
description: Age (in days) of this index before it will move to warm storage, if warm nodes are present. Once moved, events on this index can take longer to fetch.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
close:
|
||||
description: Age (in days) of this index before it will be closed. Once closed, events on this index cannot be retrieved without first re-opening the index.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
delete:
|
||||
description: Age (in days) of this index before it will be deleted. Once deleted, events are permanently unrecoverable.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
index_settings:
|
||||
global_overrides:
|
||||
index_template:
|
||||
template:
|
||||
settings:
|
||||
index:
|
||||
number_of_replicas:
|
||||
description: Number of replicas required for all indices. Multiple replicas protects against data loss, but also increases storage costs. This setting will be applied to all indices.
|
||||
forcedType: int
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
so-logs: &indexSettings
|
||||
index_sorting:
|
||||
description: Sorts the index by event time, at the cost of additional processing resource consumption.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
index_template:
|
||||
index_patterns:
|
||||
description: Patterns for matching multiple indices or tables.
|
||||
forceType: "[]string"
|
||||
multiline: True
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
template:
|
||||
settings:
|
||||
index:
|
||||
number_of_replicas:
|
||||
description: Number of replicas required for this index. Multiple replicas protects against data loss, but also increases storage costs.
|
||||
forcedType: int
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
mapping:
|
||||
total_fields:
|
||||
limit:
|
||||
@@ -75,17 +84,59 @@ elasticsearch:
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
refresh_interval:
|
||||
description: Seconds between index refreshes. Shorter intervals can cause query performance to suffer since this is a synchronous and resource-intensive operation.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
description: Seconds between index refreshes. Shorter intervals can cause query performance to suffer since this is a synchronous and resource-intensive operation.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
number_of_shards:
|
||||
description: Number of shards required for this index. Using multiple shards increases fault tolerance, but also increases storage and network costs.
|
||||
description: Number of shards required for this index. Using multiple shards increases fault tolerance, but also increases storage and network costs.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
sort:
|
||||
field:
|
||||
description: The field to sort by. Must set index_sorting to True.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
number_of_replicas:
|
||||
description: Number of replicas required for this index. Multiple replicas protects against data loss, but also increases storage costs.
|
||||
order:
|
||||
description: The order to sort by. Must set index_sorting to True.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
mappings:
|
||||
_meta:
|
||||
package:
|
||||
name:
|
||||
description: Meta settings for the mapping.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
managed_by:
|
||||
description: Meta settings for the mapping.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
managed:
|
||||
description: Meta settings for the mapping.
|
||||
forcedType: bool
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
composed_of:
|
||||
description: The index template is composed of these component templates.
|
||||
forcedType: "[]string"
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
priority:
|
||||
description: The priority of the index template.
|
||||
forcedType: int
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
data_stream:
|
||||
hidden:
|
||||
description: Hide the data stream.
|
||||
forcedType: bool
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
allow_custom_routing:
|
||||
description: Allow custom routing for the data stream.
|
||||
forcedType: bool
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
policy:
|
||||
phases:
|
||||
hot:
|
||||
@@ -97,6 +148,7 @@ elasticsearch:
|
||||
set_priority:
|
||||
priority:
|
||||
description: Priority of index. This is used for recovery after a node restart. Indices with higher priorities are recovered before indices with lower priorities.
|
||||
forcedType: int
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
rollover:
|
||||
@@ -117,19 +169,178 @@ elasticsearch:
|
||||
set_priority:
|
||||
priority:
|
||||
description: Used for index recovery after a node restart. Indices with higher priorities are recovered before indices with lower priorities.
|
||||
forcedType: int
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
delete:
|
||||
min_age:
|
||||
description: Minimum age of index. This determines when the index should be deleted.
|
||||
global: True
|
||||
helpLink: elastic
|
||||
helpLink: elasticsearch.html
|
||||
_meta:
|
||||
package:
|
||||
name:
|
||||
description: Meta settings for the mapping.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
managed_by:
|
||||
description: Meta settings for the mapping.
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
managed:
|
||||
description: Meta settings for the mapping.
|
||||
forcedType: bool
|
||||
global: True
|
||||
helpLink: elasticsearch.html
|
||||
so-logs-system_x_auth: *indexSettings
|
||||
so-logs-system_x_syslog: *indexSettings
|
||||
so-logs-system_x_system: *indexSettings
|
||||
so-logs-system_x_application: *indexSettings
|
||||
so-logs-system_x_security: *indexSettings
|
||||
so-logs-windows_x_forwarded: *indexSettings
|
||||
so-logs-windows_x_powershell: *indexSettings
|
||||
so-logs-windows_x_powershell_operational: *indexSettings
|
||||
so-logs-windows_x_sysmon_operational: *indexSettings
|
||||
so-logs-apache_x_access: *indexSettings
|
||||
so-logs-apache_x_error: *indexSettings
|
||||
so-logs-auditd_x_log: *indexSettings
|
||||
so-logs-aws_x_cloudtrail: *indexSettings
|
||||
so-logs-aws_x_cloudwatch_logs: *indexSettings
|
||||
so-logs-aws_x_ec2_logs: *indexSettings
|
||||
so-logs-aws_x_elb_logs: *indexSettings
|
||||
so-logs-aws_x_firewall_logs: *indexSettings
|
||||
so-logs-aws_x_route53_public_logs: *indexSettings
|
||||
so-logs-aws_x_route53_resolver_logs: *indexSettings
|
||||
so-logs-aws_x_s3access: *indexSettings
|
||||
so-logs-aws_x_vpcflow: *indexSettings
|
||||
so-logs-aws_x_waf: *indexSettings
|
||||
so-logs-azure_x_activitylogs: *indexSettings
|
||||
so-logs-azure_x_application_gateway: *indexSettings
|
||||
so-logs-azure_x_auditlogs: *indexSettings
|
||||
so-logs-azure_x_eventhub: *indexSettings
|
||||
so-logs-azure_x_firewall_logs: *indexSettings
|
||||
so-logs-azure_x_identity_protection: *indexSettings
|
||||
so-logs-azure_x_platformlogs: *indexSettings
|
||||
so-logs-azure_x_provisioning: *indexSettings
|
||||
so-logs-azure_x_signinlogs: *indexSettings
|
||||
so-logs-azure_x_springcloudlogs: *indexSettings
|
||||
so-logs-barracuda_x_waf: *indexSettings
|
||||
so-logs-cisco_asa_x_log: *indexSettings
|
||||
so-logs-cloudflare_x_audit: *indexSettings
|
||||
so-logs-cloudflare_x_logpull: *indexSettings
|
||||
so-logs-crowdstrike_x_falcon: *indexSettings
|
||||
so-logs-crowdstrike_x_fdr: *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
|
||||
so-logs-f5_bigip_x_log: *indexSettings
|
||||
so-logs-fim_x_event: *indexSettings
|
||||
so-logs-fortinet_x_clientendpoint: *indexSettings
|
||||
so-logs-fortinet_x_firewall: *indexSettings
|
||||
so-logs-fortinet_x_fortimail: *indexSettings
|
||||
so-logs-fortinet_x_fortimanager: *indexSettings
|
||||
so-logs-fortinet_x_fortigate: *indexSettings
|
||||
so-logs-gcp_x_audit: *indexSettings
|
||||
so-logs-gcp_x_dns: *indexSettings
|
||||
so-logs-gcp_x_firewall: *indexSettings
|
||||
so-logs-gcp_x_loadbalancing_logs: *indexSettings
|
||||
so-logs-gcp_x_vpcflow: *indexSettings
|
||||
so-logs-github_x_audit: *indexSettings
|
||||
so-logs-github_x_code_scanning: *indexSettings
|
||||
so-logs-github_x_dependabot: *indexSettings
|
||||
so-logs-github_x_issues: *indexSettings
|
||||
so-logs-github_x_secret_scanning: *indexSettings
|
||||
so-logs-google_workspace_x_access_transparency: *indexSettings
|
||||
so-logs-google_workspace_x_admin: *indexSettings
|
||||
so-logs-google_workspace_x_alert: *indexSettings
|
||||
so-logs-google_workspace_x_context_aware_access: *indexSettings
|
||||
so-logs-google_workspace_x_device: *indexSettings
|
||||
so-logs-google_workspace_x_drive: *indexSettings
|
||||
so-logs-google_workspace_x_gcp: *indexSettings
|
||||
so-logs-google_workspace_x_group_enterprise: *indexSettings
|
||||
so-logs-google_workspace_x_groups: *indexSettings
|
||||
so-logs-google_workspace_x_login: *indexSettings
|
||||
so-logs-google_workspace_x_rules: *indexSettings
|
||||
so-logs-google_workspace_x_saml: *indexSettings
|
||||
so-logs-google_workspace_x_token: *indexSettings
|
||||
so-logs-google_workspace_x_user_accounts: *indexSettings
|
||||
so-logs-http_endpoint_x_generic: *indexSettings
|
||||
so-logs-httpjson_x_generic: *indexSettings
|
||||
so-logs-juniper_x_junos: *indexSettings
|
||||
so-logs-juniper_x_netscreen: *indexSettings
|
||||
so-logs-juniper_x_srx: *indexSettings
|
||||
so-logs-juniper_srx_x_log: *indexSettings
|
||||
so-logs-kafka_log_x_generic: *indexSettings
|
||||
so-logs-lastpass_x_detailed_shared_folder: *indexSettings
|
||||
so-logs-lastpass_x_event_report: *indexSettings
|
||||
so-logs-lastpass_x_user: *indexSettings
|
||||
so-logs-m365_defender_x_event: *indexSettings
|
||||
so-logs-m365_defender_x_incident: *indexSettings
|
||||
so-logs-m365_defender_x_log: *indexSettings
|
||||
so-logs-microsoft_defender_endpoint_x_log: *indexSettings
|
||||
so-logs-microsoft_dhcp_x_log: *indexSettings
|
||||
so-logs-netflow_x_log: *indexSettings
|
||||
so-logs-o365_x_audit: *indexSettings
|
||||
so-logs-okta_x_system: *indexSettings
|
||||
so-logs-panw_x_panos: *indexSettings
|
||||
so-logs-pfsense_x_log: *indexSettings
|
||||
so-logs-sentinel_one_x_activity: *indexSettings
|
||||
so-logs-sentinel_one_x_agent: *indexSettings
|
||||
so-logs-sentinel_one_x_alert: *indexSettings
|
||||
so-logs-sentinel_one_x_group: *indexSettings
|
||||
so-logs-sentinel_one_x_threat: *indexSettings
|
||||
so-logs-sonicwall_firewall_x_log: *indexSettings
|
||||
so-logs-symantec_endpoint_x_log: *indexSettings
|
||||
so-logs-ti_abusech_x_malware: *indexSettings
|
||||
so-logs-ti_abusech_x_malwarebazaar: *indexSettings
|
||||
so-logs-ti_abusech_x_threatfox: *indexSettings
|
||||
so-logs-ti_abusech_x_url: *indexSettings
|
||||
so-logs-ti_misp_x_threat: *indexSettings
|
||||
so-logs-ti_misp_x_threat_attributes: *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-zscaler_zia_x_alerts: *indexSettings
|
||||
so-logs-zscaler_zia_x_dns: *indexSettings
|
||||
so-logs-zscaler_zia_x_firewall: *indexSettings
|
||||
so-logs-zscaler_zia_x_tunnel: *indexSettings
|
||||
so-logs-zscaler_zia_x_web: *indexSettings
|
||||
so-logs-zscaler_zpa_x_app_connector_status: *indexSettings
|
||||
so-logs-zscaler_zpa_x_audit: *indexSettings
|
||||
so-logs-zscaler_zpa_x_browser_access: *indexSettings
|
||||
so-logs-zscaler_zpa_x_user_activity: *indexSettings
|
||||
so-logs-zscaler_zpa_x_user_status: *indexSettings
|
||||
so-logs-1password_x_item_usages: *indexSettings
|
||||
so-logs-1password_x_signin_attempts: *indexSettings
|
||||
so-logs-osquery-manager-actions: *indexSettings
|
||||
so-logs-osquery-manager-action_x_responses: *indexSettings
|
||||
so-logs-elastic_agent_x_apm_server: *indexSettings
|
||||
so-logs-elastic_agent_x_auditbeat: *indexSettings
|
||||
so-logs-elastic_agent_x_cloudbeat: *indexSettings
|
||||
so-logs-elastic_agent_x_endpoint_security: *indexSettings
|
||||
so-logs-endpoint_x_alerts: *indexSettings
|
||||
so-logs-endpoint_x_events_x_api: *indexSettings
|
||||
so-logs-endpoint_x_events_x_file: *indexSettings
|
||||
so-logs-endpoint_x_events_x_library: *indexSettings
|
||||
so-logs-endpoint_x_events_x_network: *indexSettings
|
||||
so-logs-endpoint_x_events_x_process: *indexSettings
|
||||
so-logs-endpoint_x_events_x_registry: *indexSettings
|
||||
so-logs-endpoint_x_events_x_security: *indexSettings
|
||||
so-logs-elastic_agent_x_filebeat: *indexSettings
|
||||
so-logs-elastic_agent_x_fleet_server: *indexSettings
|
||||
so-logs-elastic_agent_x_heartbeat: *indexSettings
|
||||
so-logs-elastic_agent: *indexSettings
|
||||
so-logs-elastic_agent_x_metricbeat: *indexSettings
|
||||
so-logs-elastic_agent_x_osquerybeat: *indexSettings
|
||||
so-logs-elastic_agent_x_packetbeat: *indexSettings
|
||||
so-case: *indexSettings
|
||||
so-common: *indexSettings
|
||||
so-endgame: *indexSettings
|
||||
so-firewall: *indexSettings
|
||||
so-idh: *indexSettings
|
||||
so-suricata: *indexSettings
|
||||
so-import: *indexSettings
|
||||
so-kibana: *indexSettings
|
||||
so-kratos: *indexSettings
|
||||
so-logstash: *indexSettings
|
||||
so-osquery: *indexSettings
|
||||
so-redis: *indexSettings
|
||||
so-strelka: *indexSettings
|
||||
so-syslog: *indexSettings
|
||||
|
||||
@@ -1,9 +1,28 @@
|
||||
{% import_yaml 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS with context %}
|
||||
{%- set ES_INDEX_SETTINGS = salt['pillar.get']('elasticsearch:index_settings', default=ELASTICSEARCHDEFAULTS.elasticsearch.index_settings, merge=True) %}
|
||||
{% for index, settings in ES_INDEX_SETTINGS.items() %}
|
||||
{% if settings.index_template is defined %}
|
||||
{% if not settings.get('index_sorting', False) | to_bool and settings.index_template.template.settings.index.sort is defined %}
|
||||
{% do settings.index_template.template.settings.index.pop('sort') %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% import_yaml 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS %}
|
||||
{% set DEFAULT_GLOBAL_OVERRIDES = ELASTICSEARCHDEFAULTS.elasticsearch.index_settings.pop('global_overrides') %}
|
||||
|
||||
{% set PILLAR_GLOBAL_OVERRIDES = {} %}
|
||||
{% if salt['pillar.get']('elasticsearch:index_settings') is defined %}
|
||||
{% set ES_INDEX_PILLAR = salt['pillar.get']('elasticsearch:index_settings') %}
|
||||
{% if ES_INDEX_PILLAR.global_overrides is defined %}
|
||||
{% set PILLAR_GLOBAL_OVERRIDES = ES_INDEX_PILLAR.pop('global_overrides') %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% set ES_INDEX_SETTINGS_ORIG = ELASTICSEARCHDEFAULTS.elasticsearch.index_settings %}
|
||||
|
||||
{% set ES_INDEX_SETTINGS_GLOBAL_OVERRIDES = {} %}
|
||||
{% for index in ES_INDEX_SETTINGS_ORIG.keys() %}
|
||||
{% do ES_INDEX_SETTINGS_GLOBAL_OVERRIDES.update({index: salt['defaults.merge'](ELASTICSEARCHDEFAULTS.elasticsearch.index_settings[index], PILLAR_GLOBAL_OVERRIDES, in_place=False)}) %}
|
||||
{% endfor %}
|
||||
|
||||
{% set ES_INDEX_SETTINGS = {} %}
|
||||
{% do ES_INDEX_SETTINGS_GLOBAL_OVERRIDES.update(salt['defaults.merge'](ES_INDEX_SETTINGS_GLOBAL_OVERRIDES, ES_INDEX_PILLAR, in_place=False)) %}
|
||||
{% for index, settings in ES_INDEX_SETTINGS_GLOBAL_OVERRIDES.items() %}
|
||||
{% if settings.index_template is defined %}
|
||||
{% if not settings.get('index_sorting', False) | to_bool and settings.index_template.template.settings.index.sort is defined %}
|
||||
{% do settings.index_template.template.settings.index.pop('sort') %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% do ES_INDEX_SETTINGS.update({index | replace("_x_", "."): ES_INDEX_SETTINGS_GLOBAL_OVERRIDES[index]}) %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -4,46 +4,6 @@
|
||||
"ecs_version": "1.12.2"
|
||||
},
|
||||
"template": {
|
||||
"settings": {
|
||||
"analysis": {
|
||||
"analyzer": {
|
||||
"es_security_analyzer": {
|
||||
"type": "custom",
|
||||
"char_filter": [
|
||||
"whitespace_no_way"
|
||||
],
|
||||
"filter": [
|
||||
"lowercase",
|
||||
"trim"
|
||||
],
|
||||
"tokenizer": "keyword"
|
||||
}
|
||||
},
|
||||
"char_filter": {
|
||||
"whitespace_no_way": {
|
||||
"type": "pattern_replace",
|
||||
"pattern": "(\\s)+",
|
||||
"replacement": "$1"
|
||||
}
|
||||
},
|
||||
"filter": {
|
||||
"path_hierarchy_pattern_filter": {
|
||||
"type": "pattern_capture",
|
||||
"preserve_original": true,
|
||||
"patterns": [
|
||||
"((?:[^\\\\]*\\\\)*)(.*)",
|
||||
"((?:[^/]*/)*)(.*)"
|
||||
]
|
||||
}
|
||||
},
|
||||
"tokenizer": {
|
||||
"path_tokenizer": {
|
||||
"type": "path_hierarchy",
|
||||
"delimiter": "\\"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"agent": {
|
||||
@@ -52,69 +12,33 @@
|
||||
"properties": {
|
||||
"original": {
|
||||
"ignore_above": 1024,
|
||||
"type": "keyword",
|
||||
"fields": {
|
||||
"security": {
|
||||
"type": "text",
|
||||
"analyzer": "es_security_analyzer"
|
||||
}
|
||||
}
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ephemeral_id": {
|
||||
"ignore_above": 1024,
|
||||
"type": "keyword",
|
||||
"fields": {
|
||||
"security": {
|
||||
"type": "text",
|
||||
"analyzer": "es_security_analyzer"
|
||||
}
|
||||
}
|
||||
"type": "keyword"
|
||||
},
|
||||
"id": {
|
||||
"ignore_above": 1024,
|
||||
"type": "keyword",
|
||||
"fields": {
|
||||
"security": {
|
||||
"type": "text",
|
||||
"analyzer": "es_security_analyzer"
|
||||
}
|
||||
}
|
||||
"type": "keyword"
|
||||
},
|
||||
"name": {
|
||||
"ignore_above": 1024,
|
||||
"type": "keyword",
|
||||
"fields": {
|
||||
"security": {
|
||||
"type": "text",
|
||||
"analyzer": "es_security_analyzer"
|
||||
}
|
||||
}
|
||||
"type": "keyword"
|
||||
},
|
||||
"type": {
|
||||
"ignore_above": 1024,
|
||||
"type": "keyword",
|
||||
"fields": {
|
||||
"security": {
|
||||
"type": "text",
|
||||
"analyzer": "es_security_analyzer"
|
||||
}
|
||||
}
|
||||
"type": "keyword"
|
||||
},
|
||||
"version": {
|
||||
"ignore_above": 1024,
|
||||
"type": "keyword",
|
||||
"fields": {
|
||||
"security": {
|
||||
"type": "text",
|
||||
"analyzer": "es_security_analyzer"
|
||||
}
|
||||
}
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -4,46 +4,6 @@
|
||||
"ecs_version": "1.12.2"
|
||||
},
|
||||
"template": {
|
||||
"settings": {
|
||||
"analysis": {
|
||||
"analyzer": {
|
||||
"es_security_analyzer": {
|
||||
"type": "custom",
|
||||
"char_filter": [
|
||||
"whitespace_no_way"
|
||||
],
|
||||
"filter": [
|
||||
"lowercase",
|
||||
"trim"
|
||||
],
|
||||
"tokenizer": "keyword"
|
||||
}
|
||||
},
|
||||
"char_filter": {
|
||||
"whitespace_no_way": {
|
||||
"type": "pattern_replace",
|
||||
"pattern": "(\\s)+",
|
||||
"replacement": "$1"
|
||||
}
|
||||
},
|
||||
"filter": {
|
||||
"path_hierarchy_pattern_filter": {
|
||||
"type": "pattern_capture",
|
||||
"preserve_original": true,
|
||||
"patterns": [
|
||||
"((?:[^\\\\]*\\\\)*)(.*)",
|
||||
"((?:[^/]*/)*)(.*)"
|
||||
]
|
||||
}
|
||||
},
|
||||
"tokenizer": {
|
||||
"path_tokenizer": {
|
||||
"type": "path_hierarchy",
|
||||
"delimiter": "\\"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"@timestamp": {
|
||||
@@ -57,15 +17,9 @@
|
||||
},
|
||||
"tags": {
|
||||
"ignore_above": 1024,
|
||||
"type": "keyword",
|
||||
"fields": {
|
||||
"security": {
|
||||
"type": "text",
|
||||
"analyzer": "es_security_analyzer"
|
||||
}
|
||||
}
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user