<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nyra Amsi</title>
    <description>The latest articles on DEV Community by Nyra Amsi (@nyra-amsi).</description>
    <link>https://dev.to/nyra-amsi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3895600%2Fbc4f8445-ce34-4779-80df-9f6910867430.png</url>
      <title>DEV Community: Nyra Amsi</title>
      <link>https://dev.to/nyra-amsi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nyra-amsi"/>
    <language>en</language>
    <item>
      <title>Bare Metal Automation in 2026: A Blueprint for Provisioning and Lifecycle Management</title>
      <dc:creator>Nyra Amsi</dc:creator>
      <pubDate>Thu, 30 Jul 2026 05:14:11 +0000</pubDate>
      <link>https://dev.to/nyra-amsi/bare-metal-automation-in-2026-a-blueprint-for-provisioning-and-lifecycle-management-5gij</link>
      <guid>https://dev.to/nyra-amsi/bare-metal-automation-in-2026-a-blueprint-for-provisioning-and-lifecycle-management-5gij</guid>
      <description>&lt;p&gt;Bare metal servers remain the critical foundation for workloads that demand predictable performance, strict hardware isolation, and zero-overhead compute power. In 2026, as enterprise AI platforms, high-performance computing (HPC), and distributed edge networks rapidly scale, the reliance on dedicated physical infrastructure has surged. &lt;/p&gt;

&lt;p&gt;However, operating physical servers at this scale exposes a major bottleneck: &lt;strong&gt;manual hardware management.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provisioning, configuring, updating, and retiring physical servers through manual intervention introduces configuration drift, slows deployment pipelines, and creates significant auditing gaps. Bare metal automation solves these operational challenges by transforming raw physical infrastructure into programmable assets. &lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
&lt;strong&gt;The Core Premise:&lt;/strong&gt;&lt;br&gt;
By connecting initial OS provisioning, out-of-band management, and secure decommissioning into repeatable automated workflows, engineering teams can manage physical hardware with the same agility as virtualized cloud environments.&lt;br&gt;

&lt;/div&gt;


&lt;p&gt;This blueprint explores the exact mechanics of bare metal automation in 2026. We will break down the core provisioning processes, hardware lifecycle management, security protocols, and how modern Infrastructure-as-Code (IaC) toolchains interact directly with the metal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anatomy of Bare Metal Automation
&lt;/h2&gt;

&lt;p&gt;Bare metal automation fundamentally differs from virtual machine orchestration. Because no hypervisor sits between the workload and the underlying hardware, automation tools cannot simply rely on virtualization APIs to spin up instant compute nodes. &lt;/p&gt;

&lt;p&gt;Instead, the provisioning logic must interact directly with the physical machine's internal components—firmware, network interface cards (NICs), storage controllers, and power systems. This requires a specialized operational scope that securely manages physical state transitions, transforming an unconfigured, powered-off rack server into a fully functional, network-attached node.&lt;/p&gt;

&lt;h3&gt;
  
  
  Baseboard Management Controllers (BMC) &amp;amp; Out-of-Band Access
&lt;/h3&gt;

&lt;p&gt;Before an operating system is even installed on the drives, infrastructure teams need a mechanism to interact with the raw hardware. This is where &lt;strong&gt;Out-of-Band (OOB) management&lt;/strong&gt; becomes critical. Every enterprise-grade physical server is equipped with a Baseboard Management Controller (BMC).&lt;/p&gt;

&lt;p&gt;Historically, data center administrators relied on the Intelligent Platform Management Interface (IPMI). However, modern bare metal automation pipelines have transitioned to the &lt;strong&gt;Redfish API&lt;/strong&gt;. Redfish provides a secure, RESTful interface to the BMC. This allows automation scripts and control planes to programmatically manage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Power states&lt;/li&gt;
&lt;li&gt;BIOS/UEFI settings&lt;/li&gt;
&lt;li&gt;Boot orders&lt;/li&gt;
&lt;li&gt;Virtual media mounting&lt;/li&gt;
&lt;li&gt;Hardware telemetry extraction (via standard JSON payloads)
### Network Booting and OS Provisioning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once the BMC powers on the server and applies the correct boot order, the automated operating system installation sequence begins via the network. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;DHCP Assignment:&lt;/strong&gt; The physical server initializes and sends a broadcast request; the infrastructure control plane responds by assigning an IP address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PXE / iPXE Handover:&lt;/strong&gt; iPXE allows the bare metal server to fetch bootloaders and installation images dynamically and securely over HTTP/HTTPS rather than relying on slower TFTP protocols.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unattended Execution:&lt;/strong&gt; Configuration files like &lt;em&gt;Kickstart (RHEL)&lt;/em&gt;, &lt;em&gt;Preseed (Debian)&lt;/em&gt;, or &lt;em&gt;Cloud-Init&lt;/em&gt; are injected. They automatically execute disk partitioning, inject root SSH keys, apply baseline security rules, and install the base OS without requiring a single human keystroke.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Full Server Lifecycle: From Rack to Retirement
&lt;/h2&gt;

