Skip to main contentSkip to footer
Linux Server Agent · for hosters and data centres

ReportedIP Agent: Linux server security for hosters and data centres

Thousands of addresses that attacked other servers this morning, dropped in ipset or nftables before their first attempt reaches you, and every attack in your own logs detected and reported. One static binary for hosters and admins running web, mail, FTP and DNS on the same machines. One server is included from Pro.

One server included from Pro, three with Business. Further servers from 4.90 € a month, incl. VAT. Version 0.3.54

14

log source types the installer recognises by itself: SSH, web, mail, FTP, DNS, the control panel and the kernel, each with its own threshold.

15 min

between two refreshes of the community list on a licensed server. A list that has not changed costs one 304 and no transfer.

1 binary

static, for amd64 and arm64. No cgo, no interpreter and no runtime on the host that needs patching.

Zero

log lines, payloads and User-Agents sent to us. A report is an address, category ids and one generated sentence.

Built for the people who run the servers

One box or a full rack: the agent installs without a single question, finds its own logs and keeps itself up to date on amd64 and arm64 alike.

Web hosts and resellers

Shared hosting with hundreds of sites

Web, mail, FTP, DNS and the panel on one box. The installer reads the web server's own configuration and finds every vhost log by itself, every source gets its own threshold, and a site added tomorrow is covered without touching the configuration. Nothing about your customers' traffic leaves the machine.

Detection in detail

Data centres and managed servers

Fleets that are rolled out, not clicked

One unattended command for Ansible or cloud-init, signed self-updates, group bans so an address that hits one rack is dropped on every other, and status as JSON with an official Zabbix template for the NOC. Volume pricing goes down to 1.40 € per server.

Rollout examples

Agencies and admins

One server that has to be right

One server is included in Pro. Install it, run the first sync, read status: the box is on the network in a few minutes, and a dry run over your real logs shows what it would have banned before it drops a single packet.

Installation guide

Why this exists

A hosting box is not one service. It is web, mail, FTP, DNS and a control panel on the same machine, writing a few hundred log files between them, and every attack type arrives in a different one. Watching all of that by hand is a day of work and it still leaves the ceiling in place: a ban list built from your own logs holds only what found you first. So every server on the internet learns the same lesson separately, at its own expense, one attempt at a time.

One server alone, or one server on the network

Same machine, same logs, seven situations from a normal week in hosting. The difference is whether this server is the only one that learns from them.

The situation Without the agent With the agent
An address attacked forty other hosts this morning and now knocks on yours It gets its first attempts in until your own threshold trips. Dropped in the kernel before its first packet arrives.
Brute force against WordPress logins spread over 300 vhosts Each site sees a few attempts and none of them looks like an attack. Counted across every vhost log on the box, banned and reported once.
Password spray against your mailboxes from a pool of fresh addresses Learned one address at a time, from your own failed logins. Learned once by whoever was hit first, dropped on your mail ports only.
The attacker moves on from server 1 to server 2 Server 2 starts again from zero. With a group, server 2 drops it the moment server 1 reports it.
A new server goes into the rack Empty ban list until it has been attacked often enough to learn. Thousands of known attackers in the kernel after the first sync.
Attacks only this machine can see Its own logs are the only source, so they stay in full. The same fourteen log sources, plus every find reported to spare the next operator.
What the learning costs One successful attempt per lesson, paid with your customers' traffic. From 4.90 € down to 1.40 € per server a month, incl. VAT. One server included in Pro.
Full capability list

Everything the agent does, on one screen

Detection, local blocking and reporting run on every plan, also on a free key. A server licence adds the community feed in the kernel, and the Pro plan adds group bans across your fleet. Nothing below is a teaser for a capability that turns out to be locked.

Labels mark what a capability needs. One server licence is included in Pro, three in Business.

The community blocklist in your kernel

Addresses that attacked other servers this morning are dropped before their first packet reaches yours. This is the part a server licence buys; everything further down runs without one.

