Firewall, reverse proxy and remote access

korridor — Secure your access without a third-party service

Publish your applications and open remote access without routing your traffic through a third-party service. What protects your sites fits in a file you can read. korridor brings firewall, multi-WAN, high availability, reverse proxy, WAF, per-user access control and remote access together in a single product. No database, no third-party service to operate — the firewall relies only on nftables, which Linux provides. To reach an internal site, a second korridor is installed at the other end. And no configuration is applied until its signature has been verified.

One binary, no databaseed25519-signed configurationPrivilege separationOn your own machines

The problem

Six products that do not communicate with each other, and no reliable view of what is actually in service.

The firewall knows nothing about your users

It opens ports to IP addresses. When someone leaves the organisation, their access has to be removed by hand — and it rarely is.

SaaS knows everything — but at a third party

The value is real. So are the opacity of a service you cannot audit and traffic that transits through a third party. And it stops at the network: not your firewall, not your links.

In between, no trace at all

Who changed what, when, and is that really what is running? A per-site admin interface answers none of those three questions.

How it works

An artefact signed in a safe zone, applied at the edge by a process that is not root. The chain is short and every link can be checked.

01 — Write

The bundle is YAML, reviewed like code and versioned in git — or composed in the control plane. To the edge it is the same thing: a file.

02 — Sign

A detached signature, with the private key kept off the host. No configuration- or binary-signing key sits at the edge: the host only holds the public keys that verify them.

03 — Ship

The binary is signed too. The switchover is blue-green under a watchdog: if the new generation does not become ready, the old one automatically takes over again.

04 — Verify, then apply

Invalid signature, version going backwards, unknown field: rejected, and the last valid configuration stays in force. From the firewall up to L7.

What korridor replaces

A stack of tools to operate and version, replaced by a single configuration. The left-hand column is what you already maintain.

What you operate todayIn korridor
A firewall appliance and its pluginsAn nftables firewall generated from the bundle, applied before routing comes up
Routing scripts, or a multi-WAN routerUplinks probed through their own link, with automatic failover and failback
A failover daemon, a load balancer and a session storeTwo machines are enough: virtual address, replicated state, upgrades without downtime
A reverse proxy and its application firewallHTTP/1.1, HTTP/2 and HTTP/3 reverse proxy + Coraza WAF and OWASP CRS
An authentication proxy, or a home-grown forward-authAn access policy evaluated on every request, and an OIDC portal that works with your identity provider
A full identity provider to hostA standalone enrolment portal: email code, authenticator app, passkeys — with no identity provider at all
An inbound tunnelling serviceInbound tunnel: two korridor instances chain together, the remote site dials the edge and opens no port
A VPN and its scripts, or a mesh network subscriptionSplit-tunnel roaming client, on Linux: the internal network goes through the edge, the internet stays direct
An ACME client and its scheduled jobsAutomatic ACME per host, without ever opening port 80
A deployment tool, and a maintenance windowA signed upgrade, watchdog-gated, without downtime

What korridor does

This is the only interface korridor serves itself, and it needs nothing installed: no identity provider to host, no agent on the machine. A visitor proves they control an authorised mailbox, picks a second factor, and their source address is approved for as long as you decided. The screenshots come from a demonstration instance: the account, the gateway and the services shown are fictional.

An email address, and nothing else to remember

No password to create, so no password to steal or reset. The portal caps sends per source, and the browser solves a proof of work before a single message leaves: rotating IP addresses is not enough to flood your mailboxes. The authorised-access warning is served by the portal; it is not something you configure.

The portal sign-in
The one-time code

The second factor is a choice, not a constraint

Authenticator app or passkey: the user picks at enrolment, and a user enrolled on several methods picks at sign-in. A passkey is phishing-resistant and device-bound; an authenticator app needs no hardware. The strength required is set per resource — a monotone ladder, from a plain email code to a mandatory hardware factor.

Choosing the second factor
Enrolling an authenticator

Losing a phone does not take the site down

Backup codes are issued once, at enrolment, and never shown again. They are the only way out that needs nobody else — everything else goes through a reset from the host, which is traced.

The backup codes

Identity drives the network, not just the web

Once the proof is made, the source address is approved and the firewall rule follows within milliseconds — then disappears on its own when it expires. That is what opens SSH, RDP or a database to the person who has just authenticated, with no integration to write between firewall and directory, and without leaving a port open to the whole internet the rest of the time.

