diff --git a/linux/Makefile b/linux/Makefile index 95d5c64..c83adaa 100644 --- a/linux/Makefile +++ b/linux/Makefile @@ -51,9 +51,13 @@ install-ogagent: cp scripts/OGAgentTool-startup $(BINDIR) cp scripts/OGAgentTool $(BINDIR) + # Copy Filebeat directory + cp -r $(SOURCEDIR)/filebeat $(LIBDIR)/filebeat + # Fix permissions chmod 755 $(BINDIR)/ogagent chmod 755 $(BINDIR)/OGAgentTool-startup + chmod 755 $(LIBDIR)/filebeat/install_filebeat.sh chmod 755 $(LIBDIR)/OGAgentUser.py chmod 600 $(LIBDIR)/cfg/ogagent.cfg diff --git a/linux/debian/control b/linux/debian/control index c8d9e6e..fbb1eea 100644 --- a/linux/debian/control +++ b/linux/debian/control @@ -12,6 +12,6 @@ Priority: optional Architecture: all Depends: policykit-1 (>= 0.100), python3 (>=3.4) | python (>= 3.4), python3-pyqt6, python3-requests, - python3-six, python3-prctl, python3-distro, libxss1, zenity, ${misc:Depends} + python3-six, python3-prctl, python3-distro, libxss1, zenity, ${misc:Depends}, ${python3:Depends}, python3 Description: OpenGnsys Agent for Operating Systems This package provides the required components to allow this machine to work on an environment managed by OpenGnsys. diff --git a/linux/debian/filebeat-oss-7.12.1-amd64.deb b/linux/debian/filebeat-oss-7.12.1-amd64.deb new file mode 100644 index 0000000..9c48907 Binary files /dev/null and b/linux/debian/filebeat-oss-7.12.1-amd64.deb differ diff --git a/linux/debian/ogagent.postinst b/linux/debian/ogagent.postinst index b59cfa6..3248f15 100644 --- a/linux/debian/ogagent.postinst +++ b/linux/debian/ogagent.postinst @@ -6,6 +6,17 @@ set -e case "$1" in configure) chmod 600 /usr/share/OGAgent/cfg/ogagent.cfg + # Instalar filebeat directamente desde el paquete incluido + if [ -f /usr/share/OGAgent/filebeat/filebeat-oss-7.12.1-amd64.deb ]; then + echo "TRYING INSTALLING FILEBEAT" + # Crear un servicio temporal con un retraso de 30 segundos + systemd-run --quiet --unit=install-filebeat \ + --on-active=30s \ + /usr/share/OGAgent/filebeat/install_filebeat.sh + else + echo "Advertencia: El paquete filebeat no se encuentra en /usr/share/OGAgent/" >&2 + fi + ;; abort-upgrade|abort-remove|abort-deconfigure) ;; diff --git a/linux/debian/ogagent.postrm b/linux/debian/ogagent.postrm index a46fa48..1e48d5d 100644 --- a/linux/debian/ogagent.postrm +++ b/linux/debian/ogagent.postrm @@ -5,6 +5,7 @@ set -e if [ "$1" = "purge" ] ; then + update-rc.d ogagent remove || true rm -rf /usr/share/OGAgent || true > /dev/null 2>&1 fi diff --git a/src/filebeat/CA/ca.crt.pem b/src/filebeat/CA/ca.crt.pem new file mode 100644 index 0000000..de604b2 --- /dev/null +++ b/src/filebeat/CA/ca.crt.pem @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +MIIFCzCCAvMCFFUAATNZqrxFv9E6ni4/Gd7yikIxMA0GCSqGSIb3DQEBCwUAMEIx +CzAJBgNVBAYTAkVTMQ8wDQYDVQQIDAZNYWRyaWQxDzANBgNVBAcMBk1hZHJpZDER +MA8GA1UEAwwIY2EubXl0bGQwHhcNMjQxMjE4MTUxNDEyWhcNNDQxMjEzMTUxNDEy +WjBCMQswCQYDVQQGEwJFUzEPMA0GA1UECAwGTWFkcmlkMQ8wDQYDVQQHDAZNYWRy +aWQxETAPBgNVBAMMCGNhLm15dGxkMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEA0gXrrtQKNHKZ+BZs+x++CqobPy02Q1qPnPdD8Md5IXa9FyVHFdtB67j4 +b5KbI03BU8pi8OHL4wnZI2nWizsao02zXl7ukNuKaWjh0pqTqgBxPjYIiREh4Nai +y5DywT9XESiB9LwRB5PDOa4zJPCMd5czumvXV1JCxJh/9wstys90d9lexGdiHWm6 +TvLuI1kyiRh4vVS3L4Nr2pypgvI7JJsMCMjjvX6F1VosELgRRIqSFwrmqzCG0qV1 ++FCtbLWZeto7HoVGdJx8XyyCpEYI4luXeGo+f61KZoXoqQ2+5CrTcik199TAdYUg +Oa3OlO4+PWRtLqqyn5gyg1Dhdj/hTvsPP/xXaJERdTn3dPYYzKTaJqja2cdkt8J5 +YHz/Az+6cFEJbeWTrY+k8jvZX2i7QhylG9hcbXbflEA0woy6cqGmLxIZo5kcj0Hy +M1dUjvAMkKJgAyshjeUbhW7wH0XndQ9AQ518mPg0o4ygbjBCkeBSBqvsTQrRCdnb ++ogE+XzxWXEsNVXiysC3ZURpr+UHMHSeAYin2h8wjZsIC7fRVisdBOkYSYu9NQhU +3eLZtjhCgFSzxHOUJ7mI4SbGcw6awwr+irrQNg/HNL4EoEh7xwbvXMU09jA0JLWA +G7mpMs4PpAgNyYej68uignXlwDUruxYmZcSr/fQrvtWlCHtj5MUCAwEAATANBgkq +hkiG9w0BAQsFAAOCAgEABDXtALkRebuUQwFLpEd9INcfzVxtBNiheFJ3Ip/vzNFK +Wg9p1JYIQBB8nvYyr5OGBK0bvz40GZhXUwOxsPnXxjpZMQ2716wDI3BP7N9MP29c +0Zd/8+dgfbiRq0PURRThF0UEjFZeL/pr8wKP6YBl5xBKkRHgX8YG2RPQuf0GaIKB +jmHGVKsfROWpOS8xQzmeQQq2BLEVKhSdE/f3MqUl8/ml+dheAwaSrxicl5CcalTg +7TI6vdo85uoyI4WvSM1+yh5scNlLHvJlq1Poz/qKipukqY9YiKD0PpkY4BkM1qI8 +AqYnT/W0rce/UvwQPBYsCXNU8rvQZ0gsxaTKTK2bgNLi9ahlfYkSpKmt+vS/mwBh +8PqkcAYqzNbWwmhQWK+QKVAOJHRPoXAwgoG7YFHYDTeNetroLzJsGL9IJojuO0vK +Ug7wLTSbh/8Y35WB4gyNfJX+7VdWyiZXL/aPtjWBP6ts7oJuUYrU+s4oaap7suL4 +b85JN+/zlXP2X3EswCFhHSveuHJtkVnUBOpxa54YRw2N3MqOPSS+Csy0lu1qmfcP +/1+S/VtxM9s5P1cyK3zIww0DSSAz5O/WWcI9Zt9lAUCp0V6ubQxk3MVIimvv8mkZ +E9gCCqd7VgrZvZTGz1uaNWv60MUD2SHwEg4IOQQo7+szsDx3jQkTJYBwtB4eTaw= +-----END CERTIFICATE----- diff --git a/src/filebeat/CA/ogagent-fb.mytld.crt.pem b/src/filebeat/CA/ogagent-fb.mytld.crt.pem new file mode 100644 index 0000000..e606d57 --- /dev/null +++ b/src/filebeat/CA/ogagent-fb.mytld.crt.pem @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEsTCCApmgAwIBAgICEAcwDQYJKoZIhvcNAQELBQAwQjELMAkGA1UEBhMCRVMx +DzANBgNVBAgMBk1hZHJpZDEPMA0GA1UEBwwGTWFkcmlkMREwDwYDVQQDDAhjYS5t +eXRsZDAeFw0yNDEyMTgxNTE0MTRaFw0yNTEyMjgxNTE0MTRaMEoxCzAJBgNVBAYT +AkVTMQ8wDQYDVQQIDAZNYWRyaWQxDzANBgNVBAcMBk1hZHJpZDEZMBcGA1UEAwwQ +b2dhZ2VudC1mYi5teXRsZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AMoywL3S1gPxsTfkLWX/cNGIz0S0+KhtrBtVRrRPKL6Snu67Zo9KjQL7+Slp5ybR +0F5ZnK+XDBmMaqbAKTBxNb5jmui+3ACbwpD1c+TGMR96wVj2BOr6z+Ir0a1iE4mS +cAXlXPl4UFqcmcS+fRlkrtLuR7b94oxtwkKxqw1hq0irQAmJPKN2X3uL2etM99/E +Ll4LR7dZlCd0FBMN8Ku/8TSG5Z/liCSs/AFaY/PYJZ61rCIIeHxiixQXJqvtyhjV +8q82ezwrvW4yK3y1gBBNA6Njwpaz/foWaUEEgD+MgIavVIxaRMCnqPFBn+uulZqh +TMztgxLX//zfjXxCBWQdRAkCAwEAAaOBqDCBpTAbBgNVHREEFDASghBvZ2FnZW50 +LWZiLm15dGxkMB0GA1UdDgQWBBQjcSfmTGnC+nzg13aLxBdEKluMfTBnBgNVHSME +YDBeoUakRDBCMQswCQYDVQQGEwJFUzEPMA0GA1UECAwGTWFkcmlkMQ8wDQYDVQQH +DAZNYWRyaWQxETAPBgNVBAMMCGNhLm15dGxkghRVAAEzWaq8Rb/ROp4uPxne8opC +MTANBgkqhkiG9w0BAQsFAAOCAgEAlf5LgmqjJxXD0j8A0uOXibNlhullEtPZAskl +HKOpwyHO+wLgTkQVLR7Kx88l0Kqje/YI61AUyXrK+6qvfevHWNgMxyVc0n9bW0Qk +qgPOjYA3/l6vJOcODFKYkigeF4GHbicBFmmha8eVCLBmNEsmbZlqyeKjC0WpnyhL +OFxGwqjC3vqH59eS4ufW1pWSNw+pSXj5QeyhDcla1kZWgx0hgsBkEODI9RZ32mKk +wHGUYhpFBO0Xg3AUiOfMUcMbhCojAC3xZ2hdw+joVkLgFnEoh2nuSEIGwb+bNGiH +9Qr23gLuilsGwD1fev4NA09ityaadutNL+XNBOKM811fJsfvnOMD/6d0RnCdg7gw +zT+XL6YhQmzSzs2NnMUUCbg85DGG4LVyvELzs6deLuEF4qp7udATYrdJZ9P1nNEs +XWs6/4Y1RX5TRO5sWeWEdgMP1Avlu9fkxJGipbABsptUbDsQIJyBvWLfbQ/++yKv +d10CJxHosT88qqn/oT8hBhvJC6yrOI0ZUszfaf7taYlGDSJj+azSuTkZ12yaQ4ql +YVgyO8w7KI6fpldnWOK3ReAAR6g0GI1d5ZRnx82RVg/NUkMgMoWcuCV386vo6Y5T +2CBmg1khtAASJAS2MnCi7qJNJH0WZy/pFCbN0bJzKsDqz3DAa4huA3v9PmFJ8OcK +QG0vBDg= +-----END CERTIFICATE----- diff --git a/src/filebeat/CA/ogagent-fb.mytld.key.pem b/src/filebeat/CA/ogagent-fb.mytld.key.pem new file mode 100644 index 0000000..f4c6c2e --- /dev/null +++ b/src/filebeat/CA/ogagent-fb.mytld.key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDKMsC90tYD8bE3 +5C1l/3DRiM9EtPiobawbVUa0Tyi+kp7uu2aPSo0C+/kpaecm0dBeWZyvlwwZjGqm +wCkwcTW+Y5rovtwAm8KQ9XPkxjEfesFY9gTq+s/iK9GtYhOJknAF5Vz5eFBanJnE +vn0ZZK7S7ke2/eKMbcJCsasNYatIq0AJiTyjdl97i9nrTPffxC5eC0e3WZQndBQT +DfCrv/E0huWf5YgkrPwBWmPz2CWetawiCHh8YosUFyar7coY1fKvNns8K71uMit8 +tYAQTQOjY8KWs/36FmlBBIA/jICGr1SMWkTAp6jxQZ/rrpWaoUzM7YMS1//83418 +QgVkHUQJAgMBAAECggEABROoJjv8dqXjYrlecHCs9v3d4mY+1g/G4frOpylTpxFM +X0ciSJfBGaGU/Ha1wJJFDpFmbzw2KBAP/3bUsewtwsWCdrSQFo3SoUwgaE6Xnig5 +YY/vyKyaep3KCnXrcqlUGbnMD1F3hwbmj3uO7YvLHe2wrEYMoaUB2yXV2ySoJc9n +ghbRU3oaDl1rZWtDFxSSVLuntYkahST8bqiznUCVNd2DfyZJ0yUTzX/MxgKe0MSo +qPFsnBnLRgywl3hfG/gR/rtVwDZGxY/KhCX9mHEzk74/iCQasguCatdC862ZFUaK +YSRVn6i25Eja+PSTrSNEqkXe65RRNBzunjTroJu9AQKBgQDrrdPXTW3NsnS5tsKi +4TLriWRoeLVG5QUvcVhmCrYYunAkU9X3DaJyfn5rMLnpKhSDDj0/zPsGFSXPaax4 +XP/xwYZBezXlqBALWtUtecZ+lWaLxIPrPto02Le/ARTELolfXF72NBmGovtNlwnG +4i8mvx0G/NS/tn8GIryBD02DwQKBgQDboeZ+QpkEN3mkeETdsTiYvSl8qGJ8DJpd +VgAs5tyARgOQHBlfPQRSgNIgxlLs+UMMW5Q3l53B2bAh8v64cEalZyRJsWYD+5BW +v7T08RoofuL087F1u2/IscgUuEacZKcjrRvvugIvh6TLPhPePqN/MUe0Gd163Czr +XQQaiQcySQKBgQDTQRBnqJ8pR7J7mcfj6osTOCeJwdF0R+ua+DWt2iIaDlxhI8ji +WBVqHdrByH6M80xJoWTjoKDOdfxbbDTN+0bs9HSck43fWwNuui/mQIbdhpvR4wgA +wWkk/7HNA3IS3EgE866ncFIFLmimxyFbZfmv+JVTYyRs6G/6Fv7zjL0FwQKBgB0O +OA3wBYo3RJJrjsC9Vz1tmPVy2USL7kf2vqMyD22w1XvVG84rpky72hCX7BSJjUMv +QlZwamBgyhpTqTsBL3dmQ7i0DUjtmNTBG9FjrBA7aQ76xjlLCKjGTC/hiQXbkvj3 +R8DZHLzo9vYkSkCWjM6g2FmNKm28fvzMG2TfR+JxAoGAbycyqTwbUXgv030Mcmtu +SnIqVsUW5aZ7UoAsWRo10vo2OpVQ+2FT+jcChnue0G5ffy7344wRN4Q+xixG/hlP +QdMwhl94+Cj9DHxwTuPELfahr0289tcjHP+CTw1SlTgDR7bgaa9/PVJeUl8mreuC +lolkshxjAE5pFYIG3ozFIoY= +-----END PRIVATE KEY----- diff --git a/src/filebeat/filebeat-oss-7.12.1-amd64.deb b/src/filebeat/filebeat-oss-7.12.1-amd64.deb new file mode 100644 index 0000000..9c48907 Binary files /dev/null and b/src/filebeat/filebeat-oss-7.12.1-amd64.deb differ diff --git a/src/filebeat/filebeat.yml b/src/filebeat/filebeat.yml new file mode 100644 index 0000000..8eb6a67 --- /dev/null +++ b/src/filebeat/filebeat.yml @@ -0,0 +1,36 @@ +logging.level: info +logging.to_files: true +logging.files: + path: /var/log/filebeat + name: filebeat + keepfiles: 7 + permissions: 0640 + +filebeat.inputs: +- type: log + enabled: true + paths: + - /var/log/opengnsys.log + +setup.template.settings: + index.number_of_shards: 1 + +output.elasticsearch: + hosts: ["oglog-os.mytld:9200"] + username: "admin" + password: "CorrectHorse_BatteryStaple1" + protocol: "https" + ssl.enabled: true + ssl.verification_mode: full + ssl.certificate: "/etc/filebeat/ogagent-fb.mytld.crt.pem" + ssl.key: "/etc/filebeat/ogagent-fb.mytld.key.pem" + +processors: + - add_host_metadata: + when.not.contains.tags: forwarded + - add_cloud_metadata: ~ + - add_docker_metadata: ~ + - add_kubernetes_metadata: ~ + +seccomp.enabled: false + diff --git a/src/filebeat/install_filebeat.sh b/src/filebeat/install_filebeat.sh new file mode 100644 index 0000000..5a85c75 --- /dev/null +++ b/src/filebeat/install_filebeat.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Install Filebeat package +echo "INSTALLING FILEBEAT" + +# Función para esperar a que el lock de dpkg esté libre +wait_for_dpkg_lock() { + while fuser /var/lib/dpkg/lock-frontend >/dev/null 2>&1 ; do + echo "Esperando a que el lock de dpkg se libere..." + sleep 5 + done +} + +# Esperar máximo 2 minutos hasta que dpkg esté listo +wait_for_dpkg_lock + + +dpkg -i --force-overwrite /usr/share/OGAgent/filebeat/filebeat-oss-7.12.1-amd64.deb + +# Copy certificates and configuration +cp /usr/share/OGAgent/filebeat/CA/ogagent-fb.mytld.crt.pem /etc/filebeat/ +cp /usr/share/OGAgent/filebeat/CA/ogagent-fb.mytld.key.pem /etc/filebeat/ +cp /usr/share/OGAgent/filebeat/CA/ca.crt.pem /etc/ssl/certs/ +cp /usr/share/OGAgent/filebeat/filebeat.yml /etc/filebeat/filebeat.yml + +# Add entry to /etc/hosts +oglog_ip="${OGAGENTCFG_OGLOG_IP:-192.168.2.1}" +echo "${oglog_ip} oglog-os.mytld" >> /etc/hosts + +# Start Filebeat +/usr/bin/filebeat --environment systemd -c /etc/filebeat/filebeat.yml --path.home /usr/share/filebeat --path.config /etc/filebeat --path.data /var/lib/filebeat --path.logs /var/log/filebeat & diff --git a/src/opengnsys/windows/log.py b/src/opengnsys/windows/log.py index ea875fd..ede628a 100644 --- a/src/opengnsys/windows/log.py +++ b/src/opengnsys/windows/log.py @@ -31,7 +31,11 @@ ''' from __future__ import unicode_literals -import servicemanager # @UnresolvedImport, pylint: disable=import-error +try: + import servicemanager # @UnresolvedImport, pylint: disable=import-error +except ImportError: + servicemanager = None # Definir como None para evitar errores posteriores + print("Warning: 'servicemanager' module not found. Continuing execution without it.") import logging import os import tempfile @@ -64,11 +68,22 @@ class LocalLogger(object): return if level < WARN: # Info - servicemanager.LogInfoMsg(message) + try: + servicemanager.LogInfoMsg(message) + except Exception as e: + print(f"⚠️ Warning: Failed to log info message: {message}. Error: {e}") + elif level < ERROR: # WARN - servicemanager.LogWarningMsg(message) + try: + servicemanager.LogWarningMsg(message) + except Exception as e: + print(f"⚠️ Warning: Failed to log warning message: {message}. Error: {e}") + else: # Error & Fatal - servicemanager.LogErrorMsg(message) + try: + servicemanager.LogErrorMsg(message) + except Exception as e: + print(f"⚠️ Warning: Failed to log error message: {message}. Error: {e}") def isWindows(self): return True