<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wireguard on Adur</title><link>https://adurrr.github.io/en/tags/wireguard/</link><description>Recent content in Wireguard on Adur</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Wed, 01 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://adurrr.github.io/en/tags/wireguard/index.xml" rel="self" type="application/rss+xml"/><item><title>OPNsense: from hardware to a working firewall</title><link>https://adurrr.github.io/en/p/opnsense-from-hardware-to-a-working-firewall/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://adurrr.github.io/en/p/opnsense-from-hardware-to-a-working-firewall/</guid><description>&lt;h2 id="what-hardware-opnsense-needs"&gt;What hardware OPNsense needs
&lt;/h2&gt;&lt;p&gt;Before opening the installer, it&amp;rsquo;s worth knowing what OPNsense requires and what makes sense to buy. The official documentation distinguishes between minimum and recommended, but in practice there are nuances that matter quite a bit.&lt;/p&gt;
&lt;h3 id="official-minimum-requirements"&gt;Official minimum requirements
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Resource&lt;/th&gt;
 &lt;th&gt;Minimum&lt;/th&gt;
 &lt;th&gt;Recommended&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;CPU&lt;/td&gt;
 &lt;td&gt;64-bit x86-64, 1 GHz&lt;/td&gt;
 &lt;td&gt;Recent multi-core with AES-NI&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;RAM&lt;/td&gt;
 &lt;td&gt;2 GB&lt;/td&gt;
 &lt;td&gt;8 GB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Storage&lt;/td&gt;
 &lt;td&gt;40 GB SSD&lt;/td&gt;
 &lt;td&gt;120 GB SSD&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;NICs&lt;/td&gt;
 &lt;td&gt;2 network interfaces&lt;/td&gt;
 &lt;td&gt;2+ Intel interfaces&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;AES-NI has been mandatory since OPNsense 24.1. Without this instruction the installer won&amp;rsquo;t even boot. Any Intel processor from sixth generation onward includes it, and it&amp;rsquo;s been present in AMD since Ryzen.&lt;/p&gt;
