Detalls tècnics del funcionament de l’agent Linux
Instal·lació i desinstal·lació de l’agent
L’agent Linux es distribueix en forma de paquet, amb un format que depèn del sistema operatiu en què s’instal·la (.deb, .rpm…). L’agent de Cyberwatch segueix les bones pràctiques de creació d’un paquet d’instal·lació Linux.
L’agent Linux s’instal·la als actius executant una ordre d’instal·lació que s’obté de la interfície de Cyberwatch, al formulari de creació d’un agent Linux. Aquesta ordre d’instal·lació inclou els paràmetres seleccionats a Cyberwatch per a la instal·lació, com ara, per exemple, els grups, l’URL de la instància de Cyberwatch…
La instal·lació de l’agent en un sistema Linux segueix els passos següents:
- configuració del repositori de l’actiu de destinació perquè conegui el paquet
- instal·lació del paquet amb el gestor de l’actiu, obtingut del repositori allotjat al servidor de Cyberwatch
- registre de l’agent al servidor de Cyberwatch amb el mètode
registerde l’agent
De manera individual, l’agent Linux es pot instal·lar copiant i enganxant l’ordre d’instal·lació que proporciona Cyberwatch directament a l’actiu que cal supervisar. Per a qualsevol desplegament a gran escala, es pot automatitzar la instal·lació de l’agent als actius Linux amb una solució que permeti executar ordres en un conjunt d’actius (per exemple, Ansible).
L’agent es desinstal·la com qualsevol altre paquet Linux clàssic, amb les ordres previstes per a aquest fi segons el gestor de paquets de l’actiu en qüestió.
Opcional: també es pot baixar directament l’agent en funció del tipus d’actiu escanejat:
- format .deb (Debian, Ubuntu…)
- format .rpm (Red Hat, CentOS, Fedora…)
Funcionament de l’agent
Als sistemes Linux, l’agent funciona amb un servei systemd i un temporitzador (timer), tots dos creats durant la instal·lació de l’agent. Aquests dos fitxers es troben a la carpeta /lib/systemd/system/.
Aquests són els fitxers relacionats amb el funcionament de l’agent de Cyberwatch que es creen al sistema durant la instal·lació:
/lib/systemd/system/cyberwatch-agent.timer: temporitzador systemd que s’executa cada 5 minuts/lib/systemd/system/cyberwatch-agent.service: servei systemd activat pel temporitzador que executa el programacyberwatch-agent/usr/bin/cyberwatch-agent: fitxer Python d’execució de l’agent de Cyberwatch/etc/cyberwatch-agent/agent.conf: fitxer de configuració de l’agent- el directori
/var/log/cyberwatch-agent/, que conté els fitxersagent.log.*
Com a Windows, l’execució de l’agent només comporta una comunicació amb l’API de la instància de Cyberwatch, que respon amb les possibles tasques que cal fer a l’actiu en qüestió.
L’agent Linux ofereix possibilitats de personalització, com ara la modificació del temporitzador o del servei systemd. Això permet, per exemple, modificar alguns permisos relatius a l’execució de l’agent o la freqüència d’execució del temporitzador.
Actualitzacions de l’agent
Com en el cas de l’agent Windows, els canvis de l’agent Linux es recullen a l’historial de versions de l’agent de Cyberwatch.
Als sistemes Linux, l’actualització de l’agent es gestiona amb el gestor de paquets de l’actiu, com un paquet Linux clàssic. De fet, quan Cyberwatch publica una versió nova de l’agent, aquesta es posa a disposició al repositori de la instància on-premise i, per tant, és a disposició dels actius en què es va configurar el repositori durant la instal·lació.
Atenció: si l’actualització de l’agent es fa després d’un canvi de servidor de gestió, cal assegurar-se de suprimir el fitxer de configuració de l’agent instal·lat anteriorment: apt purge cyberwatch-agent && rm -f /etc/cyberwatch-agent/agent.conf
Permetre l’execució amb un altre usuari
Per executar l’agent amb un altre usuari, cal modificar els permisos dels fitxers de configuració i dels registres. A més, el temporitzador systemd s’ha d’instanciar amb l’usuari correcte:
export RESTRICTED_USER=cyberwatch-agent
chown $RESTRICTED_USER /etc/cyberwatch-agent/ -R
chown $RESTRICTED_USER /var/log/cyberwatch-agent/ -R
systemctl disable --now cyberwatch-agent@root.timer
systemctl enable --now cyberwatch-agent@$RESTRICTED_USER.timer
Restringir els privilegis de l’agent
Per defecte, l’agent s’executa mitjançant systemd amb l’usuari root. Els privilegis de l’entorn d’execució es restringeixen al mínim necessari perquè Cyberwatch funcioni de manera òptima.
Es poden configurar amb precisió els privilegis concedits a l’agent de Cyberwatch i executar-lo amb un usuari sense privilegis. Aquesta secció detalla com fer-ho. Aquests passos són vàlids per als agents en versions 4.8 o posteriors. Aquestes ordres s’han d’executar amb un usuari amb privilegis.
Creeu l’usuari sense privilegis:
export RESTRICTED_USER=cyberwatch-agent useradd $RESTRICTED_USERDesactiveu el temporitzador systemd encarregat d’executar l’agent cada 5 minuts:
systemctl disable --now cyberwatch-agent@root.timerConcediu a l’usuari sense privilegis l’accés de lectura i d’escriptura als fitxers de configuració i de registre:
chown $RESTRICTED_USER /etc/cyberwatch-agent -R chown $RESTRICTED_USER /var/log/cyberwatch-agent -RActiveu el temporitzador systemd de l’agent amb l’usuari nou:
systemctl enable --now cyberwatch-agent@$RESTRICTED_USER.timer
Cyberwatch pot executar els seus escanejos de vulnerabilitats quan l’agent utilitza un usuari sense privilegis. En canvi, per a algunes operacions, com el desplegament de pedaços, l’execució de determinats escanejos o la verificació de scripts de conformitat, cal que algunes ordres s’executin en mode amb privilegis.
Opcional - Permetre que l’agent executi determinades ordres amb privilegis
Per permetre que un usuari sense privilegis executi determinades ordres amb privilegis, Cyberwatch recomana utilitzar el mecanisme sudoers.
Editeu el fitxer
/etc/sudoers.d/cyberwatch-agent:sudo visudo -f /etc/sudoers.d/cyberwatch-agentEscriviu al fitxer les configuracions que vulgueu:
# Cyberwatch-agent privileges ## 'id' is the first command ran by Cyberwatch when monitoring an asset, it ## helps determine whether or not Cyberwatch has sudoers rights on the asset; cyberwatch-agent ALL=(ALL) NOPASSWD:SETENV: /usr/bin/id # --- ## 'apt-get/yum/pacman' are typical package managers commands, these will be used ## in case you ask Cyberwatch to deploy patches on your assets depending on the ## type of system monitored; # cyberwatch-agent ALL=(ALL) NOPASSWD:SETENV: /usr/bin/apt-get # cyberwatch-agent ALL=(ALL) NOPASSWD:SETENV: /usr/bin/yum # cyberwatch-agent ALL=(ALL) NOPASSWD:SETENV: /usr/bin/pacman # --- ## 'shutdown' will be used if you wish to perform reboots on your assets directly ## from Cyberwatch; cyberwatch-agent ALL=(ALL) NOPASSWD:SETENV: /usr/sbin/shutdown # --- ## 'ss' is used for ports scans, allowing to run the command with sudoers rights ## allows Cyberwatch to get the processes that own the ports; cyberwatch-agent ALL=(ALL) NOPASSWD:SETENV: /usr/bin/ss # --- ## 'dmidecode' is used to retrieve the BIOS metadata, the command requires sudoers ## rights to be run. cyberwatch-agent ALL=(ALL) NOPASSWD:SETENV: /usr/sbin/dmidecode # --- ## 'docker' is needed with sudoers rights to perform a vulnerability scan on all ## found Docker images. cyberwatch-agent ALL=(ALL) NOPASSWD:SETENV: /usr/bin/dockerSubstituïu el fitxer de configuració del servei systemd:
systemctl edit --full cyberwatch-agent@$RESTRICTED_USER.serviceAquesta ordre obre a l’editor de text del sistema un fitxer de configuració que té prioritat sobre el fitxer de servei instal·lat.
Per defecte, el servei systemd està configurat per impedir les elevacions de privilegis. Cal desactivar aquestes proteccions per permetre l’ús de sudo.
Comenteu les línies següents:
# LockPersonality=true # NoNewPrivileges=true # ProtectClock=true # ProtectHostname=true # ProtectKernelLogs=true # ProtectKernelTunables=true # RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX # RestrictSUIDSGID=trueQuan està activada, cadascuna d’aquestes regles implica que l’opció
NoNewPrivilegestambé estigui activada. Per tant, cal desactivar aquestes opcions.Deseu el fitxer
Torneu a carregar les configuracions de systemd:
systemctl daemon-reload