&lt;p&gt;Effective bare metal automation extends far beyond the initial OS deployment. It governs the entire operational lifespan through a strictly defined state machine: &lt;br&gt;
&lt;code&gt;Discovered&lt;/code&gt; ➡️ &lt;code&gt;Commissioned&lt;/code&gt; ➡️ &lt;code&gt;Provisioned&lt;/code&gt; ➡️ &lt;code&gt;Active&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If hardware faults occur, the control plane shifts the node into &lt;strong&gt;Maintenance&lt;/strong&gt; or &lt;strong&gt;Quarantine&lt;/strong&gt;. This ensures Configuration Management Databases (CMDB) remain a real-time source of truth.&lt;/p&gt;
&lt;h3&gt;
  
  
  Zero-Touch Provisioning (ZTP) and Hardware Validation
&lt;/h3&gt;

&lt;p&gt;Before a physical node is deemed production-ready, it must pass rigorous hardware validation via ZTP workflows. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inventory Check:&lt;/strong&gt; Automation scripts extract hardware inventory to verify CPU core counts, memory capacity, and storage health against the expected rack manifest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firmware Baseline:&lt;/strong&gt; The control plane flashes BIOS and component firmware to globally approved baseline versions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage Config:&lt;/strong&gt; Hardware RAID controllers or NVMe pools are configured via API. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a degraded DIMM or outdated NIC driver is detected, the node is halted before OS installation begins.&lt;/p&gt;
&lt;h3&gt;
  
  
  Secure Decommissioning and Data Sanitization
&lt;/h3&gt;

&lt;p&gt;When a node reaches end-of-life, automated data sanitization workflows execute cryptographic erasures or multi-pass disk wipes adhering to &lt;strong&gt;NIST 800-88&lt;/strong&gt; standards. The automation toolchain programmatically revokes IP addresses, removes SSH keys, and resets the BMC credentials back to factory defaults before securely updating the CMDB to reflect the asset as permanently &lt;strong&gt;Retired&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Toolchain: IaC and Configuration Management
&lt;/h2&gt;

&lt;p&gt;By leveraging &lt;strong&gt;Bare Metal as a Service (BMaaS)&lt;/strong&gt; platforms (like &lt;em&gt;Canonical MAAS, Tinkerbell, Metal3, or OpenStack Ironic&lt;/em&gt;), organizations interact with physical hardware entirely through API endpoints. This enables GitOps workflows for physical servers.&lt;/p&gt;
&lt;h3&gt;
  
  
  Terraform for Infrastructure State
&lt;/h3&gt;

&lt;p&gt;Terraform does not execute the internal OS installation. Instead, it interacts directly with the BMaaS provider's API to request physical server profiles, allocate MAC addresses, and assign network parameters. It also dynamically updates IPAM systems, configures firewalls, and attaches nodes to upstream load balancers.&lt;/p&gt;
&lt;h3&gt;
  
  
  Ansible for OS Baseline and Security
&lt;/h3&gt;

&lt;p&gt;Once bootstrapped via Cloud-Init, Ansible takes over. Through idempotent playbooks, Ansible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enforces strict OS hardening (SSH daemon policies, disabling root logins).&lt;/li&gt;
&lt;li&gt;Applies Center for Internet Security (CIS) compliance benchmarks.&lt;/li&gt;
&lt;li&gt;Handles workload-specific kernel parameter tuning.&lt;/li&gt;
&lt;li&gt;Installs monitoring dependencies (Prometheus node exporters, security agents).&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Engineering High-Performance Workloads
&lt;/h2&gt;

