Utility to keep malicious users away from a public TWiki site
Description
This is a simple utility to keep black sheep away from a public TWiki site. The site can be protected against excessive page access (e.g. by bad robots), suspicious activities of users, such as multiple registrations or rapid topic updates indicating Wiki:WikiSpam, or saving text with wiki-spam.
The Plugin monitors activities by IP address and uses three IP address lists to protect the TWiki site:
WHITELIST: Manually maintained list of users who should never get on the BANLIST
BLACKLIST: Manually maintained list of malicious users
BANLIST: Automatically updated list of users with suspicious activities
On topic save, text is compared to a known list of spam patterns. If wiki-spam is identified, topic save is cancelled, an error message is shown, and the IP address is put on the BANLIST. Two wiki-spam lists are used:
Local SPAMLIST: Manually maintained list of spam patterns
Public wiki-spam list: Big list of wiki-spam patterns, retrieved from external web site
Users on the BLACKLIST and BANLIST will have every page access delayed by one minute and will get an error message.
The registration form can also be protected from improper use.
To fight Wiki-spam, the Plugin can also add a rel="nofollow" parameter to external URLs. Search engines will not follow links that have this parameter, taking away the incentive to add spam to TWiki.
Plugin Settings
Plugin settings are stored as preferences variables. To reference a plugin setting write %<plugin>_<setting>%, i.e. %INTERWIKIPLUGIN_SHORTDESCRIPTION%
WHITELIST: Comma delimited list of IP addresses; possible to use partial addresses ending in a dot
Set WHITELIST = 127.0.0.1,207.86.247.124,207.86.247.125,207.86.247.126,160.39.,128.59.
BLACKLIST: Comma delimited list of IP addresses; possible to use partial addresses ending in a dot
Set BLACKLIST = 203.88.152.,203.88.155.,219.65.75.
BANLIST configuration, comma delimited list of:
Points for registration
Points for each save and upload
Points for view and other actions
Points for view raw
Threshold to add to BANLIST
Measured over time (in seconds)
Set BANLISTCONFIG = 10, 5, 1, 5, 120, 300
Your current score: %BLACKLISTPLUGIN{ action="user_score" }% for IP address 23.22.212.158
Message for users on BLACKLIST and BANLIST:
Set BLACKLISTMESSAGE = Your IP address 23.22.212.158 is black listed at the TWiki web site due to excessive access or suspicious activities. Please contact site administrator webmaster@new.law.columbia.edu if you got on the list by mistake.
Wiki-spam filtering settings
Filter wiki-spam on topic save and HTML file uploads based on SPAMLIST: (0 or 1)
Set FILTERWIKISPAM = 0
Comma separated list of Web.Topics to exclude from wiki-spam filtering on topic save:
Cache refresh time (in minutes) for public wiki-merge pattern list:
Set SPAMLISTREFRESH = 60
Cache refresh time (in minutes) for internal wiki-spam regular expression cache:
Set SPAMREGEXREFRESH = 10
Message for users trying to save text with wiki-spam:
Set WIKISPAMMESSAGE = Wiki-spam detected: "%WIKISPAMWORD%" is a banned word and cannot be saved. Your IP address 23.22.212.158 is black listed at the TWiki web site due to suspicious activities. Please contact site administrator webmaster@new.law.columbia.edu if you got on the list by mistake.
Registration protection settings
Protect registration: (number of minutes to expire, 15 minutes is recommended, 0 to disable)
Set REGEXPIRE = 0
If enabled, a magic number is protecting the registration process. TWiki expects a form field with a magic number. An error message is shown if not valid or if expired. This makes it harder to register a user by a script. A hidden field needs to be added to the registration form: <input type="hidden" name="rx" value="%BLACKLISTPLUGIN{ action="magic" }%" />
Message shown when using registration form incorrectly: (this message is deliberately vague)
Set REGMESSAGE = Registration failed, please try again.
Nofollow link setting
Add a rel="nofollow" parameter to external URLs. Use this is to fight Wiki-spam. Search engines will not follow the link if a URL has a nofollow parameter, such as <a href="http://spammer.com/" rel="nofollow">. Specify topic age in hours for which the nofollow parameter should appear (set it to a value that gives you enough time to remove spam); set it to -1 to add the nofollow parameter unconditionally to external URLs; or 0 to disable: (-1, 0, 1...N)
Set NOFOLLOWAGE = -1
Plugin Installation Instructions
Note: You do not need to install anything on the browser to use this plugin. The following instructions are for the administrator who installs the plugin on the server where TWiki is running.
Download the ZIP file from the Plugin web (see below)
Unzip BlackListPlugin.zip in your twiki installation directory. Content:
Make sure pub/TWiki/BlackListPlugin/ is writable by the CGI user (typically nobody)
Run the configure utility in your browser to enable the Plugin
Make sure that non-administrators cannot edit this plugin topic. By default, this topic is write protected with an ALLOWTOPICCHANGE = TWikiAdminGroup setting.
Test if the installation was successful:
Using above form, add the IP address of one of your workstations to the BANLIST
Access TWiki from that workstation
if you look at a TWiki topic (with the view script) you should see the BLACKLISTMESSAGE (defined above) after a one minute timeout
else, you should get an 500 Internal Server Error for other scripts
On a different workstation, remove the IP address of the test workstation from the BANLIST
Known Issues and Limitations
Scan for script eval() and escape() is currently hardcoded