Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# UTMStack 10.8.6 Release Notes
# UTMStack 10.9.0 Release Notes

- Expanded the exclusion dictionary for malicious IP connection logs to reduce false positives.
- Added support for older Linux versions (RedHat 7, RedHat 8, Ubuntu 20.04).
- Added New Suricata Integration.
4 changes: 3 additions & 1 deletion agent/config/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ var (
DataTypeAix DataType = "ibm_aix"
DataTypePfsense DataType = "firewall_pfsense"
DataTypeFortiweb DataType = "firewall_fortiweb"
DataTypeSuricata DataType = "suricata"

ProtoPorts = map[DataType]ProtoPort{
DataTypeSyslog: {UDP: "7014", TCP: "7014"},
Expand All @@ -102,6 +103,7 @@ var (
DataTypeAix: {UDP: "7016", TCP: "7016"},
DataTypePfsense: {UDP: "7017", TCP: "7017"},
DataTypeFortiweb: {UDP: "7018", TCP: "7018"},
DataTypeSuricata: {UDP: "7019", TCP: "7019"},
DataTypeNetflow: {UDP: "2055", TCP: ""},
}

Expand All @@ -116,7 +118,7 @@ func ValidateModuleType(typ string) string {
switch DataType(typ) {
case DataTypeSyslog, DataTypeVmware, DataTypeEset, DataTypeKaspersky, DataTypeFortinet, DataTypePaloalto,
DataTypeMikrotik, DataTypeSophosXG, DataTypeSonicwall, DataTypeSentinelOne, DataTypeCiscoGeneric,
DataTypeDeceptivebytes, DataTypeAix, DataTypePfsense, DataTypeFortiweb:
DataTypeDeceptivebytes, DataTypeAix, DataTypePfsense, DataTypeFortiweb, DataTypeSuricata:
return "syslog"
case DataTypeNetflow:
return "netflow"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,6 @@ public enum ModuleName {
SALESFORCE,
BITDEFENDER,
SOC_AI,
PFSENSE
PFSENSE,
SURICATA,
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ public class ModuleFactory {
private final ModulePfsense modulePfsense;
private final ModuleFortiWeb moduleFortiWeb;
private final ModuleAix moduleAix;
private final ModuleSuricata moduleSuricata;


public ModuleFactory(ModuleFileIntegrity moduleFileIntegrity,
Expand Down Expand Up @@ -129,7 +130,8 @@ public ModuleFactory(ModuleFileIntegrity moduleFileIntegrity,
ModuleSocAi moduleSocAi,
ModulePfsense modulePfsense,
ModuleFortiWeb moduleFortiWeb,
ModuleAix moduleAix) {
ModuleAix moduleAix,
ModuleSuricata moduleSuricata) {
this.moduleFileIntegrity = moduleFileIntegrity;
this.moduleO365 = moduleO365;
this.moduleAzure = moduleAzure;
Expand Down Expand Up @@ -191,6 +193,7 @@ public ModuleFactory(ModuleFileIntegrity moduleFileIntegrity,
this.modulePfsense = modulePfsense;
this.moduleFortiWeb = moduleFortiWeb;
this.moduleAix = moduleAix;
this.moduleSuricata = moduleSuricata;
}

public IModule getInstance(ModuleName nameShort) {
Expand Down Expand Up @@ -316,6 +319,8 @@ public IModule getInstance(ModuleName nameShort) {
return moduleFortiWeb;
if (nameShort.equals(ModuleName.AIX))
return moduleAix;
if (nameShort.equals(ModuleName.SURICATA))
return moduleSuricata;
throw new RuntimeException("Unrecognized module " + nameShort.name());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.park.utmstack.domain.application_modules.factory.impl;

import com.park.utmstack.domain.application_modules.UtmModule;
import com.park.utmstack.domain.application_modules.enums.ModuleName;
import com.park.utmstack.domain.application_modules.factory.IModule;
import com.park.utmstack.domain.application_modules.types.ModuleConfigurationKey;
import com.park.utmstack.domain.application_modules.types.ModuleRequirement;
import com.park.utmstack.service.application_modules.UtmModuleService;
import org.springframework.stereotype.Component;

import java.util.Collections;
import java.util.List;

@Component
public class ModuleSuricata implements IModule {
private static final String CLASSNAME = "ModuleSuricata";

private final UtmModuleService moduleService;

public ModuleSuricata(UtmModuleService moduleService) {
this.moduleService = moduleService;
}

@Override
public UtmModule getDetails(Long serverId) throws Exception {
final String ctx = CLASSNAME + ".getDetails";
try {
return moduleService.findByServerIdAndModuleName(serverId, ModuleName.SURICATA);
} catch (Exception e) {
throw new Exception(ctx + ": " + e.getMessage());
}
}

@Override
public List<ModuleRequirement> checkRequirements(Long serverId) throws Exception {
return Collections.emptyList();
}

@Override
public List<ModuleConfigurationKey> getConfigurationKeys(Long groupId) throws Exception {
return Collections.emptyList();
}
}
Loading