7
  • Refreshed every 15 minutes Server licence Conditional requests: a list that has not changed costs one 304 and no transfer.
  • Confidence threshold you choose Server licence Everything from 75 up on a licensed host, or raise it to keep only the surest entries.
  • Five sets by service Server licence ssh, mail, web, ftp and edge, each dropped only on its own ports, so a mail attacker can still load a website.
  • Atomic swap with a size floor Server licence A list below its minimum never goes live, and no set is ever empty for a moment.
  • ipset or nftables, IPv4 and IPv6 Every plan Picked at install: ipset where ipset and iptables exist, nftables everywhere else.
  • Its own chain, nothing else touched Every plan Only sets and rules the agent created are ever changed. An existing firewall keeps working next to it.
  • Protected without a licence Every plan When a licence lapses only the download pauses. The list already loaded keeps blocking.

Read the detail Blocking in detail Licences

Fourteen log sources, found by the installer

A hosting server writes every kind of attack into a different log. The agent reads all of them, each source with its own threshold, and the installer finds them without a single rule written by hand.

15
  • SSH Every plan Failed logins from the sshd journal, auth.log or secure.
  • Web access logs Every plan Login brute force and scanner paths in every vhost log, found in the web server's own configuration.
  • WordPress and Drupal attacks Every plan Application attacks counted apart from the rest of the web traffic, with their own threshold.
  • Web server error logs Every plan nginx and Apache error.log, ModSecurity denials included where they land there.
  • ModSecurity audit log Every plan The serial audit log, one event per transaction.
  • Postfix Every plan SASL login failures, 5xx rejects and amavis verdicts, each as its own event.
  • Dovecot and Exim Every plan Failed IMAP and POP3 logins, and failed SMTP authentication in the Exim main log.
  • FTP Every plan pure-ftpd, ProFTPD and vsftpd.
  • BIND Every plan Refused incoming queries, and nothing your own resolver does.
  • ISPConfig panel Every plan Failed logins to the hosting control panel.
  • CSF and Imunify360 Every plan Read as further sources on servers that already run them. Imunify360 is experimental.
  • fail2ban, optional Every plan An existing installation counts as one more source. The agent does not need it.
  • Port scans from the kernel Every plan Ten probes on closed ports in ten minutes is a scan. Listening sockets and FTP passive ranges never count.
  • Query-string crawl detection Every plan Clients posing as browsers that walk filter and calendar URLs. Ships in simulation.
  • Volume alarm per site Every plan A warning when a site's log reads eight times its usual hour. Bans nothing, names the site.

Read the detail Detection and rules Configuration

What happens when a threshold is crossed

A find is banned locally, reported to the network and never blocks the people who should get through. Every step can be watched before it is trusted.

9
  • Local bans from the first sync Every plan Own kernel set with a timeout per entry, restored after a reboot.
  • Escalation for repeat offenders Every plan 30 minutes, 2, 8, 32 and 128 hours, then a cap of seven days.
  • Reports to the network Every plan An address, category ids and one generated sentence. Deduplicated, queued, sent when the API is reachable.
  • Addresses that are never touched Every plan Private ranges, loopback, your own interfaces, the gateway and the installing SSH client. Cannot be switched off.
  • Whitelist in front of every drop Every plan Your own file, plus the group whitelist from the portal.
  • Ignore patterns per source Every plan Health checks and monitoring probes never reach a detector.
  • Log mode Every plan One line, mode: log, turns every drop and ban into a log entry.
  • Ban export Every plan JSON with the kernel state, or a plain list for an nginx deny include or an HAProxy ACL.
  • Ban and unban by hand Every plan ban add, ban rm and unban from the shell, effective at once.

Read the detail Local blocking

Detection rules as files you can read

No detector is hidden in the binary. Each one is a YAML file with a pattern, the position of the address and its own examples, and a rule of yours sits next to the shipped ones.

8
  • Rules of your own Every plan A file under /etc/reportedip-agent/rules.d/ adds a detector, picked up within a minute.
  • Overrides field by field Every plan Change a threshold, an action or the categories by rule id. The shipped file stays untouched.
  • Examples checked on every load Every plan A matching line, a line that must not match and one with a decoy address in the attacker's field.
  • New rules start careful Every plan A rule of yours bans, but reports only after its first 24 hours.
  • Simulation per rule Every plan A rule you are not sure of logs what it would ban and bans nothing.
  • Ban time per rule Every plan A rule starts its bans at its own length; escalation and cap stay those of the host.
  • Whitelist gate Every plan A rule triggered by your own whitelisted addresses stops reporting by itself.
  • Signed rule packs Every plan Rule updates from us are verified by Ed25519 before a single byte is read.