&lt;p&gt;Bare metal automation provides the flexibility to tailor physical nodes for extreme computational performance.&lt;/p&gt;
&lt;h3&gt;
  
  
  AI and GPU-Dense Clusters
&lt;/h3&gt;

&lt;p&gt;Provisioning a GPU cluster for LLM training involves complex dependency chains. Workflows must orchestrate flashing precise GPU firmware, configuring PCIe lanes for NVLink, and injecting specific CUDA drivers. &lt;/p&gt;

&lt;p&gt;Furthermore, high-density AI servers push Thermal Design Power (TDP) boundaries. Automated control planes validate rack-level power budgets, airflow limits, and liquid cooling capacities &lt;em&gt;before&lt;/em&gt; dispatching workloads to prevent thermal throttling.&lt;/p&gt;
&lt;h3&gt;
  
  
  Edge Computing Operations
&lt;/h3&gt;

&lt;p&gt;Edge computing pushes bare metal into distributed environments (telecom towers, retail backrooms). Because of limited bandwidth and no on-site IT, automation pipelines rely on immutable OS images. If a remote headless server fails, the control plane uses OOB access to automatically trigger self-healing workflows—forcing reboots or mounting local recovery images.&lt;/p&gt;


&lt;h2&gt;
  
  
  Security Protocols for Bare Metal Workflows
&lt;/h2&gt;

&lt;p&gt;Because these tools can rewrite firmware and wipe drives, securing the orchestration control plane is paramount. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enforce &lt;strong&gt;Role-Based Access Control (RBAC)&lt;/strong&gt; and &lt;strong&gt;MFA&lt;/strong&gt; across CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;Segregate management traffic (Redfish API, PXE payloads) into dedicated, &lt;strong&gt;air-gapped management VLANs&lt;/strong&gt; using TLS encryption.&lt;/li&gt;
&lt;li&gt;Integrate secrets vaulting (like &lt;strong&gt;HashiCorp Vault&lt;/strong&gt;) to dynamically inject credentials, ensuring no plaintext passwords exist in state files.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Conclusion: Building a Repeatable Infrastructure
&lt;/h2&gt;

&lt;p&gt;Transitioning to a fully automated lifecycle is an operational necessity. Bare metal automation transforms static physical hardware into repeatable, immutable infrastructure, drastically reducing deployment times.&lt;/p&gt;

&lt;p&gt;However, effective automation requires an underlying physical infrastructure designed to be programmatically controlled from day one. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.servers99.com/dedicated-server/" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Ready to optimize workloads without the hypervisor tax? Explore our Dedicated Server Solutions.&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>hardware</category>
      <category>automation</category>
    </item>
    <item>
      <title>How to Use Snort on Ubuntu Dedicated Servers to Detect SSH Brute-Force Attacks</title>
      <dc:creator>Nyra Amsi</dc:creator>
      <pubDate>Fri, 03 Jul 2026 10:56:22 +0000</pubDate>
      <link>https://dev.to/nyra-amsi/how-to-use-snort-on-ubuntu-dedicated-servers-to-detect-ssh-brute-force-attacks-386g</link>
      <guid>https://dev.to/nyra-amsi/how-to-use-snort-on-ubuntu-dedicated-servers-to-detect-ssh-brute-force-attacks-386g</guid>
      <description>&lt;p&gt;SSH brute-force attacks are among the most common threats targeting Linux dedicated servers. Attackers use automated tools to repeatedly attempt username and password combinations in an effort to gain unauthorized access. Even when login attempts fail, excessive authentication requests can clutter logs, consume resources, and make it harder to identify legitimate security events.&lt;/p&gt;

