From 281807d42c62c8dcf38e8b6d12faf99bded6279e Mon Sep 17 00:00:00 2001 From: njomac Date: Wed, 29 Jul 2026 08:13:50 +0200 Subject: [PATCH] feat: nadogradnja na Guacamole 1.6.0 + native brute-force ban MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GUAC_VERSION 1.5.5 -> 1.6.0. Docker podrska je u 1.6.0 prepisana: ekstenzije se ukljucuju preko _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 --- install.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index e8e4791..9d2bfbf 100755 --- a/install.sh +++ b/install.sh @@ -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.