Read the detail Writing rules

Fleets, groups and data centres

Built for the operator with fifty servers as much as for the one with a single box. What one host learns, the others can use, and nothing needs a person logged in to stay current.

8
  • Group bans Pro What one member reports is dropped on every other for 24 hours by default, on every port.
  • Group whitelist in the portal Pro Ranges up to /24 and /64 with a note, applied on every member at its next sync.
  • Signed webhooks Pro One HMAC-signed call per ban event to your own tooling, retried three times.
  • Unattended install Every plan Every answer as an environment variable. Examples for Ansible, cloud-init and control panel hosts.
  • Signed self-update Every plan Checked every six hours, verified by Ed25519 on the host. A build that fails to start is discarded.
  • One static binary Every plan linux/amd64 and linux/arm64, no cgo, no interpreter, no runtime to patch.
  • A licence per host, not per name Server licence A random install id identifies the server. Renaming a machine does not move its licence.
  • Reputation of your own address Every plan A warning with the delisting link when the address a host reports from is listed itself.

Read the detail Rollout examples Groups

Monitoring and day-to-day operation

An agent on fifty servers is only cheap if it stays quiet. It reports its state to the monitoring you already run and writes one mail when something changes, not one per event.

8
  • status with exit codes Every plan 0 healthy, 1 degraded, 2 needs a human. A check for Nagios, Icinga or Checkmk without a wrapper.
  • status --json Every plan One document per host for Zabbix, Prometheus or your scripts, without a request to our API.
  • Official Zabbix 7 template Every plan Ready to import, with triggers for a missing sync, a missing chain, a lapsed licence and a pending update.
  • doctor Every plan Says what the host brings and what is missing, and changes nothing.
  • Dry run over real logs Every plan test reads a log, gzipped files included, and shows who would have been banned and when.
  • One mail per state Every plan With cooldown and an all-clear, through our relay or your own SMTP.
  • Its own log and rotation Every plan No logrotate entry to write, quiet at the default level.
  • Disk boundary Every plan Below a free-space floor it stops reporting and keeps detecting and blocking.

Read the detail Monitoring Running it

Privacy and supply chain

A hoster answers for the traffic of every customer on the box. The agent is built so that answer stays short.

6
  • Nothing about your traffic leaves Every plan No log line, payload, User-Agent, URL or user name. Ever.
  • Anonymised logs left out Every plan An access log with masked addresses is skipped, so a whole network is never reported.
  • EU infrastructure Every plan API and feed run in the EU and are operated from Germany.
  • Verified download Every plan The installer checks SHA256SUMS before anything is installed.
  • Hardened service units Every plan systemd sandboxing on the daemon and the timers it ships.
  • Clean removal Every plan Every ban carries a kernel timeout, so nothing stays blocked once the agent is gone.

Read the detail What leaves the machine Installation

Server pricing that falls as the fleet grows

Pro includes one server and Business three. Every further server is a licence, and the step you reach applies to every licence you book, not only to the ones above it. All prices incl. VAT.

Licences bookedPer server and monthPer server and yearPaid yearly, per month
1 to 4 4.90 € 49.00 € 4.08 €
5 to 9 3.90 € 39.00 € 3.25 €
10 to 24 2.90 € 29.00 € 2.42 €
25 to 49 1.90 € 19.00 € 1.58 €
50 and more 1.40 € 14.00 € 1.17 €

What a fleet costs a month, plan included

  • Pro with 5 servers: 14.90 € + 4 × 4.90 € = 34.50 €
  • Business with 10 servers: 39.00 € + 7 × 3.90 € = 66.30 €
  • Business with 50 servers: 39.00 € + 47 × 1.90 € = 128.30 €, or 2.57 € per server

Up to 200 licences are booked in the portal; above that the price is set in an Enterprise contract. A server without a licence keeps detecting, blocking and reporting, only the community feed pauses.

Who it's for

