Skip to content

Commit 1d23339

Browse files
authored
Merge pull request #1792 from utmstack/release/v11.2.3
2 parents bf2d4d1 + 54c33da commit 1d23339

File tree

192 files changed

+58387
-3249
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

192 files changed

+58387
-3249
lines changed

.github/workflows/v11-deployment-pipeline.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ jobs:
522522
-H "Content-Type: application/json" \
523523
-H "id: $auth_id" \
524524
-H "key: $auth_key" \
525-
-d "{\"instance_id\": \"$instance_id\", \"version\": \"$TAG\"}")
525+
-d "{\"instances_ids\": [\"$instance_id\"], \"version\": \"$TAG\"}")
526526
527527
http_code=$(echo "$response" | tail -n1)
528528
body=$(echo "$response" | sed '$d')

README.md

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,32 @@
1-
<h1 align="center">
2-
<br>
3-
<a href="https://utmstack.com"><img src="https://utmstack.com/wp-content/uploads/2023/02/utmstack-logo-favicon.png?v=2" width="200px" alt="UTMStack"></a>
4-
</h1>
1+
# UTMStack
52

63
<p align="center">
7-
<a href="https://github.com/utmstack/UTMStack/graphs/contributors"><img src="https://img.shields.io/github/contributors-anon/utmstack/utmstack">
8-
<a href="https://github.com/utmstack/UTMStack/releases/"><img src="https://img.shields.io/github/release/utmstack/utmstack">
9-
<a href="https://github.com/utmstack/UTMStack/issues"><img src="https://img.shields.io/github/issues-raw/utmstack/utmstack">
10-
<a href="https://github.com/utmstack/UTMStack/commits/main"><img src="https://img.shields.io/github/commit-activity/m/utmstack/utmstack">
11-
<a href="https://github.com/utmstack/UTMStack/blob/master/LICENSE"><img src="https://img.shields.io/github/license/ad-aures/castopod?color=blue">
12-
<a href="https://discord.gg/ZznvZ8xcHh"><img src="https://img.shields.io/discord/1154016563775672400.svg?logo=discord">
4+
<a href="https://utmstack.com">
5+
<img src="https://utmstack.com/wp-content/uploads/2023/02/utmstack-logo-favicon.png?v=2" alt="UTMStack" width="150px">
6+
</a>
137
</p>
148

