Skip to main content
This project is currently in the design phase. The installation procedures described here are planning guidelines based on the conceptual architecture. Actual installation steps will be finalized during implementation.

Overview

This guide outlines the recommended installation order, deployment strategies, and architectural considerations for deploying the Enterprise SOC Architecture. Components must be installed in a specific sequence to satisfy dependencies.

Installation Order and Dependencies

Components should be installed in the order presented below to ensure dependencies are met at each stage.

Dependency Graph

Deployment Architecture Strategies

All-in-One Deployment

Use Case: Testing, proof of concept, small environments (less than 50 endpoints)Architecture:
  • Single server hosts all SOC components
  • Containers (Docker/Podman) or VMs for service isolation
  • Minimal high availability
Minimum Specifications:
  • CPU: 16 cores
  • RAM: 64 GB
  • Storage: 2 TB SSD
  • Network: 2x 1 Gbps NICs (management + monitoring)
Advantages:
  • Simple deployment and management
  • Lower hardware costs
  • Easy for testing and learning
Limitations:
  • No high availability
  • Limited scalability
  • Single point of failure
  • Resource contention between components
Single-server deployments are NOT recommended for production environments. Use only for testing or very small deployments.
Installation Approach:

High Availability Considerations

Critical Components Requiring HA

1

Elasticsearch Cluster

HA Strategy: Multi-node cluster with replication
  • Deploy 3+ nodes (odd number for split-brain prevention)
  • Configure index replication (minimum 1 replica)
  • Use dedicated master-eligible nodes in large clusters
  • Implement cluster-level shard allocation awareness
Configuration Highlights:
Never run Elasticsearch in production with number_of_replicas: 0. Data loss will occur on node failure.
2

Wazuh Manager Cluster

HA Strategy: Master-worker cluster architecture
  • Deploy master node and one or more worker nodes
  • Agents connect to cluster (automatic failover)
  • Shared configuration and rules across cluster
  • Load balancer distributes agent connections
Setup:
  • Configure cluster in /var/ossec/etc/ossec.conf
  • Enable cluster mode and set cluster key
  • Configure node type (master/worker)
  • Use load balancer (HAProxy, nginx) for agent connections
3

Logstash Pipeline Redundancy

HA Strategy: Multiple pipeline instances with load balancing
  • Deploy 2+ Logstash instances
  • Use load balancer for input (if using Beats)
  • Configure persistent queues for data durability
  • Monitor pipeline throughput and backpressure
Configuration:
4

Database High Availability

HA Strategy: Database replication and clusteringFor MySQL/PostgreSQL (Zabbix, TheHive):
  • Master-slave replication
  • Automatic failover (using tools like Patroni for PostgreSQL)
  • Regular backups to separate storage
For Cassandra (TheHive alternative):
  • Multi-node cluster with replication factor 3
  • Distributed architecture provides natural HA
5

Application Load Balancing

HA Strategy: Load balancers for web interfacesComponents needing load balancing:
  • Wazuh Dashboard (multiple dashboard instances)
  • TheHive web interface
  • Grafana dashboards
Implementation options:
  • HAProxy (open source, highly recommended)
  • Nginx (reverse proxy + load balancing)
  • Cloud load balancers (ALB on AWS, Azure Load Balancer)
Example HAProxy config:

Backup and Disaster Recovery

High availability prevents service interruption, but backups protect against data loss, corruption, and disasters.
Backup Strategy: Disaster Recovery Plan:
  1. Document recovery procedures for each component
  2. Test restoration quarterly (minimum)
  3. Maintain runbooks for critical failure scenarios
  4. Store backups off-site or in separate cloud region
  5. Define RTO/RPO (Recovery Time/Point Objectives) for each tier

Installation Steps by Component

Phase 1: Foundation

For all servers:
Security hardening:
  • Disable root SSH login
  • Configure SSH key-based authentication
  • Enable automatic security updates
  • Install and configure fail2ban

Phase 2: Core Infrastructure

Installation (per node):
Save the auto-generated elastic superuser password during installation. It’s displayed once and needed for initial configuration.
For Zabbix and TheHive (if not using Elasticsearch/Cassandra):

Phase 3-7: Component Installation

Detailed installation procedures for each component (Wazuh, Logstash, Snort/Suricata, Zabbix, Prometheus, TheHive, Cortex) will be provided in component-specific documentation. The key is to follow the installation order defined in the dependency graph above.
General installation pattern:
  1. Add official package repository
  2. Install package via package manager
  3. Configure component (see Configuration guide)
  4. Enable and start systemd service
  5. Verify component health and connectivity
  6. Integrate with dependent components

Phase 8: Automation Tools

Terraform (for infrastructure provisioning):
PyInfra (for configuration management):

Post-Installation Validation

1

Component Health Checks

Verify each component is running and accessible:
2

Connectivity Testing

Test network connectivity between components:
3

Data Flow Verification

Confirm data flows through the pipeline:
  • Deploy test Wazuh agent and verify events in Elasticsearch
  • Send test syslog message to Logstash and check indexing
  • Trigger test IDS alert and verify in Wazuh dashboard
  • Create test incident in TheHive and verify storage
4

Dashboard Access

Verify all web interfaces are accessible:
  • Wazuh Dashboard: https://wazuh-host/
  • TheHive: http://thehive-host:9000/
  • Zabbix: http://zabbix-host/
  • Prometheus: http://prometheus-host:9090/
  • Grafana (if deployed): http://grafana-host:3000/

Troubleshooting Common Issues

Symptoms: Nodes don’t discover each otherSolutions:
  • Verify discovery.seed_hosts contains all node IPs
  • Check firewall allows port 9300 between nodes
  • Ensure cluster.name is identical on all nodes
  • Verify network connectivity: ping and telnet between nodes
  • Check logs: /var/log/elasticsearch/
Symptoms: Agents show as disconnected in dashboardSolutions:
  • Verify firewall allows ports 1514 and 1515 to manager
  • Check agent configuration: cat /var/ossec/etc/ossec.conf
  • Verify manager address is correct in agent config
  • Check manager logs: /var/ossec/logs/ossec.log
  • Restart agent: sudo systemctl restart wazuh-agent
Symptoms: System running out of memorySolutions:
  • Verify JVM heap is set to 50% of system RAM (max 31 GB)
  • Check heap settings: /etc/elasticsearch/jvm.options
  • Monitor heap usage: curl localhost:9200/_nodes/stats/jvm
  • Reduce replica count or index retention if needed
  • Consider adding more nodes to distribute load
Symptoms: High packet drop rate in Suricata/Snort statsSolutions:
  • Increase AF_PACKET buffer size (Suricata)
  • Enable multi-threading in IDS configuration
  • Verify NIC is in promiscuous mode: ip link show
  • Check if SPAN session is overloading sensor
  • Consider hardware upgrade or additional sensors

Installation Checklist

Before marking installation complete:
  • All components installed in correct order
  • Systemd services enabled and running
  • Inter-component connectivity verified
  • Web dashboards accessible
  • Test data flows through entire pipeline
  • High availability configured (if production)
  • Backup procedures implemented and tested
  • Firewall rules validated
  • TLS/SSL certificates installed
  • Documentation updated with actual configuration
  • Monitoring of SOC infrastructure itself enabled
  • Team trained on basic operations

Next Steps

With components installed:
  1. Proceed to detailed Configuration of each component
  2. Deploy agents and sensors to production endpoints
  3. Configure alerting rules and correlation logic
  4. Develop incident response playbooks
  5. Begin security event monitoring and tuning
Installation is just the beginning. Plan for 2-4 weeks of tuning and optimization before considering the SOC fully operational.