Hosters, agencies and admins running the full Linux stack: web, mail, FTP, DNS and a control panel on the same machines, with one box or fifty.

Quick install

1

One command, as root

bash
# At a terminal: it shows the terms of use and takes a yes, then
# asks for your key, then three short questions, and Enter takes the
# safe answer every time.
curl -fsSL https://reportedip.com/agent/install.sh | sh

# For automation, and for fifty hosts: nothing is asked, the terms
# are accepted up front.
curl -fsSL https://reportedip.com/agent/install.sh | REPORTEDIP_ACCEPT_TERMS=1 REPORTEDIP_KEY="YOUR_API_KEY" sh

The first thing the script shows is the terms of use, and it needs a yes before it downloads anything. It checks that it runs as root, that the platform is Linux, that the architecture is amd64 or arm64 and that a checksum tool exists. Then it downloads the build for your architecture with your key, verifies it against SHA256SUMS and installs it to /usr/local/bin. From there the setup probes which services run, which ports listen and where this distribution keeps its logs, and writes the configuration itself. Take the second form whenever a script runs this, because it asks nothing and needs no terminal.

2

The first sync builds the rules

bash
reportedip-agent sync

The installation touches no firewall rule: no chain, no set, no jump. This run creates all of it and loads the five per-service lists, which is why the installer ends by telling you to run it. Until then the host is exactly as it was, and an installation you decide against costs one rm of two directories.

3

See that it ran, before anything drops

bash
reportedip-agent status
reportedip-agent doctor
reportedip-agent test /var/log/auth.log
reportedip-agent rules list

status prints an entry count per list, the state of the chain, the whitelist and the licence state of this host, so one screen tells you whether the install worked. doctor says what this host brings and what is missing, and changes nothing: no file, no rule, no set. test runs the detectors over a real log, gzipped files included, and prints which address would have crossed which threshold and when, without reporting or banning anything. rules list shows every detector as the file it is, with the layer it came from and whether it is on.

This host drops from its first sync on, because that is what the installation writes. Answer log if you want to read for a week first what would have been cut off. The documentation walks through the same installation in full: every flag, every configuration key, and the granular questions the quick path skips.

Latest on the ReportedIP Linux Agent

Release notes, guides and reports, newest first.

All news and guides

Frequently asked questions

Will it block one of my customers by mistake?

Four things stand in the way of that, and the first three cannot be switched off. Private ranges, loopback, this server's own addresses and the SSH address the installation came from are never reported and never blocked. Your own whitelist sits in front of every drop. The list is scored, and you choose the threshold: from 75 up on a licensed server, or higher to keep only the surest entries. The host drops from its first sync on, and if you want to read that for a week first, answer log instead of drop during the install.

How much work is the setup on a box with a hundred sites?

One command. The installer probes which services run, which ports listen and where this distribution keeps its logs, then writes the configuration itself, with a threshold per source rather than one global number. A few dozen lines of configuration cover hundreds of virtual host logs. There is no acquisition rule to write per service and none to maintain when a site is added, because the paths are globbed.

What does it send us?

The address, the threat category IDs and a generated sentence. Never a log line, a user name, a request body, a User-Agent or a URL. A server identifies itself with a random install id created during the installation, not with its name.

What happens on a server without a licence?

Only the feed download pauses. The list already in the kernel stays and keeps blocking, local detection and local blocking keep running, reports keep going and the agent still updates itself. A server never becomes unprotected because of an open invoice.

What does a second server cost?

Each additional licence is 4.90 € a month or 49 € a year, incl. VAT, and the price per licence falls as the count goes up: 3.90 € from five licences, 2.90 € from ten, 1.90 € from twenty-five and 1.40 € from fifty. The step you reach applies to every licence, not only to the ones above it. Without a licence the agent still runs on the Free plan: it detects and blocks locally in full and reports what it finds. Only the community feed needs a server licence; Pro includes one, Business three.

Does a server count against my domains?

No. Servers are their own pool, counted separately from the domains of the Hive plugin. The Business volume multiplier raises the domain count but not the number of included servers.

How fresh is the list on my server?

