Bare metal server security is the practice of locking down a single-tenant physical server across four overlapping layers: DDoS protection, firewalls, web application filtering, and network isolation. There's no hypervisor cushion, no shared neighbor to absorb half the blast radius, and no cloud provider quietly patching things behind the scenes. You own the iron and almost everything that runs on it.

That single-tenant nature is both the appeal and the responsibility. You get full control of the kernel, the NICs, the BMC, the storage controllers. You also inherit every bit of the attack surface those components expose. Defense-in-depth isn't a buzzword here; it's the only model that actually works when one weak layer can compromise the whole stack.

If you need a primer on dedicated hardware first, here's the complete introduction: What is a Dedicated Server?

Infographic showing four pillars of bare metal security: DDoS Protection, Firewalls, WAF, and Network Isolation.

Defining a Single-Tenant Security Posture

On a VPS, your provider runs a hypervisor that isolates tenants and (usually) handles edge ACLs, kernel patches, and live-migration during host failures. On bare metal, that wall doesn't exist. You're the only tenant. There's no Spectre-class side-channel risk from a noisy neighbor but there's also no automatic snapshot, no instant rollback, no SDN-managed firewall waiting in the control plane.

The shared-responsibility line shifts. The provider hands you a hardened data center, redundant power, BGP-level DDoS scrubbing (if they're any good), and a clean OS image. Everything above the NIC โ€” kernel hardening, firewall rules, WAF, monitoring, IR sits squarely on your team.

The Four Pillars of Bare Metal Defense

  • DDoS protection โ€” upstream scrubbing at terabit scale plus on-server rate limiting
  • Firewalls โ€” provider edge ACLs combined with host-level nftables or iptables
  • WAF โ€” ModSecurity with the OWASP Core Rule Set, or a cloud-edge WAF in front
  • Isolation โ€” VLAN segmentation, a private BMC/IPMI network, and a hardened jump host

Why Bare Metal Security Differs From VPS and Cloud Hosting

Most security articles treat all server types the same. They shouldn't. The threat model on bare metal is genuinely different, and pretending otherwise gets people compromised.

Aspect Bare Metal VPS Public Cloud
Hypervisor escape risk None (no hypervisor) Real (multi-tenant) Real (multi-tenant)
Side-channel attacks (Spectre/Meltdown) Effectively eliminated Possible Possible
Patching responsibility Customer (kernel + firmware) Customer OS, provider host Mostly provider
BMC/IPMI exposure Yes โ€” must be hardened Hidden by provider Hidden by provider
Default firewall Often none Sometimes Security groups by default
Snapshots/rollback Manual Built-in Built-in
Headroom for inline IDS/WAF Excellent (full hardware) Limited Limited per instance
Physical-layer attack surface Drives, BMC, supply chain Abstracted away Abstracted away

Unique Advantages of Single-Tenant Hardware

Here's the upside. With a full physical box, you can run Suricata inline at line rate, ModSecurity in blocking mode with paranoia level 2, full packet capture, and host-based EDR โ€” all without the noisy-neighbor tax. You get deterministic latency for crypto operations. And the Spectre/Meltdown class of cross-tenant leaks? Largely moot, because there's no other tenant to leak to.

Unique Risks (No Hypervisor Safety Net)

The flip side: you own the BMC. You own firmware updates. You own the BIOS. If you skip those, you're exposed to attack vectors that simply don't exist on a VPS. I've watched a fintech client get owned through a Supermicro BMC running default credentials on a public IP โ€” the OS was perfectly hardened, and it didn't matter. The attacker had remote KVM, mounted an ISO, and pivoted from there.

For background on the trade-offs, see our breakdowns of dedicated server vs cloud server and VPS vs dedicated server.

The Bare Metal Threat Model: What You're Actually Defending Against

Before you write a single firewall rule, map your threats. A defense without a threat model is just expensive theater.

Concentric threat model diagram showing Physical, Network, Host OS, and Application with example threats.
Vector Attack Type Mitigation Pillar Real-World Example
Volumetric DDoS UDP/Memcached amplification Provider scrubbing GitHub 1.35 Tbps (2018)
Application DDoS HTTP flood, slowloris WAF + rate limiting Mirai variants (ongoing)
BMC/IPMI compromise Default creds, firmware bug Isolation + hardening USBAnywhere (CVE-2019-16649), Pantsdown
Kernel exploit Local privilege escalation Patching + LSM Dirty Pipe (CVE-2022-0847)
Web app exploit RCE, injection WAF + secure code Log4Shell (CVE-2021-44228)
Brute-force SSH/RDP credential stuffing Host firewall + fail2ban Mirai botnet (ongoing)
Supply-chain Compromised dependency Monitoring + SBOM SolarWinds, xz-utils (2024)

Volumetric and Application-Layer DDoS

L3/L4 attacks try to saturate your pipe. L7 attacks look like real traffic and exhaust application resources โ€” slowloris, HTTP/2 rapid reset, search-endpoint hammering. You need different tooling for each. The first calls for an upstream scrubbing center. The second calls for rate limiting and a WAF.

BMC/IPMI Exploits and Hardware-Level Compromise

This is the bare-metal-specific vector everyone underestimates. Cisco Talos has documented Supermicro BMC vulnerabilities. The USBAnywhere flaw let attackers mount virtual media remotely. Default vendor credentials still ship on a frightening number of boxes. SANS reporting has tied a majority of bare metal incidents to exposed or weakly authenticated management interfaces.

OS-Level Kernel and Privilege Escalation

Dirty Pipe, OverlayFS bugs, sudo CVEs โ€” Linux ships kernel and userland privilege escalation flaws on a regular cadence. If you're not patching within 7 days of disclosure, you're behind.

Web Application and Supply-Chain Threats

Log4Shell taught everyone that one transitive dependency can take down half the internet. OWASP Top 10 still describes the bulk of what real attackers actually exploit. Your WAF stops the obvious stuff; your dependency hygiene stops the rest. For the foundational concepts, see what is a DDoS attack and how to prevent DDoS attacks.

Pillar 1 โ€” DDoS Protection for Bare Metal Servers

Key takeaway: No on-server tool can stop a 500 Gbps flood. Volumetric mitigation has to happen upstream, at the provider's edge. Your job on the box is layer 7.

Diagram of DDoS mitigation flow from attacker botnet through scrubbing center to bare metal server.

Layer 3/4 Volumetric DDoS Mitigation

Volumetric attacks โ€” SYN floods, UDP amplification, DNS reflection โ€” are an arms race in raw capacity. The largest publicly documented attack peaked at 3.47 Tbps (Microsoft Azure, 2021). If your provider can't absorb at least 1 Tbps with sub-second time-to-mitigate, you have a problem.

Real mitigation lives in BGP anycast scrubbing centers. Traffic is announced from multiple PoPs, attack traffic gets diverted, scrubbed, and only clean packets reach your server. Cloudflare Magic Transit, Imperva, and tier-1 carriers all run this model. Some hosts ship it always-on; others flip to mitigation only when thresholds trigger. Always-on is safer โ€” the first 30 seconds of an on-demand activation is where damage happens.

Layer 7 Application DDoS Defense

L7 is where on-server controls matter. A 50,000 RPS HTTP flood looks like legitimate traffic to a router. To Nginx, it's a death spiral. You need rate limiting, connection limits, and WAF rules tuned to your endpoints.

On-Server Rate Limiting With nftables and Nginx

A baseline nftables rate limit on new SSH connections:

table inet filter { chain input { type filter hook input priority 0; policy drop; ct state established,related accept iif lo accept tcp dport 22 ct state new limit rate 5/minute accept tcp dport { 80, 443 } ct state new limit rate 200/second burst 400 packets accept ip protocol icmp limit rate 10/second accept log prefix "nft-drop: " level info } }

And the Nginx side, for HTTP-layer flood protection:

limit_req_zone $binary_remote_addr zone=api:10m rate=20r/s; limit_conn_zone $binary_remote_addr zone=conn:10m; server { location /api/ { limit_req zone=api burst=40 nodelay; limit_conn conn 10; proxy_pass http://backend; } }

How to Verify Your Host's DDoS Mitigation Capacity

Don't take marketing claims at face value. Ask for specifics:

  • Aggregate scrubbing capacity in Tbps and Mpps
  • Time-to-mitigate (TTM) โ€” under 10 seconds is the bar
  • Always-on or on-demand?
  • IPv6 mitigation parity?
  • L7 mitigation included or only L3/L4?
  • Mitigation SLA with credits

1Gbits ships every dedicated server with built-in L3/L4 DDoS protection by default โ€” see our DDoS-protected dedicated server lineup or the dedicated DDoS-protected hosting plan if you need a smaller footprint.

Pro tip: Run hping3 --flood --rand-source -p 80 your.ip from an external box to confirm your edge actually drops the flood before it touches the server. If your monitoring shows packets arriving, your "protection" isn't.

Pillar 2 โ€” Bare Metal Firewall Configuration: Network and Host

Key takeaway: One firewall is a single point of failure. Run two โ€” one at the provider edge, one on the host โ€” and have them disagree slightly so a misconfiguration in one doesn't open everything.

Network-Edge Firewall (Provider ACL / Hardware Firewall)

Most serious providers offer some form of edge ACL or hardware firewall โ€” a Cisco ASA, Fortinet, or a custom SDN setup that filters before traffic ever hits your NIC. Use it. The edge firewall handles the broad strokes: drop everything that isn't 80, 443, your SSH port, and your management VLAN traffic. Done at the edge, you save bandwidth and CPU on the host.

If you're running your own rack-side appliance, pfSense and OPNsense are battle-tested. MikroTik gear is fine for smaller footprints. Compare them in MikroTik vs pfSense breakdown.

Host-Based Firewall: nftables, iptables, firewalld, ufw

Tool OS Stateful Best For
nftables Modern Linux Yes Production hardening (recommended)
iptables Legacy Linux Yes Older distros, existing rule sets
firewalld RHEL/Fedora Yes (zones) Admins who want zone-based abstraction
ufw Ubuntu/Debian Yes (front-end) Quick setups; thin wrapper over iptables
pfSense / OPNsense FreeBSD-based appliance Yes Edge / gateway role
Windows Firewall (WFP) Windows Server Yes Windows bare metal

Baseline nftables Configuration

Default-deny inbound, restrictive outbound, log drops, persist across reboot:

#!/usr/sbin/nft -f flush ruleset table inet filter { chain input { type filter hook input priority 0; policy drop; ct state invalid drop ct state established,related accept iif lo accept ip saddr { 10.10.0.0/24 } tcp dport 22 accept # SSH from mgmt VLAN only tcp dport { 80, 443 } accept ip protocol icmp icmp type echo-request limit rate 5/second accept log prefix "nft-drop-in: " level warn } chain forward { type filter hook forward priority 0; policy drop; } chain output { type filter hook output priority 0; policy accept; # Egress filtering โ€” block known-bad outbound where possible ip daddr { 0.0.0.0/8, 169.254.0.0/16 } drop } }

Save to /etc/nftables.conf and enable the service. For the full walk-through, see our guide on how to configure a firewall step-by-step and check your exposed ports with open-ports check.

Egress Filtering: The Most Overlooked Defense

Almost everyone allows all outbound. That's how compromised servers phone home, exfiltrate data, and join botnets. Restrict egress to what your application actually needs โ€” DNS, NTP, package mirrors, your monitoring endpoints. If a curl to pastebin.com from your DB server gets blocked, you've just made the attacker's life much harder.

Pillar 3 โ€” Web Application Firewall (WAF) for Bare Metal

Key takeaway: If your server runs anything HTTP-facing, you need a WAF. Network firewalls don't read HTTP bodies; that's the WAF's job.

When You Need a WAF on a Dedicated Server

Short answer: any time you expose a web app, an API, or even a marketing site with a contact form. WAFs catch SQL injection, XSS, RCE attempts, and the slow drip of credential-stuffing bots that conventional firewalls never see.

ModSecurity + OWASP Core Rule Set on Nginx/Apache

The de facto self-hosted stack is ModSecurity 3 (libmodsecurity) plus the OWASP Core Rule Set. Install on Nginx via ModSecurity-nginx, point at crs-setup.conf, set paranoia to level 1 to start, then graduate to 2 once false positives stabilize. For Apache, mod_security2 has been around forever and is rock-solid.

Pair it with a reverse proxy pattern โ€” see how to configure an Nginx reverse proxy โ€” so the WAF terminates TLS, inspects the request, and passes clean traffic to your app server.

Cloud-Edge WAF vs. Self-Hosted WAF

Criteria Cloud-Edge WAF Self-Hosted WAF
Setup time Hours (DNS change) Days (install, tune)
Latency impact +10โ€“40 ms +1โ€“5 ms (same box)
Rule control Vendor-bounded Full
DDoS scrubbing included Usually yes No
Compliance / data residency Depends on vendor You control it
Cost at scale Grows with traffic Mostly fixed
Best for Public-facing SaaS, marketing sites Regulated workloads, fintech, healthcare
Dark minimalist flowchart deciding between Cloud-Edge WAF, Self-Hosted ModSecurity, or Hybrid.

WAF Tuning: Avoiding False Positives

This part is tedious, honestly. Run the WAF in detection-only mode for at least a week. Pipe alerts to a log aggregator. Walk through the noisy rules โ€” usually the SQL injection regex catching a legitimate JSON payload, or the path-traversal rule tripping on an upload endpoint. Whitelist by location, not globally. Then flip to blocking mode. A WAF that fires on real traffic is worse than no WAF at all, because the team learns to ignore the alerts.

Pillar 4 โ€” Network Isolation, VLANs, and BMC/IPMI Hardening

Key takeaway: The management plane is not the data plane. Treat them as different worlds.

Dark network topology showing public internet, edge firewall, production VLAN, and isolated management VLAN via bastion.

Private VLAN Segmentation Between Bare Metal Nodes

If you're running multiple bare metal servers โ€” say, web + app + database tiers โ€” don't let them all see each other on the public network. Put them on a private VLAN, route only what's needed (web โ†’ app, app โ†’ db), and block east-west traffic that doesn't fit your application graph. Private VLANs (PVLANs) take this further by isolating ports within the same VLAN, so a compromised web server can't pivot sideways to its peers.

Out-of-Band Management: Securing iDRAC, iLO, and IPMI

Warning: Default IPMI/BMC credentials are responsible for a majority of bare metal compromises documented in SANS incident reports. Change them. Today.

The BMC โ€” Dell iDRAC, HP iLO, Supermicro IPMI โ€” is essentially a tiny computer-within-the-computer with full hardware access. If an attacker reaches it, they own the box at a level deeper than your OS can detect. Hardening checklist:

  • Change vendor default credentials immediately โ€” see our walkthroughs for changing iDRAC default credentials and resetting Supermicro IPMI passwords
  • Never expose the BMC to the public internet โ€” period
  • Place it on a dedicated management VLAN reachable only via a bastion host
  • Disable IPMI over LAN if not strictly needed; prefer Redfish API over legacy IPMI 2.0
  • Apply ACLs by source IP โ€” restrict to your admin subnet
  • Disable the web UI if you're using API/CLI tools exclusively
  • Patch BMC firmware every quarter โ€” these vulns are real (USBAnywhere, Pantsdown)
  • Audit which port iDRAC listens on โ€” see iDRAC port reference

Jump Host and Bastion Architecture

One hardened, MFA-protected jump host. All admin SSH and BMC access flows through it. Direct admin access from the public internet to production or management is forbidden โ€” full stop. The bastion runs minimal services, logs every session, and ideally records keystrokes for audit. If someone compromises an admin laptop, they still have to defeat MFA on the bastion before they can touch anything.

Disabling IPMI Over LAN and Enforcing ACLs

On a Supermicro BMC, the worst-case configuration is IPMI over LAN enabled, listening on the production interface, with a default password. That's the trifecta of "your server is owned in 24 hours." Disable it where possible, set ACLs in the BMC web UI, and verify with ipmitool lan print from a trusted host that the configuration actually took.

Operating System and Kernel Hardening Checklist

Once the four pillars are in place, harden the OS itself. This is where you separate a server that looks secure from one that actually is.

SSH Hardening

  1. Generate strong keys with ed25519 SSH keys; copy the public key and disable password auth in sshd_config
  2. Disable root SSH login โ€” admins should sudo, not log in as root
  3. Change the default SSH port โ€” security through obscurity is real for reducing log noise from drive-by scanners
  4. Install fail2ban with aggressive thresholds (5 failures in 10 minutes = 24-hour ban)
  5. Add MFA via PAM with libpam-google-authenticator for any account with sudo
  6. Set AllowUsers to an explicit allow list

SELinux and AppArmor Enforcement

Don't disable these. I cannot count the number of times "we'll fix it later" SELinux-permissive systems became the breach vector six months later. Run in enforcing mode. When something breaks, write a policy with audit2allow. It's annoying for two weeks and saves you for years.

Kernel Parameters via sysctl

# /etc/sysctl.d/99-hardening.conf net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_ignore_bogus_error_responses = 1 net.ipv6.conf.all.accept_redirects = 0 kernel.randomize_va_space = 2 kernel.kptr_restrict = 2 kernel.dmesg_restrict = 1 fs.protected_hardlinks = 1 fs.protected_symlinks = 1

Apply with sysctl --system and verify with sysctl -a | grep ....

Patch Management and Unattended Upgrades

On Debian/Ubuntu, enable unattended-upgrades for security packages. On RHEL/Rocky/Alma, configure dnf-automatic. Reboot windows are a planning problem, not a reason to skip the patch โ€” use kexec or live patching where uptime is critical. Check your distro's hardening posture against CIS Benchmarks; run Lynis monthly; consider OpenSCAP if you're chasing formal compliance.

For OS-specific deep dives, our Linux server security guide and how to secure servers cover the broader hardening playbook. On Windows bare metal, see our Windows dedicated server security tips.

Monitoring, Intrusion Detection, and Incident Response

Hardening sets the floor. Monitoring tells you when someone tries to push through it.

Tool Type Strengths Best Use Case
Suricata Network IDS/IPS Multi-threaded, modern, ET rules Inline NIDS at line rate
Snort 3 Network IDS/IPS Mature signatures, Cisco backing Established SOC environments
Wazuh Host IDS / XDR FIM, log analysis, vulnerability scan, dashboard Full HIDS + light SIEM
OSSEC Host IDS Lightweight, file integrity Resource-constrained hosts
CrowdSec Collaborative IPS Crowd-sourced blocklists, modern Edge servers, ban-by-reputation

Log Aggregation and SIEM Integration

If logs only live on the server, an attacker's first move is to wipe them. Forward everything to a central system โ€” Graylog, ELK, or Splunk if budget allows. Want to know what to log? See our reference on Linux logs. Auth logs, sudo, kernel, web access, WAF events, and BMC events all need to flow off-host within seconds.

Building an Incident Response Runbook

Five phases, in order: detect, contain, eradicate, recover, review. Write the runbook before the incident, not during. It should answer questions like: who has authority to pull a server from production? What's the rollback procedure? Who notifies legal/customers? Where are the backups stored, and have we tested restoring them this quarter? Pair it with a real server disaster recovery plan.

Compliance and Regulatory Requirements for Bare Metal Servers

Standard Key Required Controls Bare Metal Fit
PCI-DSS 4.0 Network segmentation, encryption in transit/rest, MFA for admins, log retention, single-tenant for cardholder data Excellent โ€” single-tenant by definition
HIPAA BAA with provider, encryption, audit logs, access controls Strong โ€” provider must sign BAA
GDPR Data residency in EU, breach notification, processor agreement Strong โ€” pick an EU data center
ISO 27001 / SOC 2 Type II Risk management, access control, continuous monitoring Inherits provider's certification posture

For GDPR-driven workloads, EU residency matters. We host across multiple European data centers โ€” see Europe dedicated servers for region details and the Germany hosting guide if Frankfurt-region latency is your priority. Background on EU hosting in our benefits of hosting in Europe piece.

How to Evaluate a Bare Metal Hosting Provider's Security

The shortcut is asking the provider questions they can't fudge. If they can't answer in specifics, walk away.

10 Security Questions to Ask Before You Buy

  1. What's your aggregate DDoS scrubbing capacity in Tbps and Mpps?
  2. Is mitigation always-on or on-demand, and what's the time-to-mitigate SLA?
  3. Is L7 mitigation included or only L3/L4? Does IPv6 get the same protection?
  4. How is BMC/IPMI access isolated? Is it on a separate management network by default?
  5. Do you offer KVM-over-IP, and how is that path secured?
  6. What's your firmware and BIOS patching cadence?
  7. Do you hold ISO 27001 and/or SOC 2 Type II certification? Can I see the report under NDA?
  8. What's the physical security posture of the data center (biometrics, cameras, audit trail)?
  9. Will you sign a BAA (HIPAA) or DPA (GDPR)?
  10. What's your incident response process and notification SLA when something happens?
Dark branded checklist card titled Provider Security Scorecard with 10 hosting security questions.

Why 1Gbits Bare Metal Servers Are Secure by Default

We built our platform around the assumption that customers shouldn't have to bolt security on after the fact. Every dedicated server ships with L3/L4 DDoS protection enabled by default, isolated BMC networks, hardened OS images, and 24/7 support that actually responds when something goes wrong. If you'd rather not own the security stack yourself, our Bare Metal server tier handles patching, monitoring, and incident response for you. The full case is on our why 1Gbits page โ€” and when you're ready to provision, the dedicated server is one click away.