17. Security
Table of Contents
This chapter discusses how SavaPage secures sensitive user and application data, and how it communicates with external Information Providers.
17.1. HTTP Service Filters
HTTP Service Filters enforce access policies at the point where remote clients connect to the SavaPage server. Connection requests may be delayed, throttled, rejected, aborted or denied. Statistics are shown in the Admin Web App. See Filtered Requests.
Note
Details of the filtered requests are persisted in the rotating log file:
/opt/savapage/server/logs/security.logThis file has a tab separated value (TSV) format for easy import and manipulation into spreadsheet programs. See log4j.properties for more information.
If your
log4j.propertiesfile does not contain the “Security Logger” section, copy it from the log4j.properties.template.
17.1.1. Denial of Service Filter
A Denial of Service Filter keeps track of the number of requests from a
connection to the SavaPage server per second. If a limit is
exceeded, the request is either delayed, throttled, rejected or aborted.
A throttled request is placed in a queue and will only proceed when
there is capacity. HTTP status code 429 is sent if there are too
many requests.
Configuration property |
Description |
|---|---|
system.dosfilter.enable |
Set to
Y (default) or N to enable/disable theDenial of Service Filter.
|
system.dosfilter.delay-msec |
Delay (in milliseconds) that is applied to all requests over
the rate limit
system.dosfilter.max-requests-per-sec,before they are considered at all.
-1 means just rejectrequest,
0 means no delay (throttled), otherwise itis the delay. Default:
100. |
system.dosfilter.max-idle-tracker-msec |
Maximum amount of time (in milliseconds) to keep track
ofrequest rates for a connection, before deciding that
the user has gone away, and discarding it.
Default:
30000. |
system.dosfilter.max-request-msec |
Maximum amount of time (in milliseconds) to allow the
request to process. Default:
30000.If a request exceeds this threshold it is interrupted and
HTTP status code
503 is returned. |
system.dosfilter.max-requests-per-sec |
Maximum number of requests from a connection per
second. Requests in excess of this are first delayed,
then throttled. Default:
75.Also see HTTP/2 Settings.
|
system.dosfilter.throttle-msec |
Amount of time (in milliseconds) to async wait for
semaphore. Default:
30000. |
system.dosfilter.throttled-requests |
Number of requests over the rate limit able to be
considered at once. Default:
5. |
system.dosfilter.too-many-code |
HTTP status code to send if there are too many requests.
Default: 429 (too many requests).
503 (service unavailable) is another option.
|
system.dosfilter.whitelist |
Comma-separated list of host names, IPv4 addresses in
decimal notation
A.B.C.D, and canonical(non-compressed) IPv6 addresses that will not be rate
limited. IPv4 CIDR notation
A.B.C.D/M is supported,IPv6 CIDR notation is not.
Note:
localhost , 127.0.0.1 and 0:0:0:0:0:0:0:1are implicitly whitelisted.
|
system.dosfilter.warn-interval.applog.mins |
Interval (minutes) within which filter events are totaled
and written as warning in the Application Log.
The expiration of the interval is triggered by a filter
event. Default:
5. |
system.dosfilter.warn-interval.webapp.secs |
Interval (seconds) within which filter events are totaled
and send as Real-time Activity warning with popup
message to the Admin Web App. Default:
60. |
See Config Editor on how to set these properties.
Caution
Please exercise extreme caution when configuring these properties, as
doing so may result in losing access to all HTTP communication with
SavaPage. For example, setting
system.dosfilter.max-request-msec too low can result in a
permanent HTTP status code 503.
If such a lockout occurs, you can enter the correct values using a Database Command, as in this example:
sudo su - savapage
cd server/bin/linux-x64
./savapage-db --db-config-set system.dosfilter.max-request-msec=30000
See db-config-set.
Restart SavaPage to apply the changes. See Stopping and Starting the Server.
17.1.2. Inet Access Filter
An Inet Access Filter allows/denies remote access to the SavaPage
server according to a list of IP addresses. HTTP error code 403 is
sent if a request is denied.
Configuration property |
Description |
|---|---|
system.inetfilter.enable |
Set to
Y or N (default) to enable/disable theInet Access Filter.
|
system.inetfilter.whitelist |
A list of comma-separated list of IPv4/6 addresses,
individual or in CIDR notation that are allowed access.
Requests from remote addresses that do not match the
whitelist are denied with HTTP error code
403.Note:
127.0.0.1 and 0:0:0:0:0:0:0:1 are implicitlywhitelisted.
|
system.inetfilter.whitelist.empty-allow-all |
Set to
Y (default) or N to enable/disable empty whitelist to be treated as “match all”.
If
N, an empty whitelist means that only 127.0.0.1and
0:0:0:0:0:0:0:1 are allowed. |
system.inetfilter.blacklist |
A list of comma-separated IPv4/6 addresses, individual
or in CIDR notation. Requests from remote addresses
that match the list are denied with HTTP error code
403.Black list entries are always applied, so that even if
an entry matches the white list, a black list entry will
override it.
Note:
127.0.0.1 and 0:0:0:0:0:0:0:1 are not allowedon the list.
|
system.inetfilter.warn-interval.applog.mins |
Interval (minutes) within which denied requests are
totaled and written as warning in the Application Log.
The expiration of the interval is triggered
by a InetAccessFilter event. Default:
5. |
system.inetfilter.warn-interval.webapp.secs |
Interval (seconds) within which denied requests are
totaled and send as Real-time Activity warning
with popup message to the Admin Web App.
Default:
60. |
See Config Editor on how to set these properties.
17.1.3. HTTP/2 Rate Control
SavaPage supports both HTTP/1.1 and HTTP/2 communication protocols. HTTP/2 can be disabled or customized as desired. See HTTP/2 Settings.