Passwords never reach the log
The Minecraft server writes every command to the console before any plugin can cancel it. That means/login hunter2 normally lands in latest.log in the
clear, ready to be read by anyone with the file — or shipped off to whatever
log aggregator the host runs.
rLogin installs a log filter at startup that masks the password in any command
that carries one, and records the attempt without it.
Stored passwords are bcrypt hashes, cost 10 by default. Raising
security.password.bcrypt-cost doubles the hashing time per +1, which is what
makes a stolen database expensive to crack — at the cost of slower logins on a
weak CPU.
Account recovery
At registration, a player is shown a set of one-time codes. Losing a password or an authenticator app otherwise ends at an administrator with database access — and the usual fix, deleting the account, hands the name to whoever registers it next, which makes the recovery path itself an attack if anyone can talk staff into it.A code sets a new password and clears 2FA. The two things people lose are
the two things a code has to replace: restoring only the password would leave
them locked out by the very factor they came here about.
Registration limits
max-per-ip: 0 to turn it off.
Password rules
123456, and accepts a player’s own name —
which is public on a server. Both are refused. The bundled list is small on
purpose: it is not an attempt to enumerate bad passwords, just the handful at
the top of every breach corpus, where refusing costs one retry.
Because people reuse passwords across servers, a weak one accepted here was
never only this server’s problem.
Brute-force protection
max-attempts wrong passwords the address is locked out, and each
further failure multiplies the lockout — 60s, then 120s, 240s, up to an hour.
The account is never locked. Locking accounts would let anyone who knows a
name keep its owner out of their own server, just by failing logins on
purpose. Locking the address puts the cost on whoever is actually guessing.
Two-factor authentication
Optional TOTP through any authenticator app — Google Authenticator, Aegis, 1Password, whatever the player already uses. They opt in themselves; there is no way for an admin to impose it.1
The player starts setup
2
They confirm with a code
3
From then on
/2fa disable turns it off again.
issuer is the name players see for this server inside their authenticator app
— worth changing to your server’s name if you run more than one.
Accounts with 2FA are never given a
“remember me” session.
Premium name protection
/register on a name that belongs to a real Minecraft account, so its
owner never loses the ability to auto-login with it. On by default.
Login timeout
0 disables it.
What rLogin does not claim
A name lookup is not verification
A name lookup is not verification
Asking Mojang “is this name premium?” proves only that the name exists.
Anyone can type it. rLogin never treats that answer as proof — it is used
only to decide whether the cryptographic handshake is worth starting.
An IP is not an identity
An IP is not an identity
“Remember me” is a convenience with a real trade-off, spelled out in
Sessions. It is 30 minutes by
default for a reason.
rLogin cannot protect a server that trusts the wrong thing
rLogin cannot protect a server that trusts the wrong thing
If
login-servers.enforce is off and your proxy routes players somewhere
unprotected first, they arrive before rLogin can ask them anything. Leave it
on unless you handle the routing yourself.