&lt;h3 id="budget-options-that-work"&gt;Budget options that work
&lt;/h3&gt;&lt;p&gt;The cheapest option I&amp;rsquo;ve had good experience with is a mini PC with an Intel N100 or N200 processor. They&amp;rsquo;re designed for low power consumption and have AES-NI, which covers the main requirement. They can be found with four Intel i226-V Ethernet ports for under 150 euros.&lt;/p&gt;
&lt;p&gt;Some specific models that work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Topton N100/N200 with 4x i226-V&lt;/strong&gt;: between 120 and 170 euros depending on configuration. They come without RAM or SSD, which are purchased separately. An 8 GB DDR5 module and a 128 GB SSD add about 30 euros more.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protectli VP2420 or VP2410&lt;/strong&gt;: more expensive (around 300 euros), but with official support and an aluminum case that dissipates heat well. A good option if you prefer something with serious warranty.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recycled hardware with two NICs&lt;/strong&gt;: a Dell OptiPlex or Lenovo ThinkCentre with a dual-port Intel PCIe card works perfectly. They can be found for 50-80 euros in second-hand markets.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What really matters: make sure the network interfaces are Intel. Realtek works, but they cause problems with offloading and performance under load. It&amp;rsquo;s worth paying the difference.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation
&lt;/h2&gt;&lt;p&gt;Installing OPNsense is straightforward. Download the ISO image from the official website, write it to a USB with &lt;code&gt;dd&lt;/code&gt; or Rufus on Windows, and boot from the USB.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Write the image to a USB (be careful to select the correct device)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dd &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;OPNsense-24.7-dvd-amd64.iso &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/sdX &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4M &lt;span class="nv"&gt;status&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;progress
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;On boot, a live environment appears with the option to try before installing. The default user is &lt;code&gt;installer&lt;/code&gt; with password &lt;code&gt;opnsense&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;During installation:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select the destination disk for installation (the internal SSD, not the USB).&lt;/li&gt;
&lt;li&gt;Choose the filesystem. &lt;strong&gt;UFS&lt;/strong&gt; is the simple and stable option. &lt;strong&gt;ZFS&lt;/strong&gt; has advantages (snapshots, compression), but for a firewall with a single disk, UFS is sufficient.&lt;/li&gt;
&lt;li&gt;Define the root password.&lt;/li&gt;
&lt;li&gt;Remove the USB and reboot.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After reboot, OPNsense boots directly and presents a text console with a basic menu. From there you can assign interfaces and configure the LAN IP address to access the web interface.&lt;/p&gt;
&lt;h2 id="pppoe-configuration-on-wan"&gt;PPPoE configuration on WAN
&lt;/h2&gt;&lt;p&gt;If your ISP uses PPPoE (as is the case with many fiber connections in Spain and Latin America), it needs to be configured on the WAN interface.&lt;/p&gt;
&lt;p&gt;In &lt;strong&gt;Interfaces &amp;gt; WAN&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Change the IPv4 configuration type to &lt;strong&gt;PPPoE&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the username and password provided by the ISP.&lt;/li&gt;
&lt;li&gt;With most providers you don&amp;rsquo;t need to touch the MTU, but if you notice fragmentation issues, adjust it to &lt;strong&gt;1492&lt;/strong&gt; (the standard for PPPoE over Ethernet with MTU 1500).&lt;/li&gt;
&lt;li&gt;Save and apply.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the connection doesn&amp;rsquo;t come up, verify that the ONT cable goes directly to the port assigned as WAN. Some ISP ONTs need to be in bridge mode for OPNsense to negotiate the PPPoE session directly.&lt;/p&gt;
&lt;h2 id="lan-in-bridge-mode"&gt;LAN in bridge mode
&lt;/h2&gt;&lt;p&gt;There are situations where it&amp;rsquo;s useful to group multiple physical ports into the same network segment, for example when the mini PC has four ports and we want three of them to work as a switch without additional hardware.&lt;/p&gt;
&lt;p&gt;To configure a bridge in OPNsense:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Interfaces &amp;gt; Other Types &amp;gt; Bridge&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Create a new bridge and add the interfaces you want to group (for example, &lt;code&gt;igb1&lt;/code&gt;, &lt;code&gt;igb2&lt;/code&gt;, &lt;code&gt;igb3&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Interfaces &amp;gt; Assignments&lt;/strong&gt; and assign the newly created bridge as the LAN interface.&lt;/li&gt;
&lt;li&gt;Configure the static LAN IP on the bridge interface (for example, &lt;code&gt;192.168.1.1/24&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Enable the DHCP server in &lt;strong&gt;Services &amp;gt; DHCPv4&lt;/strong&gt; pointing to the bridge interface.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With this, all three ports share the same network segment and DHCP serves addresses for all of them.&lt;/p&gt;
&lt;h2 id="wireless-interface-and-firmware"&gt;Wireless interface and firmware
&lt;/h2&gt;&lt;p&gt;OPNsense supports some WiFi cards, but the support is limited compared to Linux. Atheros cards work best, but many need additional firmware that isn&amp;rsquo;t included by default.&lt;/p&gt;
&lt;p&gt;To install the required firmware:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# From the OPNsense console (option 8 from the menu for shell)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg install wifi-firmware-atheros
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Or for Intel cards:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg install wifi-firmware-intel
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After installing the firmware, restart the system. The wireless interface should appear in &lt;strong&gt;Interfaces &amp;gt; Assignments&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;To configure the access point:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Interfaces &amp;gt; Wireless&lt;/strong&gt; and create a new device in &lt;strong&gt;Access Point&lt;/strong&gt; mode.&lt;/li&gt;
&lt;li&gt;Select the standard (802.11ac/ax if the card supports it).&lt;/li&gt;
&lt;li&gt;Configure the SSID and WPA2/WPA3 security.&lt;/li&gt;
&lt;li&gt;Assign the wireless interface and give it an IP in a different range from the wired LAN, or add it to the existing bridge if you want it on the same segment.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;An honest warning: integrated WiFi in OPNsense works, but don&amp;rsquo;t expect the performance or stability of a dedicated access point. For serious use, it&amp;rsquo;s better to use an external AP (Ubiquiti, TP-Link Omada) and let OPNsense handle only routing and firewall.&lt;/p&gt;
&lt;h2 id="ids-and-ips-intrusion-detection-and-prevention"&gt;IDS and IPS: intrusion detection and prevention
&lt;/h2&gt;&lt;p&gt;OPNsense includes Suricata as the IDS/IPS engine. The difference between the two modes is simple: IDS detects and logs, IPS detects and blocks.&lt;/p&gt;
&lt;h3 id="initial-configuration"&gt;Initial configuration
&lt;/h3&gt;&lt;p&gt;In &lt;strong&gt;Services &amp;gt; Intrusion Detection&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Enable IDS&lt;/strong&gt;: check the activation box.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IPS mode&lt;/strong&gt;: if you want it to block traffic, change the mode to IPS. This requires Suricata to run in inline mode, which is the default behavior in OPNsense.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interfaces&lt;/strong&gt;: select WAN at minimum. If you want to inspect internal traffic as well, add LAN, but this consumes quite a bit more CPU.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pattern matcher&lt;/strong&gt;: select &lt;strong&gt;Hyperscan&lt;/strong&gt; if the hardware supports it (processors with SSSE3). It&amp;rsquo;s significantly faster than the default matcher.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="recommended-rule-sets-in-2026"&gt;Recommended rule sets in 2026
&lt;/h3&gt;&lt;p&gt;It&amp;rsquo;s not about activating all available rules. That consumes resources and generates false positives. A reasonable selection:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Rule set&lt;/th&gt;
 &lt;th&gt;What it&amp;rsquo;s for&lt;/th&gt;
 &lt;th&gt;Recommendation&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ET Open (Emerging Threats)&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Known threats, malware, C2&lt;/td&gt;
 &lt;td&gt;Activate. It&amp;rsquo;s the foundation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Abuse.ch SSL Blacklist&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Certificates associated with malware&lt;/td&gt;
 &lt;td&gt;Activate&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Abuse.ch URLhaus&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Malware distribution URLs&lt;/td&gt;
 &lt;td&gt;Activate&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ET Open Compromised&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Known compromised IPs&lt;/td&gt;
 &lt;td&gt;Activate&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Feodo Tracker&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Banking botnets&lt;/td&gt;
 &lt;td&gt;Activate&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ET Open Tor&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Tor traffic&lt;/td&gt;
 &lt;td&gt;Only if you want to block Tor&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Snort VRT&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Snort commercial rules&lt;/td&gt;
 &lt;td&gt;Requires subscription, not essential&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="best-practices-for-idsips-in-2026"&gt;Best practices for IDS/IPS in 2026
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Don&amp;rsquo;t activate all rules&lt;/strong&gt;. Select the ones that make sense for your environment. A home network doesn&amp;rsquo;t need SCADA or SQL server rules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic rule updates&lt;/strong&gt;: configure scheduled rule downloads. In &lt;strong&gt;Schedule&lt;/strong&gt; within IDS, set a daily update.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review logs before switching to IPS mode&lt;/strong&gt;. Leave the system in IDS mode for at least a week to identify false positives. If something legitimate triggers alerts, create an exception before starting to block.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor CPU usage&lt;/strong&gt;. Suricata can consume a lot on modest hardware. If the processor stays above 80% usage with IPS active, reduce the number of rules or limit inspection to the WAN interface.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use EVE JSON logging&lt;/strong&gt; to export events to a SIEM or analysis tool. The JSON format facilitates integration with Elasticsearch, Grafana, or Wazuh.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don&amp;rsquo;t rely solely on IDS/IPS&lt;/strong&gt;. It&amp;rsquo;s one more layer of defense. It doesn&amp;rsquo;t replace good firewall rules, network segmentation, or regular updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="crowdsec"&gt;CrowdSec
&lt;/h2&gt;&lt;p&gt;CrowdSec complements Suricata with a different approach: log analysis and shared decisions with the community. While Suricata inspects packets in real time, CrowdSec analyzes service logs and applies bans based on behavior patterns.&lt;/p&gt;
&lt;h3 id="installation-1"&gt;Installation
&lt;/h3&gt;&lt;p&gt;CrowdSec has an official plugin for OPNsense:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;System &amp;gt; Firmware &amp;gt; Plugins&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Search for &lt;code&gt;os-crowdsec&lt;/code&gt; and install it.&lt;/li&gt;
&lt;li&gt;After installation, it appears in &lt;strong&gt;Services &amp;gt; CrowdSec&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="recommended-configuration-and-collections"&gt;Recommended configuration and collections
&lt;/h3&gt;&lt;p&gt;(Optional) After installation, register the instance in the CrowdSec central console:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# From the OPNsense shell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cscli console enroll &amp;lt;your-enrollment-key&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The collections define what attack patterns CrowdSec detects. Recommended for a home or small office firewall:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Base collection for firewalls (usually already installed)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cscli collections install crowdsecurity/freebsd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Detection of port scanning and SSH brute force&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cscli collections install crowdsecurity/sshd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cscli collections install crowdsecurity/iptables
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# HTTP protection if you expose web services&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cscli collections install crowdsecurity/nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cscli collections install crowdsecurity/base-http-scenarios
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Aggressive scan detection&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cscli collections install crowdsecurity/http-cve
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Community blocklists (known malicious IPs)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cscli collections install crowdsecurity/whitelist-good-actors
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Enable the &lt;strong&gt;firewall bouncer&lt;/strong&gt; so CrowdSec can create blocking rules directly in the OPNsense firewall:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cscli bouncers add opnsense-firewall
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The generated token is entered in the plugin configuration in the web interface, in &lt;strong&gt;Services &amp;gt; CrowdSec &amp;gt; Bouncer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The real advantage of CrowdSec is shared intelligence. When a community member detects an attacking IP, that information is distributed to everyone else. It&amp;rsquo;s like having a collaborative IP reputation system.&lt;/p&gt;
&lt;h2 id="wireguard"&gt;WireGuard
&lt;/h2&gt;&lt;p&gt;WireGuard is the cleanest option for VPN in 2026. Faster, simpler, and with better cryptography than OpenVPN or IPsec.&lt;/p&gt;
&lt;h3 id="server-configuration"&gt;Server configuration
&lt;/h3&gt;&lt;p&gt;In &lt;strong&gt;VPN &amp;gt; WireGuard&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create an instance&lt;/strong&gt;: go to the &lt;strong&gt;Instances&lt;/strong&gt; tab (or &lt;strong&gt;Local&lt;/strong&gt; in earlier versions) and add a new one.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generate a key pair (done automatically when creating the instance).&lt;/li&gt;
&lt;li&gt;Listen port: &lt;code&gt;51820&lt;/code&gt; (or whatever you prefer).&lt;/li&gt;
&lt;li&gt;Tunnel address: &lt;code&gt;10.10.10.1/24&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add a peer&lt;/strong&gt;: in the &lt;strong&gt;Peers&lt;/strong&gt; tab, create a new pair.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Client&amp;rsquo;s public key (generated on the client device).&lt;/li&gt;
&lt;li&gt;Allowed IPs: &lt;code&gt;10.10.10.2/32&lt;/code&gt; (the IP the client will have inside the tunnel).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Assign the interface&lt;/strong&gt;: go to &lt;strong&gt;Interfaces &amp;gt; Assignments&lt;/strong&gt;, assign the WireGuard interface (&lt;code&gt;wg0&lt;/code&gt; or &lt;code&gt;wg1&lt;/code&gt;), enable it, and don&amp;rsquo;t touch the IP configuration (it&amp;rsquo;s already defined in WireGuard).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="client-configuration"&gt;Client configuration
&lt;/h3&gt;&lt;p&gt;On the client (mobile, laptop), the configuration is a simple file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Interface]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;PrivateKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;client-private-key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Address&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;10.10.10.2/24&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;DNS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;10.10.10.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Peer]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;PublicKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;server-public-key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;public-ip-or-ddns&amp;gt;:51820&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;AllowedIPs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0/0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;PersistentKeepalive&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;With &lt;code&gt;AllowedIPs = 0.0.0.0/0&lt;/code&gt;, all client traffic goes through the tunnel. If you only want to access the local network, change to &lt;code&gt;AllowedIPs = 192.168.1.0/24, 10.10.10.0/24&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="firewall-rules"&gt;Firewall rules
&lt;/h2&gt;&lt;p&gt;It&amp;rsquo;s no use configuring services if the firewall rules don&amp;rsquo;t allow the correct traffic. OPNsense blocks everything by default on WAN, which is correct. The work is in allowing what&amp;rsquo;s necessary on LAN and WireGuard.&lt;/p&gt;
&lt;h3 id="rules-for-lan"&gt;Rules for LAN
&lt;/h3&gt;&lt;p&gt;In &lt;strong&gt;Firewall &amp;gt; Rules &amp;gt; LAN&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Action&lt;/th&gt;
 &lt;th&gt;Protocol&lt;/th&gt;
 &lt;th&gt;Source&lt;/th&gt;
 &lt;th&gt;Destination&lt;/th&gt;
 &lt;th&gt;Destination Port&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;IPv4+6&lt;/td&gt;
 &lt;td&gt;LAN net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;Allow LAN outbound&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;IPv4&lt;/td&gt;
 &lt;td&gt;LAN net&lt;/td&gt;
 &lt;td&gt;LAN address&lt;/td&gt;
 &lt;td&gt;53&lt;/td&gt;
 &lt;td&gt;DNS to firewall&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;IPv4&lt;/td&gt;
 &lt;td&gt;LAN net&lt;/td&gt;
 &lt;td&gt;LAN address&lt;/td&gt;
 &lt;td&gt;443&lt;/td&gt;
 &lt;td&gt;WebUI access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The first rule is the most permissive and allows LAN to go out to the internet. In the second post of the series we&amp;rsquo;ll see how to restrict this with VLANs.&lt;/p&gt;
