diff --git a/guacamole-docker/bin/build-guacamole.sh b/guacamole-docker/bin/build-guacamole.sh index 9f1773d83..6ffc86611 100755 --- a/guacamole-docker/bin/build-guacamole.sh +++ b/guacamole-docker/bin/build-guacamole.sh @@ -198,3 +198,13 @@ if [ -f extensions/guacamole-auth-json/target/guacamole-auth-json*.jar ]; then mkdir -p "$DESTINATION/json" cp extensions/guacamole-auth-json/target/guacamole-auth-json*.jar "$DESTINATION/json" fi + +# +# Copy automatic brute-force banning auth extension if it was built +# + +if [ -f extensions/guacamole-auth-ban/target/guacamole-auth-ban*.jar ]; then + mkdir -p "$DESTINATION/ban" + cp extensions/guacamole-auth-ban/target/guacamole-auth-ban*.jar "$DESTINATION/ban" +fi + diff --git a/guacamole-docker/bin/start.sh b/guacamole-docker/bin/start.sh index c9d205b58..632c3d03a 100755 --- a/guacamole-docker/bin/start.sh +++ b/guacamole-docker/bin/start.sh @@ -1160,6 +1160,18 @@ if [ -n "$API_SESSION_TIMEOUT" ]; then associate_apisessiontimeout fi +# Apply any overrides for default address ban behavior +set_optional_property "ban-address-duration" "$BAN_ADDRESS_DURATION" +set_optional_property "ban-max-addresses" "$BAN_MAX_ADDRESSES" +set_optional_property "ban-max-invalid-attempts" "$BAN_MAX_INVALID_ATTEMPTS" + +# Ensure guacamole-auth-ban always loads before other extensions unless +# explicitly overridden via naming or EXTENSION_PRIORITY (allowing other +# extensions to attempt authentication before guacamole-auth-ban has a chance +# to enforce any bans could allow credentials to continue to be guessed even +# after the address has been blocked via timing attacks) +ln -s /opt/guacamole/ban/guacamole-auth-*.jar "$GUACAMOLE_EXT/_guacamole-auth-ban.jar" + # Set logback level if specified if [ -n "$LOGBACK_LEVEL" ]; then unzip -o -j /opt/guacamole/guacamole.war WEB-INF/classes/logback.xml -d $GUACAMOLE_HOME