15-
<h4 align="center">Enterprise-ready SIEM and XDR powered by Real-Time correlation and Threat Intelligence</h4>
9+
[![Contributors](https://img.shields.io/github/contributors-anon/utmstack/utmstack)](https://github.com/utmstack/UTMStack/graphs/contributors)
10+
[![Release](https://img.shields.io/github/release/utmstack/utmstack)](https://github.com/utmstack/UTMStack/releases/)
11+
[![Issues](https://img.shields.io/github/issues-raw/utmstack/utmstack)](https://github.com/utmstack/UTMStack/issues)
12+
[![Commit Activity](https://img.shields.io/github/commit-activity/m/utmstack/utmstack)](https://github.com/utmstack/UTMStack/commits/main)
13+
[![License](https://img.shields.io/github/license/ad-aures/castopod?color=blue)](https://github.com/utmstack/UTMStack/blob/master/LICENSE)
14+
[![Discord](https://img.shields.io/discord/1154016563775672400.svg?logo=discord)](https://discord.gg/ZznvZ8xcHh)
1615

17-
## Introduction
16+
#### Enterprise-ready SIEM and XDR powered by Real-Time correlation and Threat Intelligence
1817

19-
Welcome to the UTMStack open-source project! UTMStack is a unified threat management platform that merges SIEM (Security Information and Event Management) and XDR (Extended Detection and Response) technologies. Our unique approach allows real-time correlation of log data, threat intelligence, and malware activity patterns from multiple sources, enabling the identification and halting of complex threats that use stealthy techniques. Visit an [online demo here.](https://utmstack.com/demo)
18+
## Introduction
2019

21-
We have a [dedicated repository](https://github.com/utmstack/rules) for correlation rules, contributors are welcome to submit a pull request.
20+
Welcome to the UTMStack open-source project! UTMStack is a unified threat management platform that merges SIEM (Security Information and Event Management) and XDR (Extended Detection and Response) technologies. Our unique approach allows real-time correlation of log data, threat intelligence, and malware activity patterns from multiple sources, enabling the identification and halting of complex threats that use stealthy techniques. Visit an [online demo here.](https://utmstack.com/demo)
2221

23-
<h1 align="center">
24-
<a href="https://utmstack.com"><img src="https://utmstack.com/wp-content/uploads/2023/07/dashboard-two.gif?v=2" width="400px" alt="UTMStack"></a> <a href="https://utmstack.com"><img src="https://utmstack.com/wp-content/uploads/2023/07/dashboard-one.gif?v=2" width="372px" alt="UTMStack"></a> </h1>
22+
<p align="center">
23+
<a href="https://utmstack.com">
24+
<img src="https://utmstack.com/wp-content/uploads/2023/07/dashboard-two.gif?v=2" alt="UTMStack" width="45%">
25+
</a>
26+
<a href="https://utmstack.com">
27+
<img src="https://utmstack.com/wp-content/uploads/2023/07/dashboard-one.gif?v=2" alt="UTMStack" width="45%">
28+
</a>
29+
</p>
2530

2631
## Features
2732

@@ -33,7 +38,6 @@ We have a [dedicated repository](https://github.com/utmstack/rules) for correla
3338
- SOC AI-Powered Analysis
3439
- Security Compliance
3540

36-
3741
## Why UTMStack?
3842

3943
UTMStack stands out in threat prevention by surpassing the boundaries of traditional systems. Our software platform can swiftly analyze log data to identify and halt threats at their source in real-time, even if the threat was not directly detected on the server itself. This seamless integration of SIEM and XDR capabilities sets UTMStack apart from competitors, providing organizations with an effective, holistic cybersecurity suite that enhances threat detection, response, and remediation across clients’ valuable digital infrastructure. Correlation happens before data ingestion, reducing workload and improving response times.
@@ -80,7 +84,7 @@ Definitions:
8084
- Cold log storage: archived data that should be restored before accessing it.
8185
- Data source: any individual source of logs, for example, devices, agents, SaaS integrations.
8286

83-
Resources needed for one month of hot log storage.
87+
Required resources for one month of hot log storage.
8488
- For 50 data sources (120 GB) of hot log storage you will need 4 Cores, 16 GB RAM, 150 GB Disk Space
8589
- For 120 data sources (250 GB) of hot log storage you will need 8 Cores, 16 GB RAM, 250 GB Disk Space
8690
- For 240 data sources (500 GB) of hot log storage you will need 16 Cores, 32 GB RAM, 500 GB Disk Space
@@ -109,16 +113,16 @@ Once UTMStack is installed, use admin as the user and the password generated dur
109113
Note: Use HTTPS in front of your server name or IP to access the login page.
110114

111115
### Required ports
112-
- 22/TCP Secure Shell (We recommend to create a firewall rule to allow it only from admin workstation)
113-
- 80/TCP UTMStack Web-based Graphical User Interface Redirector (We recommend to create a firewall rule to allow it only from admin and security analyst workstations)
114-
- 443/TCP UTMStack Web-based Graphical User Interface (We recommend to create a firewall rule to allow it only from admin and security analyst workstations)
115-
- 9090/TCP Cockpit Web-based Graphical Interface for Servers (We recommend to create a firewall rule to allow it only from admin workstation)
116-
- Others ports will be required during the configuration of UTMStack's integrations in order to receive logs. (Please follow the security recommendations given on the integration guide if exists)
116+
- 22/TCP Secure Shell (We recommend creating a firewall rule to allow it only from admins workstations)
117+
- 80/TCP UTMStack Web-based Graphical User Interface Redirector (We recommend creating a firewall rule to allow it only from admin and security analyst workstations)
118+
- 443/TCP UTMStack Web-based Graphical User Interface (We recommend creating a firewall rule to allow it only from admin and security analyst workstations)
119+
- 9090/TCP Cockpit Web-based Graphical Interface for Servers (We recommend creating a firewall rule to allow it only from admin workstation)
120+
- Others ports will be required during the configuration of UTMStack's integrations to receive logs. (Please follow the security recommendations given on the integration guide if exists)
117121

118122
# FAQ
119123
- Is this based on Grafana, Kibana, or a similar reporting tool?
120124
Answer: It is not. UTMStack has been built from the ground up to be a simple and intuitive SIEM/XDR.
121125
- Does UTMStack use ELK for log correlation?
122126
Answer: It does not. UTMStack correlation engine was built from scratch to analyze data before ingestion and maximize real-time correlation.
123-
- What is the difference between the Open Source and Enterprise version?
127+
- What is the difference between the Open Source and Enterprise versions?
124128
The enterprise version includes features that would typically benefit enterprises and MSPs. For example, support, faster correlation, frequent threat intelligence updates, and Artificial Intelligence.

agent/updater/utils/download.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ func DownloadFile(url string, headers map[string]string, fileName string, path s
1818
req.Header.Add(key, value)
1919
}
2020

21-
client := &http.Client{}
22-
client.Transport = &http.Transport{
21+
tr := &http.Transport{
2322
TLSClientConfig: &tls.Config{InsecureSkipVerify: skipTlsVerification},
2423
DisableCompression: true,
2524
}
25+
client := &http.Client{Transport: tr}
26+
defer tr.CloseIdleConnections()
2627

2728
resp, err := client.Do(req)
2829
if err != nil {

agent/utils/download.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ func DownloadFile(url string, headers map[string]string, fileName string, path s
1818
req.Header.Add(key, value)
1919
}
2020

21-
client := &http.Client{}
22-
client.Transport = &http.Transport{
23-
TLSClientConfig: &tls.Config{InsecureSkipVerify: skipTlsVerification},
21+
tr := &http.Transport{
22+
TLSClientConfig: &tls.Config{InsecureSkipVerify: skipTlsVerification},
2423
DisableCompression: true,
2524
}
25+
client := &http.Client{Transport: tr}
26+
defer tr.CloseIdleConnections()
2627

2728
resp, err := client.Do(req)
2829
if err != nil {

agent/utils/req.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ func DoReq[response any](url string, data []byte, method string, headers map[str
2121
req.Header.Add(k, v)
2222
}
2323

24-
client := &http.Client{}
25-
client.Transport = &http.Transport{
24+
tr := &http.Transport{
2625
TLSClientConfig: &tls.Config{InsecureSkipVerify: skipTlsVerification},
2726
}
27+
client := &http.Client{Transport: tr}
28+
defer tr.CloseIdleConnections()
2829

2930
resp, err := client.Do(req)
3031
if err != nil {

agent/version.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"version": "11.1.1",
3-
"updater_version": "1.0.0"
2+
"version": "11.1.3",
3+
"updater_version": "1.0.2"
44
}

backend/src/main/java/com/park/utmstack/config/OpenApiConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public OpenAPI customOpenAPI() {
3434
.addList(securitySchemeApiInternalKey)
3535
.addList(securitySchemeApiKey))
3636
.components(new Components()
37-
.addSecuritySchemes(securitySchemeBearer,
37+
/*.addSecuritySchemes(securitySchemeBearer,
3838
new SecurityScheme()
3939
.name(securitySchemeBearer)
4040
.type(SecurityScheme.Type.HTTP)
@@ -43,7 +43,7 @@ public OpenAPI customOpenAPI() {
4343
.addSecuritySchemes(securitySchemeApiInternalKey, new SecurityScheme()
4444
.name("Utm-Internal-Key")
4545
.type(SecurityScheme.Type.APIKEY)
46-
.in(SecurityScheme.In.HEADER))
46+
.in(SecurityScheme.In.HEADER))*/
4747
.addSecuritySchemes(securitySchemeApiKey, new SecurityScheme()
4848
.name(Constants.API_KEY_HEADER)
4949
.type(SecurityScheme.Type.APIKEY)

backend/src/main/java/com/park/utmstack/config/RestTemplateConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.apache.http.conn.ssl.TrustStrategy;
66
import org.apache.http.impl.client.CloseableHttpClient;
77
import org.apache.http.impl.client.HttpClients;
8+
import org.jetbrains.annotations.NotNull;
89
import org.slf4j.Logger;
910
import org.slf4j.LoggerFactory;
1011
import org.springframework.context.annotation.Bean;
@@ -44,7 +45,7 @@ public RestTemplate rawRestTemplate() {
4445
RestTemplate rest = new RestTemplate();
4546
rest.setErrorHandler(new DefaultResponseErrorHandler() {
4647
@Override
47-
public boolean hasError(ClientHttpResponse response) {
48+
public boolean hasError(@NotNull ClientHttpResponse response) {
4849
return false;
4950
}
5051
});

backend/src/main/java/com/park/utmstack/domain/application_modules/validators/impl/ModuleConfigurationValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public boolean isValid(GroupConfigurationDTO dto, ConstraintValidatorContext con
3232
return module.validateConfiguration(utmModule, dto.getKeys());
3333
} catch (Exception e) {
3434
context.disableDefaultConstraintViolation();
35-
context.buildConstraintViolationWithTemplate("Invalid configuration for selected module.")
35+
context.buildConstraintViolationWithTemplate(e.getMessage())
3636
.addPropertyNode("keys")
3737
.addConstraintViolation();
3838
return false;

backend/src/main/java/com/park/utmstack/repository/datainput_ingestion/UtmDataInputStatusRepository.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,19 @@ public interface UtmDataInputStatusRepository extends JpaRepository<UtmDataInput
4747
* Extract data sources that are not already configured
4848
* @return A list of ${@link UtmDataInputStatus}
4949
*/
50-
@Query("select distinct ds.dataType from UtmDataInputStatus ds where ds.dataType not in (select dt.dataType from UtmDataTypes dt) and ds.dataType != :dataType")
50+
51+
@Query("""
52+
select distinct lower(trim(ds.dataType))
53+
from UtmDataInputStatus ds
54+
where lower(trim(ds.dataType)) not in (
55+
select lower(trim(dt.dataType)) from UtmDataTypes dt
56+
)
57+
and lower(trim(ds.dataType)) != lower(trim(:dataType))
58+
""")
5159
List<String> findDataSourcesToConfigure(@Param("dataType") String dataType);
5260

61+
62+
5363
Optional<UtmDataInputStatus> findByDataType(String dataType);
5464
Optional<UtmDataInputStatus> findBySourceAndDataType(String source, String dataType);
5565

0 commit comments

Comments
 (0)