InfraNestInfraNest

Servers & Cloud

Know what every firewall allows — and never lock yourself out.

Every cloud firewall in one editor — Hetzner, DigitalOcean and TransIP, one rule shape, one set of checks. Each one summarised in a sentence you can actually check, a standing watch on anything open to the whole internet, a rule that can follow your home connection so SSH never has to be open to everyone, and a save that works out whether you still have a way back in before it pushes.

Free plan · No credit card · Connect a provider in 2 minutes

  • Every cloud firewall in one editor
  • What each one allows, in a sentence
  • Flags SSH, RDP and database ports open to the world
  • A rule that follows your home connection
  • Checks you keep a way in before it saves
Firewalls

Rule-based firewalls controlling inbound and outbound traffic to your servers.

+ New firewall
FirewallsTemplates

1 firewall needs attention

Review

legacy-vpn — Applies to no server

Name
DigitalOcean — Staging3
legacy-vpnProtecting nothing1194 · from anywhere — public web
stagingApplied to 2 servers22, 443 · from anywhere — public web
workersApplied to 3 servers22, 6379 · from 10.110.0.0/20
Hetzner — Production3
db-tierApplied to 1 server5432 · from 10.0.0.0/16
internal-onlyApplied to 2 serversall ports · from 10.0.0.0/8
web-tierApplied to 4 servers22, 80, 443 · from anywhere — public web

6 firewalls across 2 accounts

Works with your clouds

HetznerDigitalOceanTransIP

See all 30 integrations →

It will not let you lock yourself out

The expensive firewall mistake is not leaving a port open. It is closing the one you were using. You tighten SSH to the office range, press save, and discover from home that you no longer have a way in — on a machine whose recovery console you have never used. So before a change is pushed, InfraNest matches your own address against the rules you are about to apply: per address family, across port ranges as well as exact ports, on both of the ports that are a way back in. If the change takes your access away it says so, names the address it checked, and will not let Confirm through until you have said you understand. Every save also shows a diff of exactly what changed, pairing rules up properly so two rules that differ only by source do not collapse into one line.

  • Your session address is matched against the rules as they will be, not as they are
  • An IPv4 0.0.0.0/0 rule is not counted as access for someone connected over IPv6 — the two families are checked separately
  • A rule opening 20-30 is recognised as covering SSH, because ranges are matched and not just exact ports
  • While the guard is still working out where you are, Confirm stays dead and says why
  • A diff of every added, changed and removed rule before anything reaches the provider
Apply changes to 2 servers?

These take effect immediately on staging. Review before pushing.

ChangedSSH from the office · TCP 22 · source 203.0.113.0/24198.51.100.24/32

The same save, pressed from
Your session comes from 198.51.100.24 — still allowed after this change. You won't be locked out.
CancelApply to 2 servers

This removes management access (SSH/RDP) from your current IP 203.0.113.19. You may lock yourself out.

I understand this may lock me out — apply anyway.
CancelApply to 2 servers
Checking whether you keep access from your current IP…
CancelApply to 2 servers

InfraNest reads the address of the session you are signed in from — there is nothing to pick. It checks SSH (22) and RDP (3389), per address family, ranges included.

What the firewall actually does, in one sentence

A rule table tells you what the rules are. It does not tell you what they mean, and “who can SSH into this box?” is the only question most people open a firewall to answer. So every firewall carries a plain-English summary in the same order as the rules under it — and it groups ports by the source they are open to. That grouping is the whole feature. Flatten the sources instead, and a firewall allowing SSH from one address and HTTP from the world reads as allowing all three from anywhere: a sentence that is worse than no sentence, because it is confidently wrong about the thing you came to check. It is one shared implementation rather than per-screen copy, for exactly that reason.

  • Ports grouped by the source they are open to, so a restricted port is never folded into an open one
  • “Open to the whole internet” is coloured as a risk, not in the same green as a good outcome
  • Rules the provider manages itself, in tags or load balancers rather than addresses, are counted and declared — never quietly left out
  • The same sentence on the firewall list, in the editor and on the server that the firewall protects
  • Outbound is stated too: restricted, or permitted in full

Firewall

In plain English

Allows inbound HTTPS (443) and HTTP (80) from anywhere (0.0.0.0/0), and SSH from the private network (22) from 10.0.0.0/8. All outbound traffic is permitted.

