Skip to content

Releases: PowerDNS/weakforced

Release 2.12.0

23 Aug 13:21
v2.12.0
c1a356f
Compare
Choose a tag to compare

Improvements

  • Now builds a separate luajit package (wforce-lua-dist), based on the openresty luajit fork. This is to address some issues found with stock luajit. The package also includes some lua modules that wforce typically makes use of.
  • Build the wforce-minimal image for both arm64 and amd64, and add provenance.
  • Fix centos-7/el-7 builds to still work after centos-7 went EOL
  • Add support for debian-bookworm, remove support for debian-buster

Release 2.10.2

02 May 16:18
v2.10.2
635faf9
Compare
Choose a tag to compare

Release Notes for OX Abuse Shield 2.10.2

Improvements

  • Fixed LuaState selection algorithm to use a free pool, which should lead to faster/more consistent selection of lua states by threads.

  • powerdns/wforce-minimal image is now available, using alpine for more secure and much smaller image than the existing debian-based image.

Release 2.10.1

04 Jan 09:55
v2.10.1
03d519b
Compare
Choose a tag to compare

Release Notes for 2.10.1

Bug Fixes

  • Fixed bug in GeoIP2 lookups where return values were not populated

Fixed bug in GeoIP2 lookups where return values were not populated

The GeoIP2 LookupCity Lua function was never correctly implemented, so results were not exposed to Lua correctly.
This fix exposes the results using the correct method to ensure future operation.

Release 2.10.0

20 Dec 14:14
227981a
Compare
Choose a tag to compare

Release Notes for OX Abuse Shield 2.10.0

New Features

  • Add Enterprise Linux 9 Build Target
  • Option to use OpenSSL instead of Libsodium for encryption

Removed Features

  • Remove Legacy GeoIP from Packages and Dockerfiles/Images
  • Remove the Report API from weakforced entirely

Add Enterprise Linux 9 Build Target

Enterprise Linux 9-based systems are now supported as a build target. Oracle Linux 9 is used as the
build environment, but the package should work on any EL-9 environment. Additionally, el-7, el-8 and el-9 aliases
are available as build targets.

Option to use OpenSSL instead of Libsodium for encryption

When libsodium is not available, weakforced will now use openssl crypto functions instead for encryption, including
encryption between the client and the server, and replication encryption. OpenSSL encryption is used for the
docker image, but the default for built packages is still libsodium.

Remove Legacy GeoIP from Packages and Dockerfiles/Images

The legacy GeoIP Library is no longer included in the packages or Dockerfiles/images for weakforced.

Remove the report_api from weakforced entirely

The Report API has been removed from weakforced. This feature was never used (to my knowledge), and was creating
a significant burden in terms of the maintenance of the python dependencies.

Release 2.8.0

05 Dec 13:22
v2.8.0
61257f9
Compare
Choose a tag to compare

Release Notes for OX Abuse Shield 2.8.0

New Features

  • Support ELK 7.x Stack
  • Support Date Expansion in WebHook URLs
  • Enable IP and Login substitution in blocklist return messages
  • Add config option to disable password for /metrics endpoint
  • Support redis usernames and passwords for redis authentication
  • Support hostnames for redis configuration in addition to IP addresses

Bug Fixes/Changes

  • Fix an issue where IPv6 ComboAddress returned zero port number (which caused v6 HTTP listen addresses to not work)
  • Set V6ONLY socket option to stop v6 sockets from managing v4 addresses for replication
  • Return the IP address of the client in JSON of ACL denied response

Support ELK 7.x Stack

Support Elasticsearch, Logstash and Kibana 7.x stack:

  • Continuous Integration now tests against ELK 7.x
  • Logstash Templates now work with 7.x
  • Kibana Dashboards are now in ndjson format

Support Date Expansion in WebHook URLs

WebHook URLs can be specified with fields representing years, months and days that are expanded
at runtime, for example:
config_key["url"] = "https://example.com/foo/index-%{YYYY}-${MM}-{%dd}"

See the wforce_webhook man page for more details.

Enable IP and Login Substitution in blocklist return messages

For example:
setBlackistIPRetMsg("Go away your IP {ip} is blacklisted")
setBlackistLoginRetMsg("Go away your login {login} is blacklisted")

See the wforce.conf man page for more details.

Add config option to disable password for /metrics endpoint

Adding the following to wforce.conf or trackalert.conf:

setMetricsNoPassword()

will disable the password for the metrics endpoint.

See wforce.conf and trackalert.conf manpages for more details.

Support redis usernames and passwords for redis authentication

