NuajProtect · Linux

NuajProtect on Linux.

One binary under systemd that blocks malicious traffic on the server itself, with the same threat intelligence and detection as every NuajProtect edge, on x86-64 and arm64, and no proxy in the way.

At a glance

One binary. One service.
Blocks before your apps.

The NuajProtect Linux agent at a glance
What it is A host-based edge filter, backed by a global threat-intelligence feed
Form One static binary, no runtime dependencies, run by systemd
Architectures x86_64 and aarch64
Distributions Any Linux with systemd — Debian, Ubuntu, RHEL, Rocky, Alma, Fedora and derivatives
Enforcement Accelerated where supported, standard otherwise. The agent chooses at start-up; nothing to configure
Placement Sentry — protects the host it runs on. Relay — protects what is behind it, directly or over GRE, WireGuard or IPsec
Addressing IPv4 and IPv6, both enforced
Paths /opt/nuajprotect for the binary and its configuration, /var/log/nuajprotect for logs
Service nuajprotect-agent under systemd; CLI on your PATH as nuajprotect
Local interface A break-glass console and API bound to 127.0.0.1, reachable when the control plane is not
Control plane Managed SaaS over mutual TLS, or a self-hosted control plane you run yourself
Price Free through the beta

Enforcement

The fastest path
your server supports.

The agent picks its mode when it starts. You don’t need to know which one your server supports, and an older box is still fully protected.

First choice

Accelerated

Drops hostile traffic at the earliest point, before the server spends any work on it.

Where acceleration is unavailable

Standard

The same lists, matched later in the path. Still blocked before your applications, and nothing is proxied.

Older Linux versions

Compatibility

The same lists and the same policy on an older Linux version. Full protection, by design.

The mode changes the method, never the decision. The blocklist, flood thresholds learned from your own link, scanner strikes and repeat-offender escalation work the same wherever the agent runs, so a fleet with mixed Linux versions enforces one policy. The dashboard shows which mode each endpoint chose.

Placement

Protect the host.
Or what’s behind it.

Sentry

Protection runs on the machine it defends, and software on that host can hand the agent an attacker it spots. The default for a public-facing server or VM, and the fastest to try: one install, no routing changes.

Relay

A forwarding gateway cleans traffic for services that never see the raw internet — directly behind it, or at the far end of a GRE, WireGuard or IPsec tunnel, so their addresses stay hidden. One relay covers appliances, embedded systems and anything else that can’t run an agent.

Same binary, same account. Combinations that aren’t possible are shown as unavailable, never offered and then rejected at setup. To cover a whole network with nothing installed on any of it, the NuajBridge appliance is coming soon.

Install

What it puts on your server,
and nothing else.

Your account gives you the exact command for the endpoint you’re adding. The installer is a shell script served over TLS, and it needs root — so download it, read it, then run it.

# fetch, read, then run — never pipe a script you have not seen into a shell
curl -fsSL <the installer URL from your account> -o nuajprotect-install.sh
less nuajprotect-install.sh
sudo bash nuajprotect-install.sh

What it leaves behind

  • /opt/nuajprotect/bin — the agent binary, fetched over TLS and checked against the SHA-256 published beside it.
  • /opt/nuajprotect/config — the agent’s configuration and the credentials it presents to the control plane.
  • /var/log/nuajprotect — logs, alongside the journal.
  • A systemd unit, nuajprotect-agent, that starts it at boot.
  • The CLI on your PATH as nuajprotect, with shell completion.

Then it is a normal service

systemctl status nuajprotect-agent
journalctl -u nuajprotect-agent -f
nuajprotect status

Each endpoint authenticates to the control plane with mutual TLS — a certificate, not a shared secret in a config file — and is enrolled from your NuajProtect account. Run it watching before you run it blocking: monitor mode, the allowlist and the per-endpoint activity view are there because any filter can misjudge unusual but legitimate traffic, and the time to find out is before it drops any.

Application reporting

Your software sees what
a packet filter cannot.

Credential stuffing inside valid sessions, a bot filling in your contact form, an API key walked one identifier at a time: none of it looks wrong on the wire, and all of it is obvious to the application.

So the application says what failed, in its own words — a login that did not match, a form a bot filled in, a page that never existed. One call to the agent on the same server, over a local interface bound to 127.0.0.1 that nothing off the machine can reach, carrying the application’s own token from your dashboard so no other process on the box can report in its name:

# the contact form caught a bot: say what failed, nothing else
curl -H "X-NuajProtect-App-Token: $TOKEN" \
  "http://127.0.0.1:6825/event/203.0.113.45?failure=form+spam&source=website"

