Search icon
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
ModSecurity 2.5

You're reading from  ModSecurity 2.5

Product type Book
Published in Nov 2009
Publisher Packt
ISBN-13 9781847194749
Pages 280 pages
Edition 1st Edition
Languages

Table of Contents (17) Chapters

ModSecurity 2.5
Credits
About the Author
About the Reviewers
1. Preface
1. Installation and Configuration 2. Writing Rules 3. Performance 4. Audit Logging 5. Virtual Patching 6. Blocking Common Attacks 7. Chroot Jails 8. REMO 9. Protecting a Web Application Directives and Variables Regular Expressions Index

Variables


This section contains the variables available for use in rule writing. Some variables are actually collections—this is indicated in the description.

ARGS

A collection containing the arguments passed in the request. This includes both, arguments passed via the query string (for example, in the form GET /?name=value) as well as those passed via POST requests.

Example: ARGS:username

Note that the collection only contains the value parts of the arguments. To get access to the name parts, use ARGS_NAMES. ARGS can be used on its own (without specifying a name), in which case it refers to all argument values.

ARGS_COMBINED_SIZE

The combined size of all arguments. In the example where the arguments are name=value, the combined size would be 9.

ARGS_NAMES

A collection containing the name parts of the name=value pairs of the arguments. ARGS_NAMES can be used by itself, in which case it refers to all of the name parts in the passed argument list.

ARGS_GET

A collection containing only argument values passed in a GET request.

ARGS_GET_NAMES

A collection containing only argument names passed in a GET request.

ARGS_POST

A collection containing only argument values passed in a POST request. Only available if SecRequestBodyAccess has been set to On.

ARGS_POST_NAMES

A collection containing only the argument names passed in a POST request. Only available if SecRequestBodyAccess has been set to On.

AUTH_TYPE

Contains the authentication method used to validate a user (for example, Basic, Digest).

ENV

A collection that contains the value of variables previously set using the setenv action.

FILES

A collection with the names of the files that were uploaded as part of a POST request, as they appeared on the client's system.

FILES_COMBINED_SIZE

The combined total size of any uploaded files.

FILES_NAMES

Contains a list of the form fields used for file uploads.

FILES_SIZES

A collection containing the file sizes of any intercepted files uploaded via a HTTP POST request.

FILES_TMPNAMES

A collection containing the filenames of any intercepted files uploaded via a HTTP POST request.

GEO

A collection that is initialized when you use the @geoLookup operator. Only works when you have a geographical database in place. For more information and all the fields contained in this collection, see the section GEO Collection Fields in Chapter 2.

HIGHEST_SEVERITY

Contains the highest severity of the rules that have matched so far, as specified by using the severity action in rules. The value is set to 255 if no severity has been set by any rules.

MATCHED_VAR

The value of the variable that was matched.

MATCHED_VAR_NAME

The name of the variable that was matched.

MODSEC_BUILD

Contains the ModSecurity build number. You can use this in conjunction with the skipAfter action to ensure that a ModSecurity rule is only used if the current ModSecurity can handle the syntax of the rule.

MULTIPART_CRLF_LF_LINES

Set to 1 when a client mixes the use of CRLF and LF as line terminators in a multi-part POST request.

MULTIPART_STRICT_ERROR

Set to 1 if a multi-part POST request is formatted in a non-standard way. This can be a sign of someone trying to evade the web application firewall.

MULTIPART_UNMATCHED_BOUNDARY

Set to 1 when ModSecurity detects that a multipart POST request contains an unmatched boundary.

PATH_INFO

Contains the additional path info passed to a dynamic web page.

QUERY_STRING

The full query string. To access individual name/value pairs in the query string, use the ARGS or ARGS_GET collection.

REMOTE_ADDR

The remote user's IP address.

REMOTE_HOST

If the Apache configuration directive HostNameLookups is set to On then this contains the remote user's hostname, otherwise it contains the remote IP address.

REMOTE_PORT

The port number used on the remote user's end of the connection.

REMOTE_USER

Contains the user name of the authenticated user.

REQBODY_PROCESSOR

The name of the request body processor module used.

REQBODY_PROCESSOR_ERROR

Set to 1 if an error occurs parsing a request body.

REQBODY_PROCESSOR_ERROR_MSG

Error message from the request body parser.

REQUEST_BASENAME

The filename part of a request URI.

Example: If the request URI is /products/index.jsp, REQUEST_BASENAME is set to index.jsp.

REQUEST_BODY

