Intrusion Detection System

An intrusion detection system (IDS) is a software application that monitors a network or systems for malicious activity or policy violations. An IDS specifically does not aim to prevent malicious actions but instead to monitor and log every event, and in cases where a rule has been defined, take a predefined action.* As of Tiki 18, Exposé is available as a package to provide website threat identification for Tiki.


"An IDS system should not be relied upon for sole protection in your environment! It should only be used in the first level of threat identification. Please read up on Defense in Depth for more information on a layered security approach" (from https://github.com/enygma/expose ).

"Here's a quick list (of features):

  • A queue system that lets you do offline processing (store on request, cron to check or something similar)
  • Notifications of results (just email right now)
  • Setting thresholds for notifications

Since it was based on the PHPIDS system, it also has features in common with it:

  • Setting exceptions
  • Setting restrictions ("only look at...")
  • Uses the same filter definitions

I tried to make it so that anyone that's used PHPIDS will feel pretty at home using Expose."


Exposé isn't bundled with Tiki as an external library by default. Instead, it can be installed "on demand" via the Packages feature.


Please follow the standard instructions for package installation. Note: in some edge cases, there may be a problem with the package installation GUI. For example, currently (pre-Tiki 17 release) in a Windows WAMP localhost server, there's an error that Composer can't be found. In this case, Exposé may be successfully fetched and installed via the command line:

php temp/composer.phar require enygma/expose

Configuration and use

After the Exposé package is installed, go to Site Acccess tab on the Security Admin page (tiki-admin.php?page=security#content_admin1-4).


When the feature is activated, relevant options are displayed.


Custom rules file

Exposé uses the PHPIDS project's ruleset for detecting potential threats. This can be extended with custom rules. The default location and name of the custom rules file is temp/ids_custom_rules.json.


Intrusion detection system mode

The IDS operation mode needs to be defined, and there are two choices here: Log only and Log and block requests. Log and block requests will block an intrusion whose impact is over a given threshold. "As the impact scores in Expose are numeric (0 through whatever, depending on the rules matched) you can easily set a threshold to prevent low-level, annoying notifications being delivered" (https://expose.readthedocs.io/en/latest/).

Intrusion detection system threshold

This is to define the IDS threshold as a numerical value, when in the "Log and block requests" mode. "Some applications know for a fact that they’ll always be getting a certain amount of traffic that’s in the 1-2 impact score range. Getting notifications for every one of these requests would get annoying pretty quickly, so you can set your threshold a bit higher." Setting the threshold to 8 means that Expose will only send notifications when the score is greater than or equal to 8. There’s no concept of “high”, “medium” or “low” in Expose as the meanings of these terms vary greatly by environment and application. "NOTE: Currently notifications are the only thing that setting a threshold changes. Logging and other processing is unchanged" (ibid).

Log to file

Events are logged to a file the default name of which is "ids.log".

History of this Tiki feature:


PHPIDS (PHP-Intrusion Detection System)

This is somewhat similar to ModSecurity but in PHP, and thus configurable via Tiki.

"PHPIDS (PHP-Intrusion Detection System) is a simple to use, well structured, fast and state-of-the-art security layer for your PHP based web application. The IDS neither strips, sanitizes nor filters any malicious input, it simply recognizes when an attacker tries to break your site and reacts in exactly the way you want it to. Based on a set of approved and heavily tested filter rules any attack is given a numerical impact rating which makes it easy to decide what kind of action should follow the hacking attempt. This could range from simple logging to sending out an emergency mail to the development team, displaying a warning message for the attacker or even ending the user’s session.

PHPIDS enables you to see who’s attacking your site and how and all without the tedious trawling of logfiles or searching hacker forums for your domain. Last but not least it’s licensed under the LGPL!"

This improves Security and Performance

To configure, visit tiki-admin.php?page=security -> PHPIDS

Related links

List Slides