No log files to parse and no patterns to write. No thresholds or severity to set either: the agent decides how many failures add up to an attacker and how long a block lasts, from what it sees on this server and what your other endpoints report. Report a success too, and it cancels the failures that were building against that address.

A new application starts out learning. Its reports are scored and shown in your dashboard, and on their own they block only addresses your other endpoints have reported too. Once its reports prove accurate, it blocks on its own word — and if operators keep overturning its blocks, it goes back to learning by itself.

The same local interface is the break-glass path. If the control plane is unreachable, the agent keeps enforcing what it already knows, and you can still see and change what it is doing from the console on the loopback address.

Behind a CDN

Behind Cloudflare or any CDN.
Blocks the attacker, not the CDN.

Behind a CDN, every visitor reaches your server from the CDN’s addresses. A firewall on the server cannot tell them apart: blocking one takes a share of your visitors down with it, and the attacker behind it is never touched.

The NuajProtect gate fixes that for sites served by nginx. Your CDN proves itself with one header carrying a secret from your dashboard, and nginx asks the agent about every request before serving it:

  • The CDN’s addresses are never blocked: every address that proves itself is learned as the CDN’s.
  • Attackers are blocked by their real address, against your threat feeds, banlist and blocked countries.
  • Requests that go around the CDN, straight to your server, are refused. Your own network always gets in.
  • Nothing can be faked: without the secret, a request is just another visitor.

It works with any CDN or proxy that can add a request header — Cloudflare, Fastly, Amazon CloudFront, Akamai, Azure Front Door, Google Cloud, Bunny, or your own nginx, HAProxy or Caddy. If the agent is stopped, nginx keeps serving: the gate never takes a site down.

Upgrades

Signed builds only.
Verified before install.

The agent upgrades itself when the control plane offers a newer build, and every release is signed. The signature is verified before anything is replaced; if it does not check out, the upgrade is refused and the running build stays.

Upgrades also wait while a configuration change is settling, so no box restarts into a new build and a new policy at the same moment — and when something changes, you know which one did it.

Questions

Before you install it.

Which Linux distributions does NuajProtect support?
Any distribution with systemd. The agent is a single static binary with no runtime dependencies; Debian, Ubuntu, RHEL, Rocky, Alma, Fedora and their derivatives are the ones we install on daily, on x86-64 and arm64. Distributions differ only in which enforcement path the agent finds, and it detects that at start-up.
Does NuajProtect need a recent Linux version?
No. On Linux 5.8 or later it uses accelerated filtering; on older versions and some container hosts it switches automatically and keeps full protection.
How much CPU does the NuajProtect Linux agent use?
The agent is not in the data path: accepted traffic passes straight through, with no proxy reassembling it. The agent’s own work — syncing the blocklist, evaluating detections, reporting what it blocked — is periodic, not per-packet. It is a background service, and its cost depends on your traffic and hardware, so measure it on yours.
What does the installer put on the server?
One directory, /opt/nuajprotect, holding the binary and its configuration; a log directory at /var/log/nuajprotect; a systemd unit named nuajprotect-agent that starts it at boot; and the CLI on your PATH as nuajprotect. Nothing is written outside those paths.
Does NuajProtect work behind Cloudflare or another CDN?
Yes, for sites served by nginx. The CDN proves itself with a secret header you add once; the agent then never blocks the CDN’s addresses, blocks attackers by their real address, and refuses requests that go around the CDN. Any CDN or proxy that can add a request header works, and if the agent is stopped, nginx keeps serving.
Can an application on the server report an attacker to NuajProtect?
Yes, in one call, and it is a reason to run the agent on the host. Your own software sees abuse a packet filter cannot — credential stuffing, a bot filling in a contact form, an API key being walked. It tells the local agent what failed, in its own words; the agent decides when that adds up to an attacker, blocks it, and shares it with your account’s other protected edges. A new application starts out learning, and blocks on its own word once its reports prove accurate.
How does the agent upgrade itself?
Only when the control plane offers a new build. It verifies the release signature before anything is replaced and refuses the upgrade if the signature does not check out. Upgrades also wait while a configuration change is settling, so a box never restarts into a new build and a new policy at the same moment.
Is NuajProtect an alternative to Fail2ban?
It covers what Fail2ban is used for — blocking sources that keep trying to break in — and goes further: known-hostile sources from live threat feeds are blocked before they connect, floods and port scans are detected on the server, your own applications can report what failed with no log patterns to write, and every block is shared with your other servers and routers through one dashboard.

MikroTik routers join the same account — see NuajProtect on RouterOS. Every deployment, agent, router or appliance, is a sensor as much as an enforcement point.

Get started

Protect a server
in minutes.

Free during the beta. Start with one exposed server; everything you protect lives in one account.