&lt;p&gt;While traditional firewalls can block unwanted traffic, they often do not provide detailed visibility into suspicious connection patterns. This is where Snort can help.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Note&lt;/strong&gt;: This guide uses Snort 2 from the official Ubuntu repositories for a quick, beginner-friendly setup. For Snort 3, a manual source compilation is required.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Problem&lt;br&gt;
Consider a dedicated server that exposes SSH on port 22 for remote administration. Over time, the server may receive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automated login attempts from unknown IP addresses&lt;/li&gt;
&lt;li&gt;Credential stuffing attacks&lt;/li&gt;
&lt;li&gt;Bot-driven password guessing campaigns&lt;/li&gt;
&lt;li&gt;Large volumes of connection attempts from multiple sources&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although SSH logs record these events, manually reviewing log files can be time-consuming, especially on busy servers. A network intrusion detection system such as Snort can monitor traffic in real-time and generate alerts whenever suspicious SSH activity is detected.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before starting, ensure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu 24.04 LTS&lt;/li&gt;
&lt;li&gt;Root or sudo access&lt;/li&gt;
&lt;li&gt;A dedicated server with SSH enabled&lt;/li&gt;
&lt;li&gt;Internet connectivity for package installation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Update the system first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 1: Install Snort
&lt;/h2&gt;

&lt;p&gt;Install Snort directly from the standard Ubuntu repositories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;snort &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Note:&lt;/strong&gt; During installation, you may be prompted to enter your network interface and IP range.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Verify the installation:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;snort &lt;span class="nt"&gt;-V&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see version information confirming that Snort (version 2.9.x) is installed successfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Identify Your Network Interface
&lt;/h2&gt;

&lt;p&gt;List your available network interfaces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip addr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see output containing names like eth0, ens3, or ens18. Make a note of the interface connected to the public network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Configure Snort
&lt;/h2&gt;

&lt;p&gt;Open the main Snort configuration file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/snort/snort.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Locate the network variable section. Look for ipvar HOME_NET and set it to your server's IP subnet, or for broad monitoring:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;ipvar&lt;/span&gt; &lt;span class="n"&gt;HOME_NET&lt;/span&gt; &lt;span class="n"&gt;any&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the file and exit the editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Create a Local Rule File
&lt;/h2&gt;

&lt;p&gt;Ensure the rules directory exists (it usually does by default):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/snort/rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the local rules file to add your custom alert:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/snort/rules/local.rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 5: Create a Brute-Force Detection Rule&lt;br&gt;
To accurately detect a brute-force attack (and avoid flooding your logs with normal SSH logins), we need to use a threshold (or detection filter). This tells Snort to only trigger an alert if a single IP address makes too many connection attempts within a short timeframe.&lt;/p&gt;

&lt;p&gt;Add the following rule:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;alert&lt;/span&gt; &lt;span class="n"&gt;tcp&lt;/span&gt; &lt;span class="k"&gt;any&lt;/span&gt; &lt;span class="k"&gt;any&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;HOME_NET&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;"Possible SSH Brute Force Attack Detected"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;flags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;S&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;detection_filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;track&lt;/span&gt; &lt;span class="n"&gt;by_src&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;count&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;seconds&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;sid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1000001&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;rev&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How this rule works:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;flags:S; looks for the initial connection attempt (SYN packet).&lt;/li&gt;
&lt;li&gt;detection_filter:track by_src, count 5, seconds 60; ensures an alert is ONLY generated if the same source IP attempts to connect more than 5 times within 60 seconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Save the file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Load the Rule
&lt;/h2&gt;

&lt;p&gt;Ensure Snort knows to look at your local rules. Open the configuration file again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/snort/snort.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add or ensure this line is uncommented:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;include&lt;/span&gt; $&lt;span class="n"&gt;RULE_PATH&lt;/span&gt;/&lt;span class="n"&gt;local&lt;/span&gt;.&lt;span class="n"&gt;rules&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Validate the configuration to ensure there are no syntax errors:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snort &lt;span class="nt"&gt;-T&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; /etc/snort/snort.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A successful validation output indicates that Snort can load the rule correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Start Snort
&lt;/h2&gt;

&lt;p&gt;Run Snort in alerting mode. Replace eth0 with your actual network interface noted in Step 2:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snort &lt;span class="nt"&gt;-i&lt;/span&gt; eth0 &lt;span class="nt"&gt;-c&lt;/span&gt; /etc/snort/snort.conf &lt;span class="nt"&gt;-A&lt;/span&gt; console
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Note&lt;/strong&gt;: Using -A console will print alerts directly to your screen. For background logging in production, use -A fast.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 8: Generate Test Traffic
&lt;/h2&gt;