The HTTP request body. Only available in phase 2 and later, and only if SecRequestBodyAccess has been set to On.

REQUEST_COOKIES

A collection containing the cookie data sent by the client.

REQUEST_COOKIES_NAMES

A collection containing the names of the cookies sent by the client.

REQUEST_FILENAME

The filename part of the request, i.e. REQUEST_URI minus any query string.

Example: /index.html

REQUEST_HEADERS

A collection containing all the request headers sent by the client.

Example usage: SecRule REQUEST_HEADERS:User-Agent

REQUEST_HEADERS_NAMES

A collection containing the names of the request headers sent, for example the Host part of the header Host: www.example.com.

REQUEST_LINE

The complete request line sent by the client.

Example: GET / HTTP/1.1

REQUEST_METHOD

The HTTP request method used by the client, for example GET or POST.

REQUEST_PROTOCOL

The protocol and version number used by the client.

Example: HTTP/1.1

REQUEST_URI

The request URI, including the full query string.

Example: /index.php?username=john

REQUEST_URI_RAW

Almost the same as REQUEST_URI—this variable will also contain the domain name of the server if it was specified in the client's GET request.

Example, http://www.example.com/index.php?username=john.

RESPONSE_BODY

The HTTP response body. The response body is only available in phases 4 and 5, and only if SecResponseBodyAccess is set to On and the response body is of a MIME type for which buffering is enabled (as defined by SecResponseBodyMimeType).

RESPONSE_CONTENT_LENGTH

The response body length in bytes. If ModSecurity cannot determine the size of the response body, this variable is set to 0.

RESPONSE_CONTENT_TYPE

The content type of the HTTP response, for example text/plain.

RESPONSE_HEADERS

The HTTP response headers. Some headers may not be available until phase 5 (logging).

RESPONSE_HEADERS_NAMES

A collection containing the response header names.

RESPONSE_PROTOCOL

Contains protocol information for the response, for example HTTP/1.0.

RESPONSE_STATUS

The HTTP status code for the response. This may not be available in all rule processing phases.

RULE

A collection that gives access to the id, rev, severity, logdata, and msg fields of the rule that triggered the action.

SCRIPT_BASENAME

The filename part of SCRIPT_FILENAME.

Example: login.php

SCRIPT_FILENAME

The full filename to the script (file) that was requested by the client.

Example: /home/www/login.php

SCRIPT_GID

The group ID of the group the owner of the requested file belongs to.

SCRIPT_GROUPNAME

The group name of the group the owner of the requested file belongs to.

SCRIPT_MODE

The permission mode of the requested file (for example, 744).

SCRIPT_UID

The user ID of the owner of the requested file.

SCRIPT_USERNAME

The username of the user that the requested file belongs to.

Example: apache

SERVER_ADDR

The IP address of the web server.

SERVER_NAME

The hostname of the web server. The value of this variable is taken from the Host: header specified by the client when making the HTTP request.

SERVER_PORT

The port number used by the web server.

SESSION

A collection, to be used for storing session data. Available only after the setsid action has been used.

SESSIONID

Contains the value previously set by using the ModSecurity action setsid.

TIME

A string with the current time, formatted as a 24-hour clock (hh:mm:ss).

TIME_DAY

The current day of the month (1-31).

TIME_EPOCH

Number of seconds elapsed since January 1st, 1970. This is known as "Unix time" and is a timestamp that is used by Unix and Linux systems.

TIME_HOUR

The current hour, in 24-hour format (0-23).

TIME_MIN

The current minute (0-59).

TIME_MON

The current month, represented as a number from 0 to 11, where 0 is January and 11 is December.

TIME_SEC

The current second count (0-59).

TIME_WDAY

The current weekday, represented as a number from 0 to 6, where 0 is Sunday and 6 is Saturday.

TIME_YEAR

The current year, in four-digit format, for example, 2009.

TX

This is the transaction collection. It can be used in conjunction with setvar to store data that you need access to later. The data in TX only survives the current transaction.

Example usage: SecRule "secret" "setvar:tx.host=%{REMOTE_HOST}"

USERID

Contains the value previously set by using the ModSecurity action setuid.

WEBAPPID

Contains the value previously set using the SecWebAppId directive.

WEBSERVER_ERROR_LOG

If any error messages were generated by Apache when processing the request, these are available in this string. This variable can only be accessed in phase 5 (logging).

XML

Gives access to XML data passed in the request body. Supports XPath expressions. Useful for securing web services that use the SOAP protocol.

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at €14.99/month. Cancel anytime}