Inbound ← (3)

  • HTTPSTCP 4430.0.0.0/0, ::/0
  • HTTPTCP 800.0.0.0/0, ::/0
  • SSH from the private networkTCP 2210.0.0.0/8
In plain English

Allows inbound SSH from the private network (22) and Ping from 10.0.0.0/8. All outbound traffic is permitted.

Inbound ← (2)

  • SSH from the private networkTCP 2210.0.0.0/8
  • PingICMP10.0.0.0/8
In plain English

Allows inbound HTTPS (443) from anywhere (0.0.0.0/0), and SSH from the office (22) from 203.0.113.0/24. All outbound traffic is permitted.

Inbound ← (2)

  • HTTPSTCP 4430.0.0.0/0
  • SSH from the officeTCP 22203.0.113.0/24
In plain English

Allows inbound SSH from the VPC (22) and Redis (6379) from 10.110.0.0/20. All outbound traffic is permitted.

Inbound ← (2)

  • SSH from the VPCTCP 2210.110.0.0/20
  • RedisTCP 637910.110.0.0/20
In plain English

Allows inbound PostgreSQL (5432) from 10.0.0.0/16. All outbound traffic is permitted.

Inbound ← (1)

  • PostgreSQLTCP 543210.0.0.0/16
In plain English

Allows inbound OpenVPN (1194) from anywhere (0.0.0.0/0). All outbound traffic is permitted.

Inbound ← (1)

  • OpenVPNUDP 11940.0.0.0/0

A standing check on what your firewalls leave open

Alongside the editor sits an advisor that stays quiet while the rules are fine and gets loud when they are not: SSH open to the world, remote desktop open to the world, a database port publicly reachable, a rule that opens every port. Each finding explains itself and points at the rule that caused it. It reads port ranges rather than exact matches, which is how a rule that never mentions port 22 still gets flagged for SSH. And the same four findings appear on the server itself, in a wider posture check next to backups, delete protection, monitoring and IPv6 — because “this box has a database open to the internet” is something you should meet while looking at the box, not only while looking at firewalls.

  • SSH, RDP, nine database and cache services, and any rule that opens every port — each a critical finding
  • FTP and Telnet flagged as warnings: unencrypted, even when they are not a database
  • Port ranges and comma lists are matched, so 20-30 is read as SSH, FTP and Telnet at once
  • The firewall findings appear in the server’s own posture check, in context with the rest of its state
  • Dismissible per check, so a deliberate exposure stops nagging without switching the whole advisor off

A firewall in the account, as it stands today.

  • HTTPSTCP 4430.0.0.0/0, ::/0
  • HTTPTCP 800.0.0.0/0, ::/0
  • SSH from the private networkTCP 2210.0.0.0/8
No risky rules foundNo inbound rules expose sensitive ports to the public internet.

A rule set pasted in from an older server, before it is saved.

  • Legacy transferTCP 20-300.0.0.0/0
  • App databaseTCP 54320.0.0.0/0
  • HTTPSTCP 4430.0.0.0/0, ::/0

4 issues

SSH open to the internet

Port 22 is reachable from any address (0.0.0.0/0). Restrict it to your office or VPN IPs.

Jump to rule

FTP exposed to the internet

FTP (port 21) sends data unencrypted and is open to any address. Restrict the source or use an encrypted alternative.

Jump to rule

Telnet exposed to the internet

Telnet (port 23) sends data unencrypted and is open to any address. Restrict the source or use an encrypted alternative.

Jump to rule

PostgreSQL exposed to the internet

Port 5432 (PostgreSQL) is reachable from any address. Databases should only be reachable from private or known IPs.

Jump to rule

Nothing here names port 22. The 20-30 rule is read as SSH, FTP and Telnet because ranges are matched, not just exact ports.

A firewall rule that follows your home connection

SSH is rarely left open to the world out of laziness. It is left open because the alternative wears people down. You lock it to your own address, your ISP moves you overnight, and by morning you are locked out of your own bastion — so the next person puts 0.0.0.0/0 back and nobody takes it out again. Bind the rule to a Dynamic IP instead and the allow-entry follows you: a router, or a one-line curl on a laptop, checks in from wherever you are, and the entry we wrote is rewritten to that address. Only that entry. Every other address in the rule is left exactly as it was, because a feature that rewrote your allowlist while you were not looking would be a security incident rather than a convenience.

  • Only the entry we wrote is ever touched — every other address in that rule is left alone
  • Always a single host route, never a range, and always the address you genuinely connected from rather than one you asked for
  • The live rules are re-read from your provider before every write, so a rule someone edited in the cloud console is not silently reverted
  • Lose the rule we were following and you get a critical alert — the entry we last wrote is still there, pointing at an address your ISP may have reassigned
  • A badge on the rule itself, so it is visible while you edit which entries are following an address

