feat: nadogradnja na Guacamole 1.6.0 + native brute-force ban

GUAC_VERSION 1.5.5 -> 1.6.0. Docker podrska je u 1.6.0 prepisana:
ekstenzije se ukljucuju preko <PREFIX>_ENABLED varijabli, a sve su
vec u imageu.

- BAN_ENABLED: guacamole-auth-ban, nova u 1.6.0. Blokira IP nakon 5
  promasenih prijava. Radi unutar aplikacije, za razliku od fail2ban
  jaila koji cita nginx log.

- POSTGRESQL_USER -> POSTGRESQL_USERNAME. U 1.6.0 je USERNAME
  kanonski naziv; USER je deprecated alias.

- REMOTE_IP_VALVE_ENABLED + INTERNAL_PROXIES: bez toga kontejner vidi
  samo docker bridge (172.18.0.1) kao izvor svih zahtjeva, pa ban
  ekstenzija banira cijeli proxy put i zakljuca SVE korisnike odjednom
  — isti problem koji smo rijesili za nginx sa set_real_ip_from.
  internalProxies namjerno pokriva samo docker raspone (172.16-31),
  da LAN klijenti na 192.168.x ostanu prepoznati kao stvarni klijenti.

Nadogradnja postojece instalacije trazi rucnu migraciju sheme:
upgrade-pre-1.6.0.sql (dodaje AUDIT u guacamole_system_permission_type).
Nove instalacije to ne trebaju — initdb.sh generira aktualnu shemu.

Provjereno: sve tri ekstenzije se ucitavaju, TOTP enrollment i
korisnici prezivjeli migraciju, ban se okida na 5. pokusaju i pogadja
tocno IP napadaca — pristup s drugih adresa i kroz NPM ostaje ziv.
Prezivi reboot.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-29 08:13:50 +02:00
parent e7265ff1d1
commit 281807d42c
+10 -3
View File
@@ -18,7 +18,7 @@ section() { echo -e "\n${BOLD}${BLUE}══════════ $* ═══
[[ $EUID -ne 0 ]] && error "Pokrenite kao root: sudo bash $0"
# ── Konfigurabilne varijable ──────────────────────────────────────────────────
GUAC_VERSION="1.5.5"
GUAC_VERSION="1.6.0"
GUAC_PORT="8080"
INSTALL_DIR="/opt/guacamole"
@@ -271,7 +271,7 @@ section "TOTP 2FA ekstenzija"
# Image već sadrži TOTP jar u /opt/guacamole/totp — aktivira se s
# TOTP_ENABLED=true u compose datoteci (vidi niže). Ručno preuzimanje
# nije potrebno i stvorilo bi duplu ekstenziju.
info "TOTP se aktivira preko TOTP_ENABLED (ugrađen u image)"
info "TOTP i brute-force ban aktiviraju se preko env varijabli (ugrađeni u image)"
cat > "${INSTALL_DIR}/.env" << EOF
POSTGRES_PASS=${POSTGRES_PASS}
@@ -319,9 +319,16 @@ services:
GUACD_HOSTNAME: guacd
POSTGRESQL_HOSTNAME: postgres
POSTGRESQL_DATABASE: guacamole_db
POSTGRESQL_USER: guacamole_user
POSTGRESQL_USERNAME: guacamole_user
POSTGRESQL_PASSWORD: \${POSTGRES_PASS}
TOTP_ENABLED: "true"
BAN_ENABLED: "true"
# Bez RemoteIpValve kontejner vidi samo docker bridge kao izvor, pa bi
# ban ekstenzija banirala cijeli proxy put i zakljucala sve korisnike.
# internalProxies pokriva samo docker mreze, da LAN klijenti ostanu
# prepoznati kao stvarni klijenti.
REMOTE_IP_VALVE_ENABLED: "true"
REMOTE_IP_VALVE_INTERNAL_PROXIES: "172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}"
# Stvarni GUACAMOLE_HOME je /home/guacamole/.guacamole; ova varijabla
# označava predložak koji start.sh kopira u njega, pa je montirani
# extensions/ direktorij time stvarno u upotrebi.