Chapter 5. Profense™ Proxy reference

Table of Contents

1. Operating mode
1.1. Changing operating mode
2. Monitor
3. Manage
3.1. Defined proxies
3.2. Selecting a proxy for management
3.3. Changing operating mode
3.4. Adding a proxy
3.5. Removing a proxy
4. Global patterns
4.1. Static content policy
4.2. Global URL path policy
4.3. Global parameters policy
4.4. Signature usage
4.5. IP pass through
4.6. General request settings
4.7. Lower button panel
5. Web applications
5.1. Filter ACL
5.2. Access policy
5.3. Add URL manually
5.4. Pending changes
5.5. Lower button panel
6. Application details
6.1. URL settings
6.2. Parameter - add new
6.3. Modifying a parameter
6.4. Parameters
6.5. Lower button panel
7. Learning data
7.1. Sample run information
7.2. Resulting policy
7.3. Applications learned
7.4. Global parameters learned
7.5. Static content learned
7.6. Tools
7.7. Lower button bar
8. Access log
9. Deny log
9.1. Specifying filter criteria
9.2. Blocked and failed requests
9.3. Lower button bar
10. Servers
10.1. Virtual web server
10.2. Real web server
10.3. Virtual host aliases
10.4. Load balancing settings
10.5. Advanced settings
10.6. Lower button panel
11. Logging
11.1. Log settings
11.2. External notification
11.3. Alert and criticality levels
11.4. Lower button panel
12. Learner
12.1. Policy generation threshold values
12.2. Learning thresholds
12.3. Learn data sampling
12.4. Lower button panel
13. Acceleration
13.1. Caching
13.2. Content compression
13.3. TCP connection reuse
13.4. Lower button panel
14. Web application firewall
14.1. Operating mode
14.2. Advanced settings
14.3. Header re-writing
14.4. Web server cloaking
14.5. Lower button panel
15. Input validation classes
15.1. Lower button panel
16. Error handling
16.1. Error messages
16.2. Lower button panel
17. Reports
17.1. Reports
17.2. Generated reports
18. Statistics
18.1. Interval selection
18.2. Summary section
18.3. Compression and served from cache graph
18.4. Requests total and served from cache graph
18.5. Original data and data sent graph
18.6. Lower button panel

A proxy can operate in one of four different modes:

Pass

In pass mode all requests are passed through the proxy. No requests are blocked and no logging is performed.

When a proxy is added this mode is selected per default.

Learn

In learn mode the proxy is automatically learning from requests. No requests are blocked and only requests maching a set of negative criteria are logged and classified.

When no new information is gained from additional requests a policy is generated and the proxy automatically switches to detect mode, if configured to do so (default).

[Note] Note

If the Profense™ node is part of a cluster with synchronization enabled the learner will only sample learn data if the node has the teacher role. If it has the learn role it will receive the policy when generated by the teacher node.

Detect

In detect mode the proxy behaves as if it was running in block mode with the prominent exception that nothing actually gets blocked. It only logs the actions that would have been taken if it was running in block mode. The detect mode can be compared to an intrusion detection system. It detects but does not prevent policy violations. This mode is useful for testing a policy before going into block mode.

Block

In block mode blocking and logging is performed according to the access policy.

Auto

In Auto mode the proxy automatically adapts to changes in the web applications. Auto mode offers instant protection by employing a combination of positive and negative policy rules. At first a general negative policy is enforced but as Profense maps a profile of the web applications and the web site in general the policy becomes more specific and shift towards a positive security model for specific applications.

Auto mode is only available in Profense™ Professional (and trial).

[Note] Note

If the Profense™ node is part of a cluster with synchronization enabled the learner will only sample learn data if the node has the teacher role. If it has the learn role it will receive the policy when generated by the teacher node.

GUI Path: Proxy -> Monitor

The monitor window provides an overview of configured proxies. The overview includes real time traffic information.

Name

Total number of requests.

Services

Number of services configured.

Requests

Total number of HTTP requests received.

Responses

Total number of HTTP responses sent.

Received

Total data received.

Sent

Total data sent.

Compression

Total compression ratio for the proxy.

Eg. 60% means that the total original data was compressed to the 60% of it's original size.

Status

OK or ERROR.

Mode

The mode (Section 1, “Operating mode”) the proxy is running in.

Details icon

Click to manage proxy settings.

Graph icon

Click to display traffic information graphs.

GUI Path: Proxy -> Manage

The Proxy menu gives access to all configuration options related to proxy management, ACL administration, security logging and settings.

To manage proxies select Proxy -> Manage in the left menu pane. This will take you to the proxy overview page.