On a licensed server from the Pro plan the agent refreshes it every 15 minutes and takes everything scored at confidence 75 and up. The request is conditional, so a list that has not changed answers with a 304 and transfers nothing, which is what makes a short interval cheap. The swap into the kernel sets is atomic, so there is never a moment where a set is empty. Freshness and depth of the feed are what a plan buys; local detection, local blocking and reporting do not depend on it.

Can I keep the blocklist I already use?

Yes. The agent only ever writes its own sets and its own chain, and it never touches a rule or a set it did not create, so another list, an existing firewall installation or a hand-written chain keeps working next to it. If you want to see what the agent would add before you commit, run it in log mode and compare.

Can I write my own detection rules?

Yes, and every shipped detector is one already: a YAML file with a pattern, a block that names where the address stands in the line, a threshold and its own examples. A file of yours under /etc/reportedip-agent/rules.d/ adds a rule or overrides a shipped one field by field, and the agent picks it up within a minute. reportedip-agent rules check names any mistake with file and line before the daemon sees it, and test with --rule runs one rule against a real log. Three things protect you from a rule that reads the wrong field: the examples are checked every time the file loads, a new rule of yours bans but does not report for its first 24 hours, and a rule whose threshold is reached by addresses on your own whitelist stops reporting by itself.

How do I roll it out to a hundred servers?

With the same command you would type by hand, with the answers set as environment variables: REPORTEDIP_ACCEPT_TERMS=1 and REPORTEDIP_KEY skip every question, so the installer needs no terminal. The documentation has ready examples for Ansible, cloud-init, control panel hosts and mail and database servers. After that the fleet maintains itself: every host checks for a new release every six hours and installs it only after the Ed25519 signature has been verified on that host.

How does it fit into our monitoring?

status returns exit code 0 when the host is healthy, 1 when it is degraded, for example an empty list, a missing chain or a stopped daemon, and 2 when a human has to look at the configuration, so Nagios, Icinga and Checkmk can run it without a wrapper. status --json prints the same verdict as one document with a reason per problem and counts and ages per section, without a request to our API. For Zabbix 7 there is an official template, and the monitoring guide covers Prometheus as well.

Can an attack on one server protect all the others?

Yes, with a group. Every key in your account can join one group, and each address a member reports is dropped on every other member for the group window, 24 hours by default, on every port. Pro includes one group with ten keys, Business three groups with fifty keys each. A group has its own whitelist in the portal, and a signed webhook tells your own tooling about every ban.

Is it GDPR compliant, and where does the data go?

A report carries the attacking address, the threat category ids and one sentence the agent generates. No log line, user name, URL, payload or User-Agent leaves the machine, so nothing about your customers or their visitors is transferred. The API and the feed run on infrastructure in the EU, operated from Germany, and an access log written with anonymised addresses is left out by the installer so a network address is never reported as an attacker.

The other products

Same dataset, different shape.

WordPress Plugin · Free

ReportedIP Hive

Real-time WordPress security with 16 detection sensors, a Web Application Firewall, four 2FA methods and an opt-in community threat network. Free and open source forever.

REST Threat Intelligence · Free tier

Public API

The reputation engine behind everything. Query IPs, submit reports, pull the blacklist and run bulk operations from any language, your SIEM, your firewall or your hosting panel.

Downloadable Feed · Free

Blacklist Feed

Community-driven blacklist, automatically scored from real-time reports. Plain text, JSON and CSV, ready for iptables, nftables, nginx or any blocklist consumer.

Live DNSBL Add-on · from Pro

DNS / RBL Zone

Ask a DNS question instead of downloading a list: your mail server looks the address up live, the same way it already queries Spamhaus. No imports, always fresh.

DNS Diagnostics · Free

DNS Checker

Domain health diagnostics from about 100 resolvers in more than 50 countries. Validate SPF, DKIM, DMARC and DNSSEC, run DNSBL lookups and track propagation during migrations.

PTR Check · Free

Reverse DNS Lookup

Resolve the PTR record of an IPv4 or IPv6 address and check whether it resolves back. A PTR record nobody confirms is the most common reason a mail server is refused at the door.

ReportedIP Agent

One server included from Pro, three with Business. Further servers from 4.90 € a month, incl. VAT.

Security Focused GDPR Compliant Made in Germany