&lt;h3 id="rules-for-wireguard"&gt;Rules for WireGuard
&lt;/h3&gt;&lt;p&gt;In &lt;strong&gt;Firewall &amp;gt; Rules &amp;gt; WireGuard&lt;/strong&gt; (or the assigned interface):&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Action&lt;/th&gt;
 &lt;th&gt;Protocol&lt;/th&gt;
 &lt;th&gt;Source&lt;/th&gt;
 &lt;th&gt;Destination&lt;/th&gt;
 &lt;th&gt;Destination Port&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;IPv4&lt;/td&gt;
 &lt;td&gt;WireGuard net&lt;/td&gt;
 &lt;td&gt;LAN net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;LAN access from VPN&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;IPv4&lt;/td&gt;
 &lt;td&gt;WireGuard net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;Internet outbound from VPN&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="rule-on-wan-for-wireguard"&gt;Rule on WAN for WireGuard
&lt;/h3&gt;&lt;p&gt;In &lt;strong&gt;Firewall &amp;gt; Rules &amp;gt; WAN&lt;/strong&gt;, add a rule to allow incoming connection to the WireGuard port:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Action&lt;/th&gt;
 &lt;th&gt;Protocol&lt;/th&gt;
 &lt;th&gt;Source&lt;/th&gt;
 &lt;th&gt;Destination&lt;/th&gt;
 &lt;th&gt;Destination Port&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;UDP&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;WAN address&lt;/td&gt;
 &lt;td&gt;51820&lt;/td&gt;
 &lt;td&gt;Incoming WireGuard&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="offloading-and-hardware-tuning"&gt;Offloading and hardware tuning
