Protection and second factor
Login protection, attempt limits and the second factor.
Everything here is in config.conf, except the protection block, which has its own protection.conf. A reload
applies it unless the block says otherwise.
Sessions
sessions.mode is off (every join asks the password), everyone (every login is remembered) or chosen
(only a player who ticked the box, used the Bedrock toggle or typed /session on). A player back from the same
address within sessions.minutes skips the password. A password change, /logout, /session off and a new
address end the session. sessions.skip-second-factor decides whether a session also skips the app code.
Address bans
protection.bans bans the address of wrong passwords. Every failures wrong passwords earn the next step of
steps-minutes, and the last step repeats. An address quiet for forgive-after-hours starts again from the first
step. An IPv6 address counts by its /64. /uxmauth unban <address> lifts a ban. passwords.max-attempts kicks a
player after that many wrong passwords on one connection.
Limits
protection.connections: how many connections one address may make insidewindow-seconds, counted at every connection whatever comes of it. A refused connection counts too.protection.accounts: how many password accounts one address may make insidewindow-hours. Premium and Bedrock players are proved already and neither counted nor refused.exempt-addressesin both takes one address or a range with its prefix, for your own proxies, or a village or school that shares one IPv4 address.
Shared addresses
Behind a filter such as TCPShield every player arrives from the filter's address. protection.shared-address-hosts
and shared-address-sources name the hosts the filter answers for and the addresses it connects from. A
connection counts as through the filter only when one of those addresses made it, and sessions and every rule
that reads the address are off for it. With hosts and no sources nothing counts and the console says so at
every start. When the filter hands the server each player's own address, use that and leave both empty.
Countries
protection.countries.mode is off, allow (only listed countries come in) or deny (listed countries stay
out). list holds two-letter codes, allow-addresses lets addresses in whatever their country, unknown is
what to do with an address the file cannot place. The data is MaxMind's free GeoLite2 country file: with
account-id and licence-key it is fetched into the data folder and refreshed every refresh-days; without
them put GeoLite2-Country.mmdb there yourself. With no file every country is let in and the console says so.
Captcha
protection.captcha.when is off, register, failures or both. after-failures wrong passwords on a name
bring it, forgotten after failure-memory-minutes. java is dialog (the code as text) or map (drawn under
noise on a map in the hand, answered with /captcha). The map needs hold.hide-inventory on, otherwise the
dialog is shown. Premium and Bedrock players never meet it.
Second factor
A player turns on an authenticator app with /2fa setup and /2fa confirm, or a code by mail with
/2fa email on. second-factor sets the issuer, the label ({player} is the name), the digits (6 to 8), the
period (15 to 300 seconds), the window steps, the setup time and the backup codes. A wrong code costs a try as a
wrong password does and counts toward the address bans. premium-skips lets a proven premium or Bedrock player
skip the code. required-permission (default uxmauth.2fa.required) holds a player until the app is set up,
for as long as they hold the node outright; give it to staff through a permission plugin.
Mail and linked addresses
Nothing is mailed while mail.enabled is false. mail names the SMTP server (host, port, security of
plain, ssl or starttls, login, sender). The mail texts are the files in mail/, one per kind and
language. email governs the linked address: allowed-domains, denied-domains, the code's lifetime, tries,
cooldown and length, and required-at-registration, which holds a password account until it links a confirmed
address (it holds nobody while mail is off). Mail failures are told to the player and once to the console, never
with the address.
Purge
purge removes accounts nobody logged in to for after-days, with everything kept under them, checking every
check-hours. It is off by default and keep-premium spares premium accounts.
Was this page helpful?