Releases: ALMC-SECURITY-SLU/Agent-Abuse-Shield
Releases · ALMC-SECURITY-SLU/Agent-Abuse-Shield
ALMC SHIELD agent v1.0.6
Added
- Comando
shield(panel del agente en el servidor, sin abrir puertos):shield→ TUI interactiva en vivo (estilo htop);shield status/--once/
--json/--check(exit 0/1/2 por salud, para monitorización).- Acciones:
shield update,disable/enable,feed-global off/on,
uninstall— requieren root, piden confirmación (salvo--yes) y reportan al
backend best-effort.feed-global offdesbloquea las IPs del feed global con aviso. - Sección
[shield]en config.ini (interval, rows, color, panels).
- El agente escribe un snapshot de estado periódico (para
shield) y persiste las
stats del feed;pullerrespeta[puller] include_globalde la config.
Fixed
sender.pyreportabaagent_versionhardcodeado "1.0.0"; ahora usa la versión real
(causa de que el panel mostrara 1.0.0).
ALMC SHIELD agent v1.0.5
Fixed
- Paginación del feed global: el agente solo aplicaba ~2.000 de las ~28.000
IPs del feed colectivo.puller.pull_onceahora envíaglobal_sincecon un
cursor global separado (state.global_cursor) y drena el feed en bucle hasta
vaciarlo en un ciclo;_full_syncitera todas las páginas de/blocklist/full
en vez de pedir solopage=1. Backend sin cambios.
ALMC SHIELD agent v1.0.4
Added — installer hardening (6 detecciones extra)
- Disk space check pre-flight: requiere ≥200MB libres en
/opty/var
antes de tocar nada. Fatal con mensaje claro si insuficiente. - DNS + proxy + TLS handshake check pre-flight: verifica resolución DNS
dealmc.es, detectaHTTP_PROXY/HTTPS_PROXYen env vars y
/etc/environment, prueba TLS handshake real (no solo TCP). - Docker/Podman/OpenVZ/nspawn detection: extiende el LXC namespacing-
disable a más container types. Sin esto el agente NUNCA arrancaba en
containers Docker no-privileged. - EPEL auto-install antes de fail2ban en RHEL:
rpm -q epel-release+
dnf install epel-releaseautomático (fail2ban vive en EPEL, no en
core repos de RHEL/Rocky/Alma). policycoreutils-python-utilsauto en RHEL + SELinux: si SELinux
Enforcing pero faltansemanage/restorecon, los instala primero. En
RHEL minimal cloud images no vienen por default.- Sudoers
includedirverify: comprueba que/etc/sudoerscarga
/etc/sudoers.d/. Si no, warn + nota para añadir
@includedir /etc/sudoers.dmanualmente.
Added — operational
- Trap EXIT con cleanup parcial: si el install se aborta a mitad
(Ctrl+C, error inesperado), detiene el servicio si arrancó y reporta
install_exit_Xal backend (no borra archivos para que el admin
pueda inspeccionar antes de--reinstall).
Fixed
grep ... /etc/environment | head -1 | cut ...sin|| truemataba el
script conset -euo pipefailsi el grep no matcheaba (caso típico:
server sin proxy configurado → grep exit 1 → pipefail propaga → trap
capturaba como abort falso).
ALMC SHIELD agent v1.0.3
Added — installer (12 mejoras)
- Panel detection: auto-detecta Plesk, cPanel, DirectAdmin, aaPanel, ISPConfig
y emite warn + telemetría con nota de coexistencia específica por panel. - fail2ban
logtargetcheck: fatal si está enSYSTEMD-JOURNALoSYSLOG
(el agente lee archivo, no journal). Antes el agente arrancaba OK pero zero
reports forever — fallo silencioso devastador. - SELinux auto-configure: si Enforcing →
semanage fcontext var_log_t+
restorecon+setsebool daemons_use_tty. Skip con--skip-selinux. /etc/os-releasePRETTY_NAME: ahora aparece en banner + telemetría
install-event (antes solouname -s -rgenérico). El panel del cliente
muestra "Ubuntu 24.04 LTS" en vez de "Linux 6.8.0".- fail2ban version min check: warn no-fatal si <0.10.
--dry-run: ejecuta TODAS las checks sin modificar nada. Ideal para
auditoría pre-compra en compliance.- Health check E2E post-install: verifica systemctl active + log producido
- POST
/heartbeatresponde 200. Detecta install OK pero servicio roto.
- POST
- Verificación SHA-256 del tarball: descarga sidecar
abuse-shield-agent-X.Y.Z.tar.gz.sha256, valida consha256sum -c. Fatal
si mismatch; no bloqueante si el sidecar no existe. --tarball=PATH: usa tarball local (airgapped / hospitales / banca).--auto-update: instala systemd timer semanal (Sun 03:00 ± 2h) que
checkea GitHub/releases/latesty se auto-reinstala con--reinstall.- Soporte SUSE / openSUSE (zypper) además de apt/dnf/yum/apk.
--reinstall: descarga + ejecutauninstall.sh, luego reinstala. One-shot
upgrade desde el campo.
Added — installer (extra)
- Auto-detección LXC con
systemd-detect-virt+ fallback/proc/1/cgroup.
Si LXC sin privilegios: comentaProtectSystem/ProtectHome/PrivateTmp/
ReadWritePathsdel systemd unit (mount namespacing requiereCAP_SYS_ADMIN
que no hay en LXC unprivileged → exit code 226/NAMESPACE). Sin esto el
agente NUNCA arrancaba en containers LXC.
Fixed — agent (críticos)
- Reader cold-boot OOM:
_load_offset()ahora arranca en EOF del log si
no hay state file previo (cold boot en host nuevo). En hosts con
/var/log/fail2ban.log>100MB acumulados, el peak RSS pasaba de ~900MB →
OOM kill del agente. Con tail-mode el peak es ~50MB en estado estable. _stopattribute collision:heartbeat.py,puller.pyymain.py
sobreescribíanself._stop = threading.Event(), ocultando el método
_stop()heredado dethreading.Thread. Eso rompía.join()con
TypeError: 'Event' object is not callableen shutdown. Renombrado a
self._stop_eventen los 3 archivos.
Changed — systemd unit
MemoryMax128M → 768M (cubre peak inicial sin OOM; estable ~30M).StartLimitBurst/StartLimitIntervalSecmovidos a[Unit]
(deprecated en[Service]desde systemd 230 — generaba warning).
Changed — uninstall.sh
- Para los timer
almc-shield-update.{service,timer}si existen
(antes los dejaba huérfanos tras un install con--auto-update). - Hace
fail2ban-client unban --allantes de borrar el jail. fail2ban-client reloadtras borrar.confpara que el jail desaparezca
de memoria de fail2ban.
ALMC SHIELD agent v1.0.2
Changed
- Cleaned up internal development-phase references (F3/F4/F11) from code and
config comments. No behaviour change — only clearer, self-contained
documentation for public readers.
ALMC SHIELD agent v1.0.1
Added
- Brand logo (
docs/assets/logo.png) embedded at the top of the README.