Access is granted
Non-HTTP services reopened

Everyone manages their own authenticators

Adding a passkey, removing one, switching device, regenerating backup codes: users do it themselves, and every change demands a fresh proof on the spot. One less queue for administrators.

Managing authenticators

The same portal on a phone

The layout recomposes on a narrow screen: the form takes the full width, choices stack, nothing is hidden behind a menu. Nothing to install either, no app to publish in a store — it is a web page, and that is what makes it available on a borrowed machine as well as on a phone.

Signing in on mobile
Choosing the factor on mobile

What korridor covers

Six domains an access infrastructure needs, held by a single binary and a single configuration.

Web publishing

Serving your applications and sites, under TLS, with no stack to assemble.

  • HTTP/1.1, HTTP/2 and HTTP/3 reverse proxy
  • TLS certificates issued and renewed automatically, without opening port 80
  • Load balancing across several servers, with a circuit breaker for servers that fail
  • WebSocket, event streams and streaming, with no per-route configuration
  • Static site hosting with in-memory cache and compression
  • Waiting room: an admission queue that triggers automatically on a traffic spike or an incident

Application security

Filtering before the request ever reaches your application.

  • Coraza WAF and OWASP rules, switchable on and off route by route
  • Rate limiting, globally or per source
  • Country and reputation-list filtering, applied before authentication
  • Behavioural abuse detection: error bursts, scanning, object ID enumeration
  • Security headers, CORS and blocking of sensitive paths
  • Content-security-policy violation collection

Identity and access control

Who reaches what, re-evaluated on every request — Zero Trust taken literally, with no trust granted to the originating network.

  • Policy re-evaluated on every request, never only at sign-in
  • A sign-in portal that works with your identity provider
  • A standalone enrolment portal: email code, authenticator app, passkeys
  • Different proof levels depending on the resource requested
  • Service tokens for machine-to-machine exchanges
  • Client certificate, time windows, address ranges, groups and domains

Site network

The entry point also handles L3 and L4 on the machine.

  • An nftables firewall described entirely in the configuration
  • Multi-WAN: every link tested through itself, with automatic failover and failback
  • Two-machine high availability, virtual address taken over in 0.45 seconds
  • TCP and UDP proxying for SSH, RDP and databases
  • Approvals and enrolments replicated between machines, with no database
  • Upgrading one machine by draining it, without a service interruption

Remote access

Reaching a site or an internal network without opening an inbound port.

  • A remote site publishes itself by connecting out to the edge, opening no port at all — and it is the same korridor at the other end, not a separate agent
  • Roaming machines on Linux: the internal network goes through the edge, the internet stays direct — TCP, UDP and ping
  • Per-device rules: named services, networks and ports, and where needed an identity proven at the portal
  • Device enrolment with explicit approval; removing a device from the configuration also cuts its live tunnel
  • If a point of presence does not answer, the device connects to the next one on its list
  • An audit line when each device flow opens and when it closes
  • Pass-through without decryption for services that handle their own TLS
  • The visitor's real address preserved end to end

Operations

What it takes to run the machine over time.

  • Signed configuration, hot-reloaded; an invalid version is never applied
  • Signed upgrade, without downtime, with automatic rollback
  • Prometheus metrics and JSON logs your SIEM can use
  • A local diagnostic console: traffic, tunnels, cluster, links, system
  • Secrets encrypted at rest; a stolen file on its own does not decrypt
  • No database; beyond the system's own nftables, no third-party software required

All of these capabilities are shipped, with one reservation: the roaming-machine client is proven on Linux only — its macOS and Windows versions are written but have not yet run on any machine. korridor protects the entry point of the Koraisoft infrastructure itself — it runs there continuously.

What korridor changes

The threat model is the argument, not the datasheet. "Zero Trust" means nothing on its own: here it comes down to four properties, and each one is readable in the configuration rather than in a brochure.

Privilege separation

The process that faces the internet does not run as root by default: it sheds every privilege except binding port 443, and forcing it to root triggers a warning at start-up. What touches the kernel — firewall, virtual address, routing — lives in a supervisor with no public network surface. A compromised web component has no right to reconfigure the network.

No configuration key at the edge