northwind-bastionInbound ←

SSH from the office

Source IPs

Any IPv4Any IPv6My IPHome office — Utrecht · IPv4Dynamic IP
84.24.117.62/32

Protocol

TCP

Port

22

Track with a Dynamic IP

Link this rule to a Dynamic IP so its allowed address updates automatically when your IP changes.

Home office — UtrechtIPv4

Starts from your current IP (84.24.117.62), then follows the Dynamic IP as it changes.

in|tcp|2284.24.117.62/321m

One firewall editor, whichever cloud the server runs on

Three consoles, three rule builders, three ideas of what a firewall even is — and the one you touch least is the one you get wrong. Here it is one editor and one mental model for all of them: the same rule shape, the same plain-English summary, the same exposure check, and a rename that reaches the provider so the name is the same everywhere. Underneath, the clouds really are different, and pretending otherwise is how a screen ends up offering a button that cannot work. So what each one can do is declared per provider and shown to you: Hetzner and DigitalOcean let you create a firewall and attach it to several servers, TransIP gives each VPS one of its own that cannot be renamed or moved, and OVHcloud has no firewall API at all. What your cloud cannot back is greyed out with the reason — and what it has never declared is left alone rather than reported as “off”.

  • One rule shape, one summary and one exposure check, whichever cloud the server is on
  • Rename once and it renames at the provider too — the provider stays the source of truth, not a local nickname
  • A control your cloud cannot back is greyed out with the reason, never offered and then failed
  • Exactly which protocols each one accepts: Hetzner adds ESP and GRE, DigitalOcean does not, TransIP has a combined TCP/UDP of its own
  • A firewall chosen on the create form is attached in the create call, so a new server is never briefly naked on the internet
What each cloud can do
CloudHetznerTransIPOVHcloudDigitalOcean
Create a firewall of its ownYesNoNoYes
Attach one firewall to many serversYesNoNoYes
Rename itYesNoNoYes
Outbound rulesYesNoNoYes
IPv6 sourcesYesYesNoYes
A rule can follow a Dynamic IPYesNoNoYes
The firewall belongs to one serverNoYesNoNo
Protocols it acceptsTCPUDPICMPESPGRETCPUDPTCP/UDPTCPUDPICMP

Resolved per connected account, not assumed. A control the provider cannot back is greyed out with the reason, never offered and then failed.

Start from a rule set that already works

Most firewalls are one of about ten shapes, and typing the tenth one out again is where mistakes come from. Ten built-in templates cover the common ones — a public web server with HTTP, HTTPS and HTTP/3 over QUIC; a mail server with all seven ports; DNS over both UDP and TCP; a database kept off the public internet entirely. The descriptions do the teaching the rules cannot: the database template spells out that its default 10.0.0.0/8 is your servers’ private network and not your personal address, and that an admin should tunnel over SSH rather than open the port. You can capture a template from a firewall you already trust, which is the fastest way to standardise something you know works.

  • Ten built-in rule sets for the ordinary shapes, read-only, and applied as a replace or an append
  • Capture a template from a firewall or a server you already trust
  • Create, edit and delete your own; a deleted one is restorable for fourteen days
  • Apply a template from an automation, so a newly created server gets the right baseline without anyone remembering
  • Admin access is deliberately left out of the public templates — you add SSH restricted to your own address, and the advisor flags it if you do not

Reusable rule sets — apply a starting point to a firewall.

Built-in templates

Web Server

Built-in

For a public website or app. Opens HTTP (80), HTTPS (443) and HTTP/3 over QUIC (UDP 443) to everyone. Add SSH restricted to your own IP separately for management.

3 rules
Inboundtcp80Any
Inboundtcp443Any
Inboundudp443Any
Apply

Mail Server

Built-in