Redis authentication is supported with the following configuration in wforce.conf:

blacklistRedisUsername()
blacklistRedisPassword()
whitelistRedisUsername()
whitelistRedisPassword()

The username is optional, depending on whether a username is set in redis.

See wforce.conf manpage for more details.

Support hostnames for redis configuration in addition to IP addresses

The blacklistPersistDB() and whitelistPersistDB() configuration commands now accept
hostnames as well as IP addresses.

Release 2.6.2

19 May 14:28
v2.6.2
5d1b1f1
Compare
Choose a tag to compare

Release Notes for OX Abuse Shield 2.6.2

Bug Fixes/Changes

  • Better error checking in blacklist loading to prevent deadlock
  • Fix missing stub for setBlacklistIPRetMsg() Lua function
  • Fix trackalert crash when schedules are used before global Lua state is initialised
  • Return 401 with appropriate JSON instead of 404 when webserver ACL is used
  • New --loglevel flag to control the log level of stdout logging

Better error checking in blacklist loading to prevent deadlock

Under certain conditions, i.e. when Redis was available but non-responsive, the blacklist
loading function would not return, causing deadlock. This has been fixed.

Fix missing stub for setBlacklistIPRetMsg() Lua function

The setBlacklistIPRetMsg() Lua function was missing a stub, which meant that it could not
be used. This has now been corrected.

Fix trackalert crash when schedules are used before global Lua state is initialised

Fixed an issue where trackalert would crash when a schedule was created which ran immediately, before the global Lua
state was initialised.

Return 401 with appropriate JSON instead of 404 when webserver ACL is used

Fixed an issue where the webserver ACL was causing 404 errors instead of 401 errors. Now
a 401 and an appropriate JSON message are returned.

New --loglevel flag to control the log level of stdout logging

Previously there was no way to control the loglevel of the stdout logging, which meant that even
debug logging would be logged. Now there is a -l or --loglevel flag, which takes the value 0-7
(matching the syslog levels), and which defaults to 6 (infolog). This fix also applies to the
built-in webserver, which only logs to stdout, and which previously only logged errors, but which now
obeys this flag.

Release 2.6.1

17 Dec 11:40
v2.6.1
c7f5909
Compare
Choose a tag to compare

Bug Fixes/Changes

  • Fix issue where wforce was complaining about not being able to create tmp file on startup
  • Fix timing issue whereby the webserver was not started before syncDB leading to syncDone failures
  • Use debian bullseye-slim in wforce docker image to save over 100MB in image size
  • Fix issue in wforce docker image where the default config file was overriden with a volume mount but not used

Fix Wforce complaint about not being able to create temporary files on startup

Wforce 2.6.x uses an HTTP library which creates temporary directories for file upload on startup,
by default in the current working directory, which for wforce is the config directory. For packaged
installation of wforce, this is /etc/wforce, which is typically not writable by wforce itself, leading
to errors. This fix changes the directory for those temporary files to /tmp/wforce.

Fix timing issue with webserver and syncDB

In rare cases when starting up, the syncDB command may start, replicate from another wdforce instance,
and complete, before the webserver had finished initializing. This would cause the syncDone command from
the other wforce instance to fail. This fix forces wforce to wait until the webserver is ready before
starting the syncDB checks.

Fix issue in wforce docker image where the default config file was overriden by a volume mount by not used

The wforce docker image documentation states that a volume mount can be used to specify a custom config file
in /etc/wforce/wforce.conf, however this was not actually the case. The file was only used if the environment
variable WFORCE_CONFIG_FILE was also set, which is incorrect, because that variable is only supposed to be used
to specify a new location for the config file. This fix ensures that whenever a volume mount correctly
mounts a custom /etc/wforce/wforce.conf file, it is both used, and a log message is output stating that it
is being used.

Release 2.6.0

24 Nov 17:16
v2.6.0
50a2f3e
Compare
Choose a tag to compare

New Features

  • REST API supports TLS/HTTPS natively
  • Multiple REST API listeners can be configured
  • Outbound HTTPS connection TLS behaviour is configurable
  • Build on Debian Bullseye
  • Remove support for building on Debian Stretch

Bug Fixes/Changes

  • Fix issue where building of geoip2 functionality was dependent on legacy geoip library being installed

REST API Supports TLS/HTTPS natively

The webserver() configuration command is now deprecated, and is replaced with addListener(),
which enables both TLS and non-TLS listeners to be created, as well as enabling multiple listeners
to be created oncurrently. The new command setWebserverPassword() is used to set the password
for the REST API (previously this was set as part of the webserver() command).