The exposed machine holds no configuration- or binary-signing key, only the public keys that verify them: it can neither forge a configuration, nor manufacture an upgrade, nor issue a federated identity. The one private key it keeps is the one that signs roaming-device certificates, encrypted at rest, and a device is enrolled only after explicit approval.

Deny by default

The safe posture is the absence of configuration. A route without a policy is not published. An unknown tunnel is refused. A machine with no declared network reaches nothing. A forgotten access stays closed.

Identity drives the network

An enrolment opens a port, its expiry closes it again. When someone proves their identity at the portal, the firewall rule follows within milliseconds — with no integration to write between two products.

Who it is for

Four situations where the current stack costs more than it protects.

You are leaving SaaS, or you can no longer enter it

NIS2, DORA, HDS regulation; traffic and logs leaving your premises; a service that cannot be audited. korridor delivers the same application-level value on your machines, with a configuration your auditor can read line by line.

You have sites, not a network team

Branches, workshops, laboratories. One appliance per site: firewall, two internet links, VPN, application publishing, identity portal — configured by a signed file pushed remotely, rather than through a web interface, site by site.

You expose your customers' applications

Hosting and managed-service providers: every customer connects out to your points of presence without opening a single inbound port. Routes and policies are per customer, in a versioned artefact. A point of presence can be replaced without anyone reconnecting.

You maintain a hand-assembled stack

A reverse proxy, an application firewall, an authentication proxy, a tunnelling service, an ACME client, a failover daemon: six lifecycles, six configurations, none of them signed. korridor consolidates the lot behind a single artefact, with no database and no third-party component to operate — the firewall relies on nftables, which the system provides.

Use cases

Publishing applications with a self-hosted reverse proxy

A reverse proxy, a web application firewall, an authentication proxy and an ACME client: four tools to configure, update and monitor separately.

Read the page

Remote access without a third-party service

A hosted access service is easy to set up, but your traffic and identities pass through a third party, and its configuration escapes your reviews.

Read the page

Securing several sites without a network team

Branches, workshops, laboratories: each site has its own firewall, Internet link and admin interface, to be handled one by one.

Read the page

Frequently asked questions

What is korridor and who is it for?

korridor is Koraisoft's self-hosted Zero Trust edge appliance: nftables firewall, multi-WAN, high availability, reverse proxy, WAF, per-user access control and remote access in a single binary, driven by a signed configuration. It is for organisations that want to control their entry point on their own machines: multi-site SMEs without a network team, hosting and managed-service providers exposing their customers' applications, teams maintaining a hand-assembled reverse proxy, application firewall, authentication proxy and failover daemon, or organisations that cannot route their traffic through a SaaS.

Does korridor go through a third-party cloud? Where does the traffic flow?

No. korridor is installed on your machines, physical or virtual, and your visitors' traffic arrives directly at your premises: it passes through no service operated by Koraisoft or any other third party. To publish a remote site, that site connects to your own korridor edge, without opening an inbound port. The only outbound exchanges are the ones you configure, such as ACME certificate issuance or downloading a reputation list.

What are the prerequisites to install korridor?

A Linux machine or VM, amd64 or arm64, started by systemd or OpenRC. The firewall relies on nftables, which the system provides; korridor needs no database. An identity provider is not required: the standalone enrolment portal is enough, or korridor connects to yours over OIDC. High availability takes two machines.

How much does korridor cost?

korridor pricing is under review: contact Koraisoft to discuss it.

What does korridor replace in an existing access stack?

A single signed configuration takes the place of the components usually assembled: access control is evaluated on every request, authenticating at the portal opens and closes the firewall rules by itself, and WAF, inbound tunnels and high availability with replicated state are built in. A small surface, and a configuration that can be read.

Do you need a hosted access service to publish your applications?

korridor is self-hosted: traffic and logs stay with you, and the same machine holds the site firewall and the internet links. Web access goes through the portal with no agent to install; network access from a roaming machine goes through the korridor client, with per-device rules.

Talk about your access and your edge

Want to publish applications and open remote access without depending on a third-party service? Write to us and we will look together at whether korridor can fit.

Contact us

Our products evolve continuously. The features, screens and characteristics shown on this page describe their state at the time of publication: they may change, be modified or be withdrawn without notice, and do not constitute a contractual commitment.