For a self-hosted mail server. Opens SMTP (25), submission (587), SMTPS (465) for delivery and sending, plus IMAP/IMAPS (143/993) and POP3/POP3S (110/995) for clients. Open to everyone.

7 rules
Inboundtcp25Any
Inboundtcp587Any
Inboundtcp465Any
Inboundtcp143Any
Inboundtcp993Any
Inboundtcp110Any
Inboundtcp995Any
Apply

DNS Server

Built-in

For a public, authoritative or recursive DNS server. Opens port 53 over both UDP (normal queries) and TCP (large responses and zone transfers) to everyone.

2 rules
Inboundudp53Any
Inboundtcp53Any
Apply

Database Server

Built-in

Keeps the database off the public internet — PostgreSQL (5432) and MySQL (3306) are reachable only from your private network, so your app servers can connect but the outside world cannot. The default 10.0.0.0/8 is your servers' private network, NOT your personal IP — change it to your actual private subnet (e.g. 10.0.0.0/16). To connect as an admin, tunnel over SSH rather than opening these ports to your own IP.

2 rules
Inboundtcp543210.0.0.0/8
Inboundtcp330610.0.0.0/8
Apply

Game Server

Built-in

A starting point for a game server — opens the common Steam/Source ports (27015 UDP + TCP) and a generic UDP game port (7777) to everyone. Replace these with the ports your specific game uses.

3 rules
Inboundudp27015Any
Inboundtcp27015Any
Inboundudp7777Any
Apply

Minecraft

Built-in

A Minecraft server — Java Edition on TCP 25565 and Bedrock on UDP 19132, open to everyone. Drop whichever edition you do not run.

2 rules
Inboundtcp25565Any
Inboundudp19132Any
Apply

WireGuard VPN

Built-in

A WireGuard VPN endpoint — opens the default UDP port 51820 to everyone (handshakes are cryptographically authenticated, so this is safe to expose). Change the port if you customised it.

1 rule
Inboundudp51820Any
Apply

OpenVPN

Built-in

An OpenVPN server — opens the default UDP port 1194 to everyone. Adjust the protocol/port if you run OpenVPN over TCP or a non-standard port.

1 rule
Inboundudp1194Any
Apply

Remote Desktop (RDP)

Built-in

Windows Remote Desktop, restricted to a private network — NEVER expose RDP to the internet (it is a top attack target). The default 10.0.0.0/8 is your private network; change it to your VPN or admin range. For ad-hoc access, connect over a VPN rather than opening this to your own public IP.

1 rule
Inboundtcp338910.0.0.0/8
Apply

Blank Strict

Built-in

The safest starting point: blocks all inbound traffic. Nothing can reach the server until you add explicit allow rules for exactly the ports and sources you need.

0 rules

Deny all inbound

Apply
Your templates

Web server (80/443)

Allow HTTP and HTTPS from anywhere, plus SSH from the office network.

3 rules
Inboundtcp80Any
Inboundtcp443Any
Inboundtcp22203.0.113.0/24
Apply

Everything else it handles

The parts that are only interesting when you need them.

Name a rule and it fills itself in

Type “HTTPS” into a rule and the editor offers the service, then sets the protocol and the port for you. It is why a real firewall reads “HTTPS (443)” rather than “TCP 443” — and why the summary and the exposure findings have something to call each rule by.

Search what a firewall allows, not just its name

The list searches the name, its tags and the allows summary, so “5432” or “anywhere” finds the rows you meant. Narrow to just the ones needing attention, save the view, and choose which columns you keep.

Never a dead-end button

“New firewall” only appears when one of your connected accounts can actually create one. Where a firewall belongs to a single server instead, the page says so and sends you to that server rather than to a form that would fail.

Reach it from either side

From the Firewalls list, or from a server’s own Firewall tab. Attach one firewall to several servers, detach in a click, and see at a glance how many servers each one protects — and which protect none.

Someone else changed it while you were editing

Saving pushes the whole rule set, so a change made in the provider console between your page loading and your pressing save would be silently overwritten. It is caught instead, shown as a diff, and you choose: keep yours, or reload theirs.

Out of sync with the provider

The stored rules are compared with the provider’s live ones, and a difference is offered as a review rather than resolved behind your back — pull theirs, or re-apply yours.

Automatable

Two automation actions: apply a firewall template, and close a Dynamic IP’s firewall access — which pairs with the condition that fires when a source moves onto a VPN network.