&lt;p&gt;From another system, initiate multiple SSH connections rapidly to trigger the threshold:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;1..6&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;ssh &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nv"&gt;ConnectTimeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 user@server-ip&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Snort will detect the rapid connection attempts and output an alert:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[**] [1:1000001:1] Possible SSH Brute Force Attack Detected [**]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understanding the Results&lt;br&gt;
By using a detection filter, your alerts will specifically highlight high-frequency connection attempts rather than normal administrator logins. Not every alert represents a successful compromise, but it provides visibility into aggressive automated bot activity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reducing False Positives
&lt;/h2&gt;

&lt;p&gt;To improve server security:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restrict SSH access to trusted IP addresses only.&lt;/li&gt;
&lt;li&gt;Change SSH to key-based authentication and disable password logins.&lt;/li&gt;
&lt;li&gt;Adjust the count and seconds in your Snort rule based on your server's normal traffic baseline.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Snort Is Useful on Dedicated Servers
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.servers99.com/dedicated-server/" rel="noopener noreferrer"&gt;Dedicated servers&lt;/a&gt; often host websites, APIs, databases, and remote management services that are continuously exposed to the internet. Snort provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time network monitoring&lt;/li&gt;
&lt;li&gt;Intrusion detection capabilities&lt;/li&gt;
&lt;li&gt;Custom alert rules with rate-limiting&lt;/li&gt;
&lt;li&gt;Unmatched traffic visibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By identifying brute-force attempts early, administrators can investigate and respond before minor events develop into larger security incidents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Monitoring SSH traffic with Snort adds a critical layer of visibility for Ubuntu dedicated servers. Instead of relying solely on standard logs, administrators gain real-time insights into aggressive network behavior.&lt;/p&gt;

&lt;p&gt;This proactive approach becomes especially important for servers running public-facing services, where continuous exposure to automated scanning is common. Robust network monitoring is highly suitable for enterprise-grade dedicated server setups, ensuring stable performance and secure deployments.&lt;/p&gt;

&lt;p&gt;A layered security approach is always recommended, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A properly configured firewall (UFW or equivalent)&lt;/li&gt;
&lt;li&gt;Strong SSH authentication using key-based access&lt;/li&gt;
&lt;li&gt;Intrusion detection tools such as Snort&lt;/li&gt;
&lt;li&gt;Automated protection tools like Fail2Ban&lt;/li&gt;
&lt;li&gt;Regular system and package updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When these components are implemented together, the server becomes significantly more resilient against common network-based attacks while maintaining full control and visibility for administrators.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>linux</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Dedicated Server Security Checklist: Complete Linux Server Hardening</title>
      <dc:creator>Nyra Amsi</dc:creator>
      <pubDate>Sat, 20 Jun 2026 09:00:04 +0000</pubDate>
      <link>https://dev.to/nyra-amsi/dedicated-server-security-checklist-complete-linux-server-hardening-4idc</link>
      <guid>https://dev.to/nyra-amsi/dedicated-server-security-checklist-complete-linux-server-hardening-4idc</guid>
      <description>&lt;p&gt;When a Linux dedicated server receives a public IP address, it immediately becomes visible to internet-wide scanners and automated attack bots.&lt;/p&gt;

&lt;p&gt;Many administrators focus on performance optimization, but security fundamentals are often overlooked until an incident occurs.&lt;/p&gt;

&lt;p&gt;A secure production environment requires multiple layers of defense, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSH hardening and key-based authentication&lt;/li&gt;
&lt;li&gt;Multi-factor authentication (MFA)&lt;/li&gt;
&lt;li&gt;Firewall configuration and access control&lt;/li&gt;
&lt;li&gt;Intrusion prevention with CrowdSec and Fail2Ban&lt;/li&gt;
&lt;li&gt;Runtime threat detection using eBPF technologies&lt;/li&gt;
&lt;li&gt;Web Application Firewalls (WAF)&lt;/li&gt;
&lt;li&gt;File integrity monitoring&lt;/li&gt;
&lt;li&gt;Kernel hardening&lt;/li&gt;
&lt;li&gt;Backup and disaster recovery planning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One important point often missed by server administrators is that moving SSH to a non-standard port is not a security control. While it may reduce automated log noise, strong authentication and access restrictions remain the real protection mechanisms.&lt;/p&gt;