In the list of configured proxies select the new operating mode in the Mode drop-down box for the proxy to be changed.

A proxy can operate in one of four different modes:

Pass

In pass mode all requests are passed through the proxy. No requests are blocked and no logging is performed.

When a proxy is added this mode is selected per default.

Learn

In learn mode the proxy is learning from requests. No requests are blocked and only requests maching a set of negative criteria are logged and classified.

When no new information is gained from additional requests a policy is generated and the proxy automatically switches to detect mode, if configured to do so (default).

Detect

In detect mode the proxy behaves as if it was running in block mode with the prominent exception that nothing actually gets blocked. It only logs the actions that would have been taken if it was running in block mode. The detect mode can be compared to an intrusion detection system. It detects but does not prevent policy violations. This mode is useful for testing a policy before going into block mode.

Block

In block mode blocking and logging is performed according to the access policy.

Auto

In Auto mode the proxy automatically adapts to changes in the web applications. Auto mode offers instant protection by employing a combination of positive and negative policy rules. At first a general negative policy is enforced but as Profense maps a profile of the web applications and the web site in general the policy becomes more specific and shift towards a positive security model for specific applications.

Auto mode is only available in Profense™ Professional (and trial).

Path: Proxy -> Manage + Add Proxy .

Follow the steps below.

Select operating mode (Section 1, “Operating mode”), initial configuration (Section 5.1, “Initial configuration”) and, if necessary, set buggy web server options (Section 3.7, “Adding a Proxy”).

When the HTTPS-proxy is configured click the Save proxy button.

To import a certificate go to Proxy -> Manage -> Settings -> Servers .

In the section Virtual web server select Update certificates .

Depending on the format of the certificate select the appropriate action in the bullet list.

GUI Path: Proxy -> Manage + Policy -> Global patterns

The Global patterns section allows for defining filters matching URLs and parameters on a proxy global basis.

Incoming requests are validated in the following order:

  1. Static content rules: If the extension of the requested filename extension matches one of the extensions defined in static content settings and the request has no parameters, the request is allowed.

  2. Global URL rules: If the request has no parameters and one of the global URL rules matches it it is allowed. If the request matches a global blocking rule it is denied.

  3. Access policy: If the request (including possible parameters) matches an entry in the detailed access policy it is allowed.

  4. Access policy + global parameters: If a request matches an entry in the detailed access policy but one or more parameters are offending, these parameters are checked against the global parameters rules. If there is a combined match the request is allowed.

  5. Global URL rules + global parameters: If a requested URL with parameters matches a global URL rule and all supplied parameters match global parameter rules the request is allowed.

  6. In Auto mode, if a query (a request parameter) does not match any rules it is validated using negative signature based policy rules. If it allowed it is added to the learning sample population and when enough samples are recorded the parameter is included in the positive policy.

  7. No match: The request is denied.

The Static content policy allows requests without parameters based on file extension (i.e. .gif) and allowed path characters .

To define a static content policy enter or edit file extensions and allowed path characters .

File extension

The file extension is defined as a list of comma separated values.

Allowed path characters

Allowed path characters are defined by selecting them on a list.

The letter A denotes all international alphanumeric characters and other characters are represented by their glyph, their UTF-8 number and a description.

As static content is not supposed to have any parameters (hence the denotation "static") only requests without parameters and with the method GET are validated against this rule.

It is possible to allow static requests in general.

Allow all static requests

If checked, requests without parameters like requests for graphic elements, stylesheets, javascript, etc. are allowed in general.

File extension

The file extension is defined as a list of comma separated values.

Valid input

A list of comma seperated file extensions without a trailing period.

Input example

css,png,ico,jpg,js,jpeg,gif,swf

Default value

If initial policy configuration is selected: css,png,ico,jpg,js,jpeg,gif,swf

Allowed path characters

Allowed path characters are defined by selecting them on a the list which appears when activating the button Edit .

In the list the letter A denotes all international alphanumeric characters and other characters are represented by their glyph, their UTF-8 number and a description.

Valid input

All characters in the list

Input example
  • Hyphen-minus ("-", UTF-8: 2d)

  • All international alphanumeric

  • Space (" ", UTF-8: 20)

Default value

When initial policy configuration with rules is selected the path characters in the input example above are allowed.

The URL regular expressions filter matches URLs without parameters on a proxy global basis. If a request matches any of the defined regular expressions, it will be marked as valid by Profense™ and forwarded to the back-end server.

For examples of global URL regular expressions, please refer to Table 3.6, “Examples of global URL regular expressions”

[Note] Note

Full match is implied for each regular expression, meaning that each will match from the start to the end of the request (a caret ^ and dollar $ will be appended if not already present).