Audited, and hard to delete by accident

Every firewall change is written to the audit log. Delete protection is a switch on the firewall itself, and a deleted template comes back from the recycle bin for fourteen days.

See your own firewalls in about two minutes

Connect one provider with a read-only token. Nothing is written until you say so.

Provider consoles vs InfraNest

The difference between hoping nothing is exposed and knowing it isn’t.

Provider consoles

  • A different rule builder, and a different mental model, in every console
  • A table of ports and CIDRs, and no answer to “so who can SSH into this?”
  • No warning when SSH, RDP or a database is open to the whole internet
  • You find out you closed your own way in from the wrong side of the door
  • Your office IP pasted into an allowlist by hand, again, when it changes

With InfraNest

  • One editor, honest about what each cloud can and cannot do
  • A plain-English summary that groups ports by the source they are open to
  • A standing check that names the exposure and points at the rule
  • A save that checks you still have a way in, and a diff of what changed
  • A rule that follows a Dynamic IP, touching only the entry it wrote

One login, ten modules

Every module is in every plan, Free included — what changes is how much of each you get.

The cost of doing it separately

Buy each piece from a different tool and it adds up fast:

Domain & DNS
~€30
Uptime monitoring
~€29
SSL tracking
~€15
Status page
~€29
Server panel
~€15
Across 4–5 separate tools
€100–150/mo
InfraNest Business — all of it, one login€49/mo

Compare all features →

Frequently asked

Which clouds are supported?

Hetzner, DigitalOcean and TransIP today. What you can do differs by provider and is declared rather than assumed: Hetzner and DigitalOcean let you create a firewall and attach it to several servers, TransIP gives each VPS a firewall of its own that cannot be renamed or detached, and OVHcloud has no firewall API at all — its filtering belongs to the IP address rather than the machine, so we leave the subject alone rather than reporting it as off. The integrations page lists what works where.

Does InfraNest replace my cloud firewall?

No. It manages the native firewall your provider already gives you. Rules are written back to the cloud, so what actually runs is the provider’s own firewall — just edited from one place, summarised in a sentence, and checked before it saves. Renaming a firewall renames it at the provider too, so the name is the same everywhere rather than a local nickname.

What happens to the rules I already have?

They are imported as they are when you connect a provider — nothing is dropped or rewritten. Rules the provider manages itself, written in terms of tags, servers, load balancers or Kubernetes clusters rather than addresses, cannot be edited here because our rule shape holds addresses. They are shown, counted and carried through a save untouched, rather than hidden or silently deleted.

How does it know I will not be locked out?

It matches the address your session is coming from against the rules you are about to apply, looking only at the ports that are a way back in — SSH and RDP — and checking each address family separately, so an IPv4 0.0.0.0/0 rule is not treated as access for someone connected over IPv6. Port ranges count, so a rule opening 20-30 is recognised as covering SSH. If the change takes your access away, Confirm is blocked until you acknowledge it. While the check is still running, Confirm is dead and says so.

Will a template overwrite the rules on a firewall?

Only if you choose Replace, and you see the resulting rule set before you confirm — the alternative is Append, which adds the template’s rules to what is already there. Built-in templates are read-only; your own can be edited and deleted, and a deleted one is restorable from the recycle bin for fourteen days.

How does the exposure check decide what is risky?

Only inbound rules that are open to any address are considered at all. A rule that opens every port is critical on its own; otherwise it looks for SSH (22), remote desktop (3389) and nine database and cache services — MySQL, PostgreSQL, SQL Server, MongoDB, Redis, Elasticsearch, Memcached, Docker and Kubernetes — each of which is a critical finding. FTP and Telnet are warnings rather than errors: unencrypted, but not a database. Port ranges and comma-separated lists are matched, not just exact ports. Each finding can be dismissed for that check alone.

Can an allow-rule follow my home IP?

Yes — bind the rule to a Dynamic IP source and the entry follows your address. Only the entry we wrote is ever changed; every other address in that rule is left alone. It is always a single host route, never a range, and always the address you genuinely connected from rather than one you asked for. The live rules are re-read from the provider before each write, and if the rule we were following has disappeared, the target is flagged and alerted rather than left quietly pointing at a stale address.

Know exactly what is open — and that you can still get in

Connect a provider and see every firewall rule you already run.

Free plan · No credit card required · Set up in minutes