Documentation
¶
Overview ¶
Package audit provides security audit functionality for OPNsense configurations against industry-standard compliance frameworks through a plugin-based architecture.
Package audit provides security audit functionality for OPNsense configurations against industry-standard compliance frameworks through a plugin-based architecture.
Index ¶
- Variables
- func GetGlobalPlugin(name string) (plugin.CompliancePlugin, error)
- func ListGlobalPlugins() []string
- func RegisterGlobalPlugin(p plugin.CompliancePlugin) error
- type AttackSurface
- type ComplianceResult
- type ComplianceSummary
- type Finding
- type ModeConfig
- type ModeController
- type PluginCompliance
- type PluginInfo
- type PluginManager
- func (pm *PluginManager) GetPluginControlInfo(pluginName, controlID string) (*plugin.Control, error)
- func (pm *PluginManager) GetPluginStatistics() map[string]any
- func (pm *PluginManager) GetRegistry() *PluginRegistry
- func (pm *PluginManager) InitializePlugins(ctx context.Context) error
- func (pm *PluginManager) ListAvailablePlugins(ctx context.Context) []PluginInfo
- func (pm *PluginManager) RunComplianceAudit(ctx context.Context, config *model.OpnSenseDocument, pluginNames []string) (*ComplianceResult, error)
- func (pm *PluginManager) ValidatePluginConfiguration(pluginName string) error
- type PluginRegistry
- func (pr *PluginRegistry) GetPlugin(name string) (plugin.CompliancePlugin, error)
- func (pr *PluginRegistry) ListPlugins() []string
- func (pr *PluginRegistry) LoadDynamicPlugins(ctx context.Context, dir string, logger *slog.Logger) error
- func (pr *PluginRegistry) RegisterPlugin(p plugin.CompliancePlugin) error
- func (pr *PluginRegistry) RunComplianceChecks(config *model.OpnSenseDocument, pluginNames []string) (*ComplianceResult, error)
- type Report
- type ReportMode
Constants ¶
This section is empty.
Variables ¶
var ( // ErrModeConfigNil is returned when the mode configuration is nil. ErrModeConfigNil = errors.New("mode config cannot be nil") // ErrUnsupportedMode is returned when an unsupported report mode is specified. ErrUnsupportedMode = errors.New("unsupported report mode") // ErrPluginNotFound is returned when a requested compliance plugin cannot be found. ErrPluginNotFound = errors.New("plugin not found") // ErrConfigurationNil is returned when the OPNsense configuration is nil. ErrConfigurationNil = errors.New("configuration cannot be nil") )
Static errors for better error handling.
Functions ¶
func GetGlobalPlugin ¶
func GetGlobalPlugin(name string) (plugin.CompliancePlugin, error)
GetGlobalPlugin retrieves a plugin from the global registry.
func ListGlobalPlugins ¶
func ListGlobalPlugins() []string
ListGlobalPlugins returns all plugins in the global registry.
func RegisterGlobalPlugin ¶
func RegisterGlobalPlugin(p plugin.CompliancePlugin) error
RegisterGlobalPlugin registers a plugin with the global registry.
Types ¶
type AttackSurface ¶
type AttackSurface struct {
Type string `json:"type"`
Ports []int `json:"ports"`
Services []string `json:"services"`
Vulnerabilities []string `json:"vulnerabilities"`
}
AttackSurface represents attack surface information for red team findings.
type ComplianceResult ¶
type ComplianceResult struct {
Findings []plugin.Finding `json:"findings"`
Compliance map[string]map[string]bool `json:"compliance"`
Summary *ComplianceSummary `json:"summary"`
PluginInfo map[string]PluginInfo `json:"pluginInfo"`
}
ComplianceResult represents the complete result of compliance checks.
type ComplianceSummary ¶
type ComplianceSummary struct {
TotalFindings int `json:"totalFindings"`
CriticalFindings int `json:"criticalFindings"`
HighFindings int `json:"highFindings"`
MediumFindings int `json:"mediumFindings"`
LowFindings int `json:"lowFindings"`
PluginCount int `json:"pluginCount"`
Compliance map[string]PluginCompliance `json:"compliance"`
}
ComplianceSummary provides summary statistics.
type Finding ¶
type Finding struct {
Title string `json:"title"`
Severity processor.Severity `json:"severity"`
Description string `json:"description"`
Recommendation string `json:"recommendation"`
Tags []string `json:"tags"`
AttackSurface *AttackSurface `json:"attackSurface,omitempty"`
ExploitNotes string `json:"exploitNotes,omitempty"`
Component string `json:"component"`
Control string `json:"control,omitempty"`
}
Finding represents a security finding or audit result.
type ModeConfig ¶
type ModeConfig struct {
Mode ReportMode
BlackhatMode bool
Comprehensive bool
SelectedPlugins []string
TemplateDir string
}
ModeConfig holds configuration options for report generation.
type ModeController ¶
type ModeController struct {
// contains filtered or unexported fields
}
ModeController manages the generation of different types of audit reports based on the selected mode and configuration.
func NewModeController ¶
func NewModeController(registry *PluginRegistry, logger *log.Logger) *ModeController
NewModeController creates a new mode controller with the given plugin registry and logger.
func (*ModeController) GenerateReport ¶
func (mc *ModeController) GenerateReport( ctx context.Context, cfg *model.OpnSenseDocument, config *ModeConfig, ) (*Report, error)
GenerateReport generates an audit report based on the specified mode and configuration.
func (*ModeController) ValidateModeConfig ¶
func (mc *ModeController) ValidateModeConfig(config *ModeConfig) error
ValidateModeConfig validates the mode configuration.
type PluginCompliance ¶
type PluginCompliance struct {
Compliant int `json:"compliant"`
NonCompliant int `json:"nonCompliant"`
Total int `json:"total"`
}
PluginCompliance represents compliance statistics for a single plugin.
type PluginInfo ¶
type PluginInfo struct {
Name string `json:"name"`
Version string `json:"version"`
Description string `json:"description"`
Controls []plugin.Control `json:"controls"`
}
PluginInfo contains metadata about a plugin.
type PluginManager ¶
type PluginManager struct {
// contains filtered or unexported fields
}
PluginManager manages the lifecycle of compliance plugins.
func NewPluginManager ¶
func NewPluginManager(logger *slog.Logger) *PluginManager
NewPluginManager creates a new plugin manager.
func (*PluginManager) GetPluginControlInfo ¶
func (pm *PluginManager) GetPluginControlInfo(pluginName, controlID string) (*plugin.Control, error)
GetPluginControlInfo returns detailed information about a specific control.
func (*PluginManager) GetPluginStatistics ¶
func (pm *PluginManager) GetPluginStatistics() map[string]any
GetPluginStatistics returns statistics about plugin usage and compliance.
func (*PluginManager) GetRegistry ¶
func (pm *PluginManager) GetRegistry() *PluginRegistry
GetRegistry returns the plugin registry.
func (*PluginManager) InitializePlugins ¶
func (pm *PluginManager) InitializePlugins(ctx context.Context) error
InitializePlugins initializes and registers all available plugins.
func (*PluginManager) ListAvailablePlugins ¶
func (pm *PluginManager) ListAvailablePlugins(ctx context.Context) []PluginInfo
ListAvailablePlugins returns information about all available plugins.
func (*PluginManager) RunComplianceAudit ¶
func (pm *PluginManager) RunComplianceAudit( ctx context.Context, config *model.OpnSenseDocument, pluginNames []string, ) (*ComplianceResult, error)
RunComplianceAudit runs compliance checks using specified plugins.
func (*PluginManager) ValidatePluginConfiguration ¶
func (pm *PluginManager) ValidatePluginConfiguration(pluginName string) error
ValidatePluginConfiguration validates the configuration of a specific plugin.
type PluginRegistry ¶
type PluginRegistry struct {
// contains filtered or unexported fields
}
PluginRegistry manages the registration and retrieval of compliance plugins.
func GetGlobalRegistry ¶ added in v1.1.0
func GetGlobalRegistry() *PluginRegistry
GetGlobalRegistry returns the global plugin registry instance, initializing it on first access using sync.Once for thread safety.
func NewPluginRegistry ¶
func NewPluginRegistry() *PluginRegistry
NewPluginRegistry creates a new plugin registry.
func (*PluginRegistry) GetPlugin ¶
func (pr *PluginRegistry) GetPlugin(name string) (plugin.CompliancePlugin, error)
GetPlugin retrieves a plugin by name.
func (*PluginRegistry) ListPlugins ¶
func (pr *PluginRegistry) ListPlugins() []string
ListPlugins returns all registered plugin names.
func (*PluginRegistry) LoadDynamicPlugins ¶
func (pr *PluginRegistry) LoadDynamicPlugins(ctx context.Context, dir string, logger *slog.Logger) error
LoadDynamicPlugins loads .so plugins from the specified directory and registers them. It is safe to call even if the directory does not exist.
func (*PluginRegistry) RegisterPlugin ¶
func (pr *PluginRegistry) RegisterPlugin(p plugin.CompliancePlugin) error
RegisterPlugin registers a compliance plugin.
func (*PluginRegistry) RunComplianceChecks ¶
func (pr *PluginRegistry) RunComplianceChecks( config *model.OpnSenseDocument, pluginNames []string, ) (*ComplianceResult, error)
RunComplianceChecks runs compliance checks for specified plugins.
type Report ¶
type Report struct {
Mode ReportMode `json:"mode"`
BlackhatMode bool `json:"blackhatMode"`
Comprehensive bool `json:"comprehensive"`
Configuration *model.OpnSenseDocument `json:"configuration"`
Findings []Finding `json:"findings"`
Compliance map[string]ComplianceResult `json:"compliance"`
Metadata map[string]any `json:"metadata"`
}
Report represents a comprehensive audit report with findings and analysis.
type ReportMode ¶
type ReportMode string
ReportMode represents the different types of audit reports that can be generated.
const ( // ModeStandard represents a neutral, comprehensive documentation report. ModeStandard ReportMode = "standard" // ModeBlue represents a defensive audit report with security findings and recommendations. ModeBlue ReportMode = "blue" // ModeRed represents an attacker-focused recon report highlighting attack surfaces. ModeRed ReportMode = "red" )
func ParseReportMode ¶
func ParseReportMode(s string) (ReportMode, error)
ParseReportMode parses a string into a ReportMode, returning an error if invalid.
func (ReportMode) String ¶
func (rm ReportMode) String() string
String returns the string representation of the ReportMode.