Go to file
flux b18804d283 fiddle settings 2019-08-12 05:22:42 +00:00
migrations several updates 2019-07-31 13:38:24 +00:00
.gitignore checkpoint 2019-06-11 23:37:57 +01:00
.luacheckrc mostly testing and fixing commands 2019-08-02 02:21:32 +00:00
LICENSE
README.md work on readme 2019-08-11 23:01:42 +00:00
TODO work on readme 2019-08-11 23:01:42 +00:00
chat.lua strip colors from IRC messages 2019-08-09 23:28:22 +00:00
commands.lua fix variable name typo in logins command 2019-08-10 03:18:34 +00:00
data.lua fix alt query args 2019-08-11 02:17:42 +00:00
depends.txt checkpoint: debug mode (untested) 2019-07-08 01:59:32 +01:00
description.txt
init.lua reduce scope of insecure environment 2019-08-02 21:49:24 +00:00
lib_asn.lua mostly testing and fixing commands 2019-08-02 02:21:32 +00:00
lib_ip.lua things 2019-07-18 04:45:53 +00:00
login_handling.lua re-order prejoin checks 2019-08-12 05:22:22 +00:00
mod.conf checkpoint: debug mode (untested) 2019-07-08 01:59:32 +01:00
privs.lua a little cleanup and stuff 2019-07-12 00:47:22 +01:00
sban_schema.sql checkpoint 2019-06-11 23:37:57 +01:00
schema.sql true and false 2019-08-02 21:50:18 +00:00
settings.lua fiddle settings 2019-08-12 05:22:42 +00:00
settingtypes.txt fiddle settings 2019-08-12 05:22:42 +00:00
update_tables.sh convert asn names to utf8 2019-08-11 01:47:19 +00:00
util.lua mostly testing and fixing commands 2019-08-02 02:21:32 +00:00

README.md

Verbana: Verification and banning mod for Minetest

CURRENTLY A NON-FUNCTIONAL WIP. DO NOT USE UNTIL THIS MESSAGE HAS BEEN REMOVED.

Name

A portmanteau of "verification", "ban", and the herb verbena.

Motivation

This mod is a response to sban, an IP-aware banning mod derived from xban, and BillyS's verification mod for Blocky Survival. Both of these mods have problems that I've long wanted to resolve, and it seemed the best resolution to those problems was to create a new integrating the features of both.

Sban is a good first attempt at IP-aware bans, but it has several major flaws:

  1. Multiple users may be associated with an IP, and banning one often bans them all.
  2. Banned IPs can still "hack" into existing accounts of other players by brute-forcing weak passwords.
  3. For many trolls, getting access to a new IP is far too easy, and there is no effective way to keep them off the server.

BillyS's verification mod was created to deal with one particular troll on the BlockySurvival server, who repeatedly got around sban by getting new IPs from VPNs and his regular mobile service provider. When enabled, it requires all new players to be verified by a player with moderator privileges before they can interact with the server or communicate with non-moderator players.

The flaws in the verification mod are

  1. Verification is all-or-nothing; either all new players require verification, or none of them do.
  2. Moderators are not always online to verify new players.
  3. New players come from all over the world, and may not be able to communicate with the moderator.
  4. New players are of all ages, and may not be able to communicate in chat at all.

Verbana aims to provide name-based banning, as well as ip and network based blocking and verification.

  1. IPs and Networks may be marked as "untrusted" - all new players from untrusted IPs/networks must go through verification, while other new players may join at will.
  2. A "verification jail" can optionally be specified, which prevents unverified players from getting loose on the server.
  3. IPs and Networks may be blocked or temporarily blocked, should the need arise.

Some features of sban that the first release of Verbana will likely lack:

  • A GUI. The sban GUI does not work particularly well anyway, and I don't know formspec. Use commands.
  • Import/export from various other ban formats. I plan to import data from sban, but I don't have a use case for the rest. However, if someone wants to write a module to import from e.g. xban2, be my guest.

Requirements

  • Minetest 5.0 or later.
  • Verbana must be listed as a trusted mod in minetest.conf (secure.trusted_mods), in order to use a sqlite database.
  • lsqlite3 (SQLite3 for Lua) must be installed and accessible to Minetest's Lua.
  • The easiest way I know how to do this: install luarocks, and execute luarocks --lua-version 5.1 install lsqlite3 or the appropriate variation.
  • The Minetest server must use IPv4 exclusively. I've made zero attempt to support IPv6.
  • There's some soft dependencies on linux. Windows users may need to make some changes, which I would gladly accept as a PR.

Optional Dependencies

Verbana can make use of the stock IRC mod, as well as the "IRC2" mod that is used on the Blocky Survival server to connect to a second IRC server.

Sban and verification are also listed as optional dependencies, but this is primarily in order for verbana to detect their presence. By default, verbana will run in "debug mode" if these mods are detected. If you wish to use verbana as intended, you do not want these mods installed.

Setup

If you don't know the basics of installing a minetest mod, please see

Verbana must be marked as a trusted mod, with a line like the following added to minetest.conf: secure.trusted_mods = verbana

The only "trusted" thing verbana does is load lsqlite so that it can interact with its database. To our knowledge, verbana cannot leak the insecure environment, but it can leak the lsqlite interface in minetest 5.0.1 and development versions


list of commands for documentation:

Administration

sban_import [] verification on | off

General status

reports [=1w] bans [=20] who2

Player inspection

pgrep [=20] asn <player_name> | cluster <player_name> status <player_name> [] inspect <player_name> ban_record <player_name> logins <player_name> [=20]

Player management

kick <player_name> [] ban <player_name> [] [] unban <player_name> [] suspect <player_name> [] unsuspect <player_name> [] verify <player_name> [] unverify <player_name> [] whitelist <player_name> [] unwhitelist <player_name> [] master unmaster <player_name>

IP inspection

ip_inspect [=1w] ip_status []

IP management

ip_block [] [] ip_unblock [] ip_suspect [] ip_unsuspect [] ip_trust [] ip_untrust []

ASN inspection

asn_inspect [=1w] asn_status [] asn_stats

ASN management

asn_block [] [] asn_unblock [] asn_suspect [] asn_unsuspect []

Available to all players

report first-login <player_name>