&lt;p&gt;Modern Linux security is also shifting toward kernel-level observability with tools such as Falco, Tetragon, and Tracee, providing deeper visibility into suspicious activity with minimal overhead.&lt;/p&gt;

&lt;p&gt;Servers99 recently created a comprehensive guide covering these topics in detail, including practical recommendations for Ubuntu, AlmaLinux, and other Linux server environments.&lt;/p&gt;

&lt;p&gt;Read the full guide: &lt;a href="https://www.servers99.com/blog/dedicated-server-security-checklist/" rel="noopener noreferrer"&gt;Dedicated Server Security Checklist: Complete Linux Server Hardening Guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What security control do you consider absolutely mandatory on every production Linux server?&lt;/p&gt;

</description>
      <category>linux</category>
      <category>security</category>
      <category>devops</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>Why a Clean CI/CD Scan Isn't Enough: The Kubernetes Runtime Blind Spot</title>
      <dc:creator>Nyra Amsi</dc:creator>
      <pubDate>Thu, 18 Jun 2026 07:48:37 +0000</pubDate>
      <link>https://dev.to/nyra-amsi/why-a-clean-cicd-scan-isnt-enough-the-kubernetes-runtime-blind-spot-3mmd</link>
      <guid>https://dev.to/nyra-amsi/why-a-clean-cicd-scan-isnt-enough-the-kubernetes-runtime-blind-spot-3mmd</guid>
      <description>&lt;p&gt;If your container passes a CI/CD vulnerability scan, is it safe to run in production? Many engineering teams assume the answer is yes. But a clean image scan is just a green light to deploy—it is &lt;em&gt;not&lt;/em&gt; a lifetime guarantee.&lt;/p&gt;

&lt;p&gt;Pre-deployment gates like static configuration checks and vulnerability scanning are entirely predictive. They are great for catching known risks (published CVEs) before your code goes live. However, they leave a massive blind spot once the container is actively running. &lt;/p&gt;

&lt;p&gt;A static scan cannot protect you from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zero-day exploits&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuration drift and memory injections&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compromised third-party dependencies&lt;/strong&gt; executing malicious behavior at runtime&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insider threats&lt;/strong&gt; leveraging legitimate system tools to move laterally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Static security stops at the deployment line. True Zero-Trust requires active surveillance of your live environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Shift to Kernel-Level Security with eBPF
&lt;/h3&gt;

&lt;p&gt;Instead of relying on easily bypassed user-space tools, the industry is shifting toward kernel-level security using &lt;strong&gt;eBPF (Extended Berkeley Packet Filter)&lt;/strong&gt; and &lt;strong&gt;Cilium Tetragon&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;By moving security monitoring directly into the Linux kernel, infrastructure teams can correlate process execution with network activity in real-time. For example, if a routine &lt;code&gt;nginx&lt;/code&gt; binary suddenly spawns a &lt;code&gt;bash&lt;/code&gt; shell to run &lt;code&gt;curl&lt;/code&gt;, eBPF detects this at the system-call level and instantly terminates the process via &lt;code&gt;SIGKILL&lt;/code&gt; before the payload even executes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dive Deeper into K8s Runtime Security
&lt;/h3&gt;

&lt;p&gt;We have put together a comprehensive architectural breakdown on the modern Kubernetes threat model and how to implement active runtime enforcement. &lt;/p&gt;

&lt;p&gt;In our full guide, we cover:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The 5 primary attack vectors inside a K8s cluster (including DNS Tunneling).&lt;/li&gt;
&lt;li&gt;How eBPF sensors (&lt;code&gt;kprobes&lt;/code&gt;, &lt;code&gt;tracepoints&lt;/code&gt;) provide deep visibility without performance latency.&lt;/li&gt;
&lt;li&gt;How to write and deploy Tetragon &lt;code&gt;TracingPolicy&lt;/code&gt; rules.&lt;/li&gt;
&lt;li&gt;Achieving PCI-DSS (File Integrity Monitoring) and SOC 2 compliance using kernel-native visibility.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.servers99.com/blog/kubernetes-runtime-security-guide/" rel="noopener noreferrer"&gt;Read the Full Architectural Breakdown and Interactive Guide Here&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>security</category>
      <category>cloudnative</category>
    </item>
    <item>
      <title>💻 Windows vs Linux Dedicated Server: A Technical Breakdown for 2026</title>
      <dc:creator>Nyra Amsi</dc:creator>
      <pubDate>Fri, 24 Apr 2026 08:29:40 +0000</pubDate>
      <link>https://dev.to/nyra-amsi/windows-vs-linux-dedicated-server-a-technical-breakdown-for-2026-42ll</link>
      <guid>https://dev.to/nyra-amsi/windows-vs-linux-dedicated-server-a-technical-breakdown-for-2026-42ll</guid>
      <description>&lt;p&gt;Hey everyone! 👋 &lt;/p&gt;