&lt;/h2&gt;&lt;p&gt;When everything is working, it&amp;rsquo;s time to squeeze out the performance. OPNsense runs on FreeBSD, and it has several offloading options that can make a noticeable difference.&lt;/p&gt;
&lt;h3 id="what-offloading-is"&gt;What offloading is
&lt;/h3&gt;&lt;p&gt;Offloading means delegating certain network operations to the network card hardware instead of processing them in software on the CPU. This frees up CPU cycles for other tasks (like Suricata or CrowdSec) and reduces latency.&lt;/p&gt;
&lt;h3 id="available-options"&gt;Available options
&lt;/h3&gt;&lt;p&gt;In &lt;strong&gt;Interfaces &amp;gt; Settings&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hardware CRC (Checksum Offloading)&lt;/strong&gt;: delegates TCP/UDP/IP checksum calculation to the network card. Enable if the NIC supports it (Intel i210/i225/i226 do). Measurably reduces CPU load.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hardware TSO (TCP Segmentation Offloading)&lt;/strong&gt;: the network card handles splitting large TCP packets into smaller segments. Improves throughput in large transfers. Can cause problems with some IPS configurations, so test and verify.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hardware LRO (Large Receive Offloading)&lt;/strong&gt;: groups small incoming packets into larger blocks before passing them to the CPU. Reduces interrupts. &lt;strong&gt;Do not enable if using IPS in inline mode&lt;/strong&gt;, as it interferes with packet inspection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VLAN Hardware Filtering&lt;/strong&gt;: if VLANs are used (we&amp;rsquo;ll cover this in the second post), let the NIC filter by VLAN ID in hardware.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="additional-system-tuning"&gt;Additional system tuning
&lt;/h3&gt;&lt;p&gt;In &lt;strong&gt;System &amp;gt; Settings &amp;gt; Tunables&lt;/strong&gt;, some useful adjustments:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Increase network buffers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;net.inet.tcp.recvspace=65536
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;net.inet.tcp.sendspace=65536
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Enable RACK and BBR if hardware supports it (FreeBSD 14+)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;net.inet.tcp.functions_default=bbr
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Adjust the number of NIC queues
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hw.igb.num_queues=4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Don&amp;rsquo;t obsess over tuning. On most home connections (up to 1 Gbps symmetric), an N100 with the default settings already gives maximum performance. Tuning starts to matter when you want to squeeze 2.5 Gbps connections or more, or when Suricata consumes too much CPU.&lt;/p&gt;
&lt;h2 id="user-management-and-web-interface-security"&gt;User management and web interface security
&lt;/h2&gt;&lt;p&gt;Using &lt;code&gt;root&lt;/code&gt; for day-to-day web interface access is bad practice. If someone compromises those credentials, they have full control.&lt;/p&gt;
&lt;h3 id="create-a-new-administrator-user"&gt;Create a new administrator user
&lt;/h3&gt;&lt;p&gt;In &lt;strong&gt;System &amp;gt; Access &amp;gt; Users&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new user with a descriptive name (not &lt;code&gt;admin&lt;/code&gt;, something less predictable).&lt;/li&gt;
&lt;li&gt;Assign a strong password. Minimum 16 characters, generated with a password manager.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Effective Privileges&lt;/strong&gt;, assign the &lt;code&gt;admins&lt;/code&gt; group.&lt;/li&gt;
&lt;li&gt;Enable OTP authentication if possible. OPNsense supports native TOTP, so it can be used with any authenticator app.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="change-the-root-password"&gt;Change the root password
&lt;/h3&gt;&lt;p&gt;In &lt;strong&gt;System &amp;gt; Access &amp;gt; Users&lt;/strong&gt;, select &lt;code&gt;root&lt;/code&gt; and change the password to something long and random. Store this password in a safe place (password manager) and don&amp;rsquo;t use it for daily access.&lt;/p&gt;
&lt;p&gt;A more radical option: disable root login on the web interface. This can be done by removing web access privileges from the root user, leaving only physical console access as a last resort.&lt;/p&gt;
&lt;h3 id="restrict-web-interface-access"&gt;Restrict web interface access
&lt;/h3&gt;&lt;p&gt;By default, the web interface is accessible from the entire LAN. This can be restricted:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Change the HTTPS port&lt;/strong&gt;: in &lt;strong&gt;System &amp;gt; Settings &amp;gt; Administration&lt;/strong&gt;, change the port from &lt;code&gt;443&lt;/code&gt; to another non-standard one (for example, &lt;code&gt;8443&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restrict by source IP&lt;/strong&gt;: create an alias in &lt;strong&gt;Firewall &amp;gt; Aliases&lt;/strong&gt; with the IPs from which web interface access is allowed. Then, in the LAN firewall rules, create a rule that allows access to the WebUI port only from that alias, and a blocking rule for everything else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable HTTPS with your own certificate&lt;/strong&gt;: in &lt;strong&gt;System &amp;gt; Trust &amp;gt; Certificates&lt;/strong&gt;, generate a self-signed certificate or import one from Let&amp;rsquo;s Encrypt. This eliminates browser warnings and ensures the connection is properly encrypted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brute force protection&lt;/strong&gt;: in &lt;strong&gt;System &amp;gt; Settings &amp;gt; Administration&lt;/strong&gt;, configure the maximum number of failed attempts and the lockout time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disable HTTP&lt;/strong&gt;: make sure only HTTPS is enabled. Unencrypted HTTP access to a firewall&amp;rsquo;s admin interface makes no sense.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In the next post in the series, we&amp;rsquo;ll take security further with encrypted backups, VLANs, Zenarmor, and system hardening.&lt;/p&gt;</description></item></channel></rss>