An example listener without TLS:

  • addListener("0.0.0.0:8084", false, "", "", {})

An example listener with TLS:

  • addListener("1.2.3.4:1234", true, "/etc/wforce/cert.pem", "/etc/wforce/key.pem", {minimum_protocol="TLSv1.2"})
    `

For more details, see the man page for wforce.conf.

Outbound HTTPS connection TLS behaviour is configurable

Various options for the configuration of outbound HTTPS connections are now supported, specifically:

  • Mutual TLS Authentication - setCurlClientCertAndKey() is used to specify the location of a client certifcate
    and key for mTLS.
  • Using a different CA for checking server certificates - setCurlCABundleFile() is used to specify the location
    of a file containing certs to use for this purposes.
  • Disable checking peer certificates - disableCurlPeerVerification() disables checking of peer certificates
    (not recommended except for debugging).
  • Disable peer certificate hostname checking - disableCurlHostVerification() disables checking of the hostname
    in peer certificates (not recommended except for debugging).

Build on Debian Bullseye

Support for building on debian bullseye.

Release 2.4.1

02 Jul 08:25
v2.4.1
3a4094f
Compare
Choose a tag to compare

Release Notes for OX Abuse Shield 2.4.1

New Features

  • Dynamic management of siblings via Lua functions and REST API
  • Optional per-sibling encryption keys
  • Packaging for Amazon Linux in pdns-builder

Bug Fixes/Changes

  • Fix issue where replication length bytes can be truncated causing syncDB problems

Dynamic Management of Siblings via Lua functions

Before this release, siblings could only be defined as part of the startup configuration;
there was no way to add or remove siblings dynamically while wforce was running. With this
release all sibling management functions in Lua can be used from the console to add/remove
siblings at runtime. In addition, per-sibling encryption keys can optionally be specified.

The complete set of sibling management functions is as follows:

  • setSiblings()
  • setSiblingsWithKey() (New)
  • addSibling()
  • addSiblingWithKey() (New)
  • removeSibling() (New)

For full details, see the wforce.conf man page.

Dynamic Management of Siblings via REST API

New REST API endpoints enable siblings to be managed dynamically.

The new REST API endpoints are as follows:

  • /?command=addSibling
  • /?command=removeSibling
  • /?command=setSibling

For more details see the wforce OpenAPI specification, which is available at https://powerdns.github.io/weakforced/

Note that the REST API does not currently support TLS natively, so use of a HTTPS reverse proxy on localhost
is strongly recommended when specifying per-sibling encryption keys.

Optional Per-Sibling Encryption Keys

All the methods of managing siblings (Lua or REST API) enable per-sibling encryption keys to be set.
Encryption keys are are 32-byte strings that are Base-64 encoded before passing to the sibling
management functions or REST API.

Release 2.4.1-rc1

20 May 14:26
v2.4.1-rc1
8f42693
Compare
Choose a tag to compare
Release 2.4.1-rc1 Pre-release
Pre-release

Release Notes for OX Abuse Shield 2.4.1 (Alpha1)

New Features

  • Dynamic management of siblings via Lua functions and REST API
  • Optional per-sibling encryption keys
  • Packaging for Amazon Linux in pdns-builder

Bug Fixes/Changes

  • None

Dynamic Management of Siblings via Lua functions

Before this release, siblings could only be defined as part of the startup configuration;
there was no way to add or remove siblings dynamically while wforce was running. With this
release all sibling management functions in Lua can be used from the console to add/remove
siblings at runtime. In addition, per-sibling encryption keys can optionally be specified.

The complete set of sibling management functions is as follows:

  • setSiblings()
  • setSiblingsWithKey() (New)
  • addSibling()
  • addSiblingWithKey() (New)
  • removeSibling() (New)

For full details, see the wforce.conf man page.

Dynamic Management of Siblings via REST API

New REST API endpoints enable siblings to be managed dynamically.

The new REST API endpoints are as follows:

  • /?command=addSibling
  • /?command=removeSibling
  • /?command=setSibling

For more details see the wforce OpenAPI specification, which is available at https://powerdns.github.io/weakforced/

Note that the REST API does not currently support TLS natively, so use of a HTTPS reverse proxy on localhost
is strongly recommended when specifying per-sibling encryption keys.

Optional Per-Sibling Encryption Keys

All the methods of managing siblings (Lua or REST API) enable per-sibling encryption keys to be set.
Encryption keys are are 32-byte strings that are Base-64 encoded before passing to the sibling
management functions or REST API.