Enable global URL signature based negative matching

Check or uncheck the checkbox Enable global URL signature based negative matching to enable validation of the path element of the URL against negative signatures.

Only available in Profense™ Professional (and trial).

Enable global URL regexp matching

Check or uncheck the checkbox Enable global URL regexp matching to enable global URL regexp matching.

Global URL path policy patterns

In the input area enter one or more regular expressions defining the global path policy.

Valid input

Valid regular expressions separated by new-line.

Input example

(/[\w\-]+)+\.(htm|html|shtml|pdf|asp|aspx|php|jsp)

Default value

If initial policy configuration is selected:

  • (/[\w\-]+)+\.(htm|html|shtml|pdf|asp|aspx|php|jsp)

  • (/[\w\-]+)+/?

In the global parameters section, parameters which all or many URLs have in common can be added. For instance in many CM systems an URL can be viewed in a printer friendly version by adding a specific parameter to the URL.

When adding parameters to the list both the name and the value of the parameter is interpreted by Profense™ as regular expressions. Like with the global URL-regular expressions full match from start to end is implied.

Enable global parameter signature based negative matching

Check or uncheck the checkbox Enable global parameter signature based negative matching to enable signature bases matching of parameter names and corresponding values.

When the Proxy is running in Auto mode this option is disabled as it is enabled per default for parameters not matcing any other policy rules. In other words: In auto mode this option is used in combination with positive matching but is only used for validating parameters whose name does not match any other policy rules.

Enable global parameter regexp matching

Check or uncheck the checkbox Enable global parameter regexp matching to enable global parameter regexp matching.

Name

In the list enter a regular expression matching the parameter name or names you want to match.

Valid input

A valid regular expression.

Input example
  • \w{1,32}_btn - matches all parameter names which start with a string of up to 32 characters and ends with the specific string '_btn'.

  • print - matches the specific name print.

Default value

When initial policy configuration with rules is selected: \w{1,32}

Value

In the list enter a regular expression matching the value corresponding to the parameters name or name pattern.

Valid input

A valid regular expression.

Input example
  • \w{1,32} - matches all parameter values containing an alphanumeric string of up to 32 characters.

  • \d{1,32} - matches all parameter values containing up to 32 digits.

Default value

When initial policy configuration with rules is selected: [\w\s_,/:()+@$*\.\-]*

For examples of specifying global parameters using regular expressions please refer to Table 3.8, “Examples of global parameters regular expressions”.

For more general examples using regular expressions for input validation please refer to Table 3.7, “Examples of regular expressions for input validation”.

[Note] Note

Full match is implied for each regular expression, meaning that each will match from the start to the end of the request (a caret ^ and dollar $ will be appended if not already present).

The use of attack signatures can be enabled or disabled for each request method supported.

These settings specify more general filtering criteria like headers content and length, POST payload size limit, etc.

Maximum header length

Input field

Defines the maximum length values for each inbound HTTP header. If a given header fails this check, the entire request is blocked and handled accordingly.

Valid input

An integer specifying size in bytes

Input example

2048

Default value

4096

Enforce strict HTTP/1.0 and HTTP/1.1 compliant headers

Check box

Enable / disable enforcement of strict HTTP/1.0 and HTTP/1.1 compliant headers.

If enabled, Profense™ will enforce strict HTTP 1/0 and HTTP/1.1 header compliance according the RFC standards and deny any custom HTTP header is sent in the request. If a given header fails the check, the entire request is blocked and handled accordingly.

Default: <disabled>

Pragmatic HTTP headers checking

Check box

Enable / disable pragmatic HTTP headers checking.

If enabled, inbound HTTP headers are checked according to a more loose definition. Custom HTTP headers are allowed.

Default: <disabled>

Enable file upload support

Check box

Enable / disable file upload support.

If enabled, Profense™ will simply pass file upload requests from clients.

Default: <disabled>

Block multiple and %u encoded requests

Check box

Enable / disable blocking of multiple (or %u) encoded requests.

In an attempt to evade detection attackers often try to encode requests multiple times.

If enabled, Profense™ will block requests which after being decoded still contains encoded characters.

Default: <enabled>

POST form payload limit

Input field

Defines the maximum allowed POST content length. If a given POST request length fails the check, the entire request is blocked and handled accordingly.

Valid input

An integer specifying payload limit in bytes

Input example

16384

Default value

32768

POST upload payload limit

Input field

Defined the maximum allowed POST content length for file uploads. If a given file size is larger than the specified, the request will be denied.

Valid input

An integer specifying upload payload limit in bytes

Input example