&lt;p&gt;If you are upgrading your backend infrastructure or moving away from shared hosting, choosing between a &lt;strong&gt;Windows&lt;/strong&gt; and &lt;strong&gt;Linux&lt;/strong&gt; dedicated server is one of the most critical decisions you'll make. It dictates your licensing costs, administrative overhead, security posture, and application compatibility for years.&lt;/p&gt;

&lt;p&gt;I recently did a deep dive into this, and instead of biased opinions, I wanted to share some raw technical facts and benchmarks that can help you choose the right &lt;a href="https://www.servers99.com/dedicated-server/" rel="noopener noreferrer"&gt;bare-metal infrastructure&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ The Quick Verdict
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Go with Linux&lt;/strong&gt; if you need raw performance, zero licensing fees, containerization (Docker/Kubernetes), and native support for PHP, Python, or open-source stacks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go with Windows&lt;/strong&gt; if your operations rely on ASP.NET, Microsoft SQL Server, Active Directory, or if your team requires a familiar graphical user interface (GUI) for server management.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🐧 Linux: Performance and Flexibility
&lt;/h3&gt;

&lt;p&gt;Linux is open-source and renowned for its lightweight kernel architecture. Since it doesn't need a GUI to run, practically 100% of the server's computing power goes straight to your applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why developers love it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero Licensing Costs:&lt;/strong&gt; Distros like Ubuntu, Debian, and AlmaLinux are free. You avoid per-core licensing fees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Superior Resource Efficiency:&lt;/strong&gt; Benchmarks show Linux can process up to &lt;strong&gt;3x more web requests per gigabyte of RAM&lt;/strong&gt; compared to GUI-heavy alternatives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Web Standard:&lt;/strong&gt; It is the absolute standard for LAMP/LEMP stacks, WordPress, Node.js, and Python frameworks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The Catch:&lt;/em&gt; It is heavily CLI-driven. If your sysadmins aren't comfortable with Bash or SSH, the learning curve is real.&lt;/p&gt;




&lt;h3&gt;
  
  
  🪟 Windows: Enterprise Integration
&lt;/h3&gt;

&lt;p&gt;Built on the Windows NT kernel, a Windows server is designed for deep integration with Microsoft’s enterprise ecosystem. It provides a familiar GUI via Remote Desktop Protocol (RDP).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why enterprises choose it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Native Microsoft Compatibility:&lt;/strong&gt; If you are running legacy ASP.NET or MSSQL, Windows is the only logical choice. MSSQL runs with deep kernel-level tuning here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active Directory:&lt;/strong&gt; Unmatched for enterprise identity management across massive organizational networks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Management:&lt;/strong&gt; The visual Server Manager makes deploying roles (like IIS or Hyper-V) point-and-click easy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The Catch:&lt;/em&gt; Licensing fees (around $40+ extra depending on the provider) and the GUI consumes baseline RAM and CPU.&lt;/p&gt;




&lt;h3&gt;
  
  
  🤔 How to Choose?
&lt;/h3&gt;

&lt;p&gt;Don't just pick what's "popular." Ask yourself:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What is your stack?&lt;/strong&gt; (Docker/K8s = Linux | Exchange/SharePoint = Windows)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What are your team's skills?&lt;/strong&gt; (Bash/Ansible = Linux | PowerShell/Dashboards = Windows)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What is your budget?&lt;/strong&gt; (Max hardware for the price = Linux | Need SLA-backed OS support = Windows)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ultimately, it’s all about reducing operational friction for your specific use case. &lt;/p&gt;

&lt;p&gt;What is your go-to OS for bare-metal servers? Let me know in the comments! 👇&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>linux</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
