La seguridad de un servidor destinado a aplicaciones como OpenClaw no se basa únicamente en el software en sí, sino de manera fundamental en el endurecimiento del sistema operativo subyacente. Una instalación estándar de distribuciones de Linux como Debian o Ubuntu está diseñada principalmente para la compatibilidad y la facilidad de uso, no para una seguridad restrictiva. Esto resulta inicialmente en una superficie de ataque innecesariamente amplia.
La siguiente documentación describe los pasos necesarios para un endurecimiento básico sólido. Aunque el tema de la seguridad de servidores puede abarcar medidas mucho más complejas como la configuración de Mandatory Access Control o módulos de seguridad de hardware, en la práctica a menudo faltan mecanismos de protección fundamentales. Esta guía tiene como objetivo cerrar esa brecha y establecer un estándar de seguridad confiable. El objetivo es la reducción significativa de la superficie de ataque mediante el principio de mínimos privilegios, la desactivación de servicios innecesarios, el endurecimiento de la pila de red y la implementación de controles de acceso estrictos.
1. Conexión inicial y actualización del sistema
La primera conexión al sistema suele realizarse por el puerto SSH estándar (22) con el usuario root. Inmediatamente después de tomar posesión del sistema, es necesaria una actualización completa de las fuentes de paquetes y del software instalado para cerrar vulnerabilidades conocidas y establecer un estado de sistema coherente.
Establecimiento de conexión (lado cliente)
ssh -p 22 root@52.213.101.188
Actualización del sistema
El comando sudo apt update actualiza la base de datos local de paquetes de software disponibles y sus versiones. Esto es un requisito previo para que el sistema conozca los parches de seguridad. El comando sudo apt full-upgrade -y realiza la actualización real de todos los paquetes instalados a las versiones más recientes. A diferencia de un simple upgrade, full-upgrade también resuelve cambios complejos de dependencias instalando nuevos paquetes o eliminando los obsoletos cuando es necesario.
Con sudo apt autoremove –purge se eliminan los paquetes que originalmente se instalaron como dependencias de otro software pero que ya no son necesarios. El modificador –purge elimina además todos los archivos de configuración asociados. Esto minimiza la superficie de ataque del sistema, ya que el software innecesario y posibles restos de configuración inseguros se eliminan por completo del disco.
sudo apt update && apt full-upgrade -y
sudo apt autoremove --purge
sudo reboot
Configuración de actualizaciones automáticas de seguridad
Al activar unattended-upgrades, el sistema se configura para que descargue e instale en segundo plano parches de seguridad críticos sin intervención manual. Para el endurecimiento del sistema esto es imprescindible, ya que reduce al mínimo el lapso entre el descubrimiento de una vulnerabilidad y su corrección. De este modo, un sistema permanece protegido incluso si el administrador no puede intervenir manualmente de inmediato.
Además, esta herramienta garantiza que solo se obtienen actualizaciones de fuentes de seguridad confiables, lo que preserva la integridad del software instalado. Sin esta automatización corres el riesgo de que tu sistema sea vulnerable durante días o semanas a exploits conocidos por intervalos de mantenimiento olvidados.
dpkg-reconfigure -plow unattended-upgrades
La archivo /etc/apt/apt.conf.d/20auto-upgrades controla la automatización de tareas de mantenimiento del gestor de paquetes y es un componente central para el endurecimiento del sistema mediante parches oportunos.
vi /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
- APT::Periodic::Update-Package-Lists “1”; hace que el sistema sincronice diariamente las listas locales de paquetes disponibles con los repositorios. Sin esta información, el sistema no podría encontrar ni descargar nuevas actualizaciones de seguridad.
- APT::Periodic::Unattended-Upgrade “1”; activa la instalación automática diaria de actualizaciones de seguridad sin interacción del usuario. Esto es esencial para la seguridad, ya que reduce drásticamente el tiempo entre el descubrimiento de una vulnerabilidad y su corrección (Time-to-Patch).
- APT::Periodic::AutocleanInterval “7”; asegura que cada siete días se limpie la caché local de archivos de paquetes obsoletos que ya no se pueden descargar. Esto mantiene el sistema ligero y elimina datos innecesarios del disco.
El siguiente comando detiene los temporizadores de actualización de paquetes y de actualizaciones de seguridad y los inicia de inmediato, de modo que los cambios entren en vigor sin demora. Esta aplicación inmediata es fundamental para el endurecimiento del sistema, ya que garantiza la automatización continua de los parches de seguridad y minimiza la ventana de ataque.
sudo systemctl restart apt-daily.timer apt-daily-upgrade.timer
Además, se define que el sistema se reinicie automáticamente cuando sea necesario (por ejemplo, tras actualizaciones del kernel). Para controlar la disponibilidad, este reinicio se programa en una ventana de mantenimiento (04:00 horas).
El archivo 50unattended-upgrades controla las actualizaciones automáticas de seguridad. El número cincuenta determina el orden de carga en el directorio de configuración, mientras que el nombre describe la función de unattended-upgrades.
vi /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
2. Gestión de usuarios y configuración del editor
La desactivación del inicio de sesión directo para root es una medida de seguridad fundamental, ya que esta cuenta es el principal objetivo de los atacantes. Antes de desactivarla, es imprescindible crear un nuevo usuario, por ejemplo aaron, para garantizar el acceso al sistema. El comando adduser crea la cuenta, mientras que usermod agrega el usuario a un grupo con privilegios elevados. Solo después de verificar que el nuevo usuario puede iniciar sesión y usar vi sin problemas, se bloquea el acceso directo de root en la configuración de SSH.
sudo adduser aaron
sudo usermod -aG sudo aaron
# OpenClaw Benutzer ohne root Rechte
sudo adduser openclaw
Después de la creación, se realiza una prueba de cambio de usuario para verificar la funcionalidad:
su - aaron
sudo -s
su - openclaw
Prueba de inicio de sesión del nuevo usuario:
ssh -p 22 aaron@52.213.101.188
sudo -s
Endurecimiento del servicio SSH
El servicio SSH es el punto de acceso principal para la administración. En este paso se protege completamente: se cambia el puerto, se prohíbe el inicio de sesión de root y se desactivan opciones de túnel.
Ajuste del archivo de configuración
El archivo /etc/ssh/sshd_config define las reglas de seguridad globales para el demonio SSH y debe editarse con privilegios de root.
sudo vi /etc/ssh/sshd_config
# Port auf einen High-Port ändern (Security through Obscurity)
# Die Verlegung des Dienstes auf Port 40000 bietet keine echte Sicherheit gegen gezielte Angriffe da automatisierte Werkzeuge den offenen Dienst schnell finden können. Diese Maßnahme dient primär der Reduzierung des Grundrauschens in den Protokolldateien da die meisten einfachen Skripte nur Standardports abfragen. Durch die geringere Anzahl an automatisierten Anmeldeversuchen bleiben die Systemprotokolle deutlich übersichtlicher was die Analyse echter Sicherheitsvorfälle erleichtert.
Port 40000
# Mit PermitRootLogin no wird der direkte Zugang für das root Konto vollständig unterbunden was eine Anmeldung über einen normalen Benutzer z.B. aaron erzwingt.
PermitRootLogin no
# Die Anweisung AllowUsers aaron erstellt eine Whitelist die den Zugriff exklusiv auf diesen einen Namen einschränkt.
AllowUsers aaron
# Brute-Force-Schutz härten
# MaxAuthTries 3 begrenzt die erlaubten Fehlversuche bei der Passworteingabe pro Verbindung während MaxSessions 2 die Anzahl der parallelen Sitzungen limitiert.
MaxAuthTries 3
MaxSessions 2
# ClientAliveCountMax 2 legt die maximale Anzahl an Prüfsignalen fest die der Server ohne Rückmeldung an den fernen Teilnehmer sendet bevor die Verbindung automatisch beendet wird. Dieser Wert arbeitet zusammen mit dem Zeitabstand für solche Abfragen. Wenn auf eine gesendete Abfrage keine Antwort erfolgt wird ein interner Zähler erhöht. Erreicht dieser Zähler den Wert 2 wird die Sitzung sofort getrennt. Das dient dazu das System vor verwaisten Verbindungen zu schützen die keine Aktivität mehr aufweisen aber dennoch Ressourcen verbrauchen oder ein Sicherheitsrisiko darstellen könnten. Durch diese Einstellung wird sichergestellt dass blockierte oder vergessene Sitzungen nicht dauerhaft bestehen bleiben.
ClientAliveCountMax 2
# Diese Parameter deaktivieren Funktionen für Datentunnel oder grafische Oberflächen um die Angriffsfläche des Systems zu minimieren.
TCPKeepAlive no
AllowTcpForwarding no
X11Forwarding no
# Logging erhöhen
LogLevel VERBOSE
El acceso SSH debe cambiarse por completo a autenticación basada en clave pública tras la configuración básica. Para ello se activan los siguientes parámetros. Esta configuración impide cualquier tipo de inicio de sesión basado en contraseña y reduce la superficie de ataque a claves criptográficas seguras.
PasswordAuthentication no
ChallengeResponseAuthentication no
Ajuste del socket de systemd
Dado que hemos cambiado manualmente el puerto SSH a 40000, también hay que ajustar el puerto del socket en la configuración de systemd, ya que este actúa como punto de entrada primario para el tráfico de red. Si el socket no se actualiza a 40000, el sistema no reconocerá el tráfico entrante como SSH y bloqueará el acceso aunque el servicio ya esté configurado correctamente.
sudo EDITOR=vi systemctl edit ssh.socket
# Die leere ListenStream= Direktive ist notwendig, um die Standardkonfiguration zu löschen.
# Die leere Zuweisung ListenStream= fungiert in diesem Kontext als Reset-Befehl. Ohne diese Zeile würde der SSH-Socket weiterhin auf dem Standardport 22 lauschen und den Port 40000 lediglich als zusätzliche Option hinzufügen.
[Socket]
ListenStream=
ListenStream=40000
Reinicio de los servicios
La configuración se comprueba y los servicios se reinician para aplicar los cambios.
# Die Überprüfung der Konfiguration mit dem Testbefehl stellt sicher dass keine Syntaxfehler vorliegen die den Dienst am Starten hindern könnten.
sshd -t
# Danach wird die Systemverwaltung angewiesen die Konfigurationseinheiten neu einzulesen damit die manuellen Änderungen am Socket vom System erkannt werden.
systemctl daemon-reload
# Der Neustart des Sockets aktiviert die Überwachung von Port 40000 für eingehende Anfragen während der Neustart des Dienstes die gesamte Umstellung finalisiert.
systemctl restart ssh.socket
systemctl restart ssh.service
Verificación
El acceso ahora se realiza a través del nuevo puerto y usuario:
ssh -p 40000 aaron@52.213.101.188
Anteriormente usábamos:
ssh -p 22 root@52.213.101.188
4. Configuración del cortafuegos (UFW)
Un cortafuegos actúa como una muralla digital que filtra todos los paquetes de datos según reglas estrictas y rechaza intentos de acceso no autorizados. Al aplicar una estrategia de lista blanca, solo los servicios explícitamente permitidos pueden comunicarse, mientras que todos los demás puertos permanecen invisibles. El cortafuegos regula el tráfico y aplica el principio Default Deny. Es importante permitir primero el nuevo puerto SSH 40000 antes de activar el cortafuegos, de lo contrario se bloqueará inmediatamente el acceso remoto administrativo. Solo después de verificar todas las reglas se debe activar la protección para evitar quedar fuera del sistema.
# Standard-Richtlinien setzen
ufw default deny outgoing
ufw default deny incoming
# SSH auf neuem Port erlauben
ufw allow in 40000/tcp
ufw allow out 40000/tcp
# Webserver-Traffic erlauben
ufw allow in 80/tcp
ufw allow out 80/tcp
ufw allow in 443/tcp
ufw allow out 443/tcp
# DNS und NTP ausgehend erlauben
ufw allow out 53/udp
ufw allow out 53/tcp
ufw allow out 123/udp
Activación y verificación de reglas:
# Listet alle Regeln auf die dem System bereits hinzugefügt wurden selbst wenn diese im aktuellen Moment noch nicht aktiv geschaltet sind.
sudo ufw show added
# Filterdienst wird gestartet und der Schutzmechanismus fest im Betriebssystem verankert damit er bei jedem zukünftigen Systemstart automatisch geladen wird.
sudo ufw enable
# Gibt eine Übersicht aller derzeit aktiven Regeln aus und versieht jede einzelne Zeile mit einer fortlaufenden Nummer was die gezielte Bearbeitung oder das Löschen einzelner Einträge erheblich vereinfacht.
sudo ufw status numbered
# Durch ufw reload wird das gesamte Regelwerk neu eingelesen um aktuelle Änderungen sofort wirksam zu machen ohne dabei laufende Netzwerkverbindungen zu unterbrechen.
sudo ufw reload
# Liefert einen umfassenden Bericht über den gesamten Betriebszustand inklusive der grundlegenden Sicherheitsvorgaben für den ein und ausgehenden Datenverkehr sowie der aktuell eingestellten Protokollierungstiefe.
ufw status verbose
5. Prevención de intrusiones con Fail2Ban
Fail2Ban actúa como un mecanismo de protección automatizado que examina continuamente los registros del sistema en busca de indicios de ataques de fuerza bruta u otros patrones maliciosos. Al bloquear inmediatamente las direcciones IP de los atacantes, se minimiza drásticamente la superficie de ataque del servidor y se preserva la estabilidad del sistema frente a botnets automatizados. Este servicio es indispensable para ahogar en seco los intentos persistentes de descifrar contraseñas antes de que puedan causar daños significativos o sobrecargar los recursos del sistema. Dado que el servicio interactúa directamente con el cortafuegos, garantiza que las amenazas detectadas sean bloqueadas de inmediato sin necesidad de supervisión manual.
Instalación
sudo apt install fail2ban -y
Configuración
Creación de un archivo de configuración local jail.local.
El archivo jail.local es una copia para reglas propias, de modo que los ajustes personalizados no se eliminen en una actualización.
sudo vi /etc/fail2ban/jail.local
[DEFAULT]
# Die Zeile bantime 24h legt fest dass eine blockierte IP Adresse für genau eine 24h Stunden keine Verbindung zum Server herstellen darf.
bantime = 24h
# Der Parameter findtime = 100m definiert das Zeitfenster, innerhalb dessen die Fehlversuche gezählt werden. Fail2Ban betrachtet dabei immer ein gleitendes Fenster der letzten 10 Minuten ab dem aktuellsten Ereignis.
findtime = 100m
# Nur wenn die Anzahl der Fehlversuche (maxretry) innerhalb dieses spezifischen Zeitraums erreicht wird, wird die IP-Adresse gesperrt.
maxretry = 3
[sshd]
# Aktiviert den Schutz
enabled = true
# Definiert den Port auf dem der Dienst lauscht (muss mit sshd_config übereinstimmen)
port = 40000
# Verweist auf die Filterdatei mit den Suchmustern für SSH Angriffe
filter = sshd
# Pfad zur Protokolldatei in der Anmeldeversuche aufgezeichnet werden
logpath = /var/log/auth.log
# Nutzt das moderne Systemprotokoll zum effizienten Auslesen der Daten
backend = systemd
Activar el servicio y verificar el estado
# Sorgt dafür dass der Dienst bei jedem Bootvorgang automatisch startet damit der Schutz ohne manuelle Eingriffe immer aktiv bleibt.
sudo systemctl enable fail2ban
# Neustart, um alle Änderungen an der Konfiguration wie den neuen Port 40000 oder die Sperrdauer in das laufende System zu übernehmen.
sudo systemctl restart fail2ban
# Zeigt den aktuellen Zustand des Filters sowie eine Liste aller momentan blockierten Teilnehmer und die Anzahl der registrierten Angriffsversuche an.
sudo fail2ban-client status sshd
6. Endurecimiento del kernel y del sistema
El kernel es el núcleo del sistema operativo y asume el control completo de la comunicación entre el hardware y las aplicaciones en ejecución. Gestiona el acceso al procesador y a la memoria y asigna a cada proceso los recursos necesarios para que el sistema permanezca estable. Como intermediario, se asegura de que las órdenes de software se conviertan en acciones físicas del hardware sin que los programas accedan directamente a componentes sensibles. Por lo tanto, es responsable de la seguridad y la coordinación de todas las operaciones dentro de tu máquina.
En esta sección se ajustarán parámetros del kernel, se reforzarán permisos de archivos e instalará un escáner de rootkits.
Parámetros del kernel (Sysctl)
Los parámetros del kernel, también conocidos como Sysctl, son elementos de configuración en el sistema operativo en ejecución que controlan y pueden influir directamente en el comportamiento del kernel. A través de estas variables se pueden activar funciones de seguridad profundas o ajustar protocolos de red sin reiniciar el sistema.
Instalación de herramientas necesarias:
sudo apt update && apt install auditd debsums apt-listchanges libpam-tmpdir -y
- auditd registra detalladamente todos los eventos de seguridad del sistema para su análisis posterior.
- Con debsums se verifica la integridad de los paquetes de software comparando cada archivo con su huella original para detectar manipulaciones.
- La componente apt-listchanges muestra antes de cada actualización una lista de novedades y correcciones para que los cambios en el sistema sean más rastreables.
- libpam-tmpdir garantiza que cada usuario disponga de un directorio temporal privado, lo que impide el acceso no autorizado a datos intermedios sensibles.
Creación de la configuración de endurecimiento
En este archivo se almacenan permanentemente ajustes de seguridad para el kernel que se cargarán automáticamente en cada inicio, con el fin de reducir eficazmente la superficie de ataque de la máquina.
sudo vi /etc/sysctl.d/99-hardening.conf
# Keine Speicherabbilder für Dienste: Ein Absturz von SSH hinterlässt kein Passwort im Speicherprotokoll.
fs.suid_dumpable = 0
# Versteckt Kerneladressen: Ein Angreifer sieht nicht wo genau im Speicher eine Funktion liegt die er ausnutzen will.
kernel.kptr_restrict = 2
# Härtet den Programmübersetzer: Schadcode kann nicht über den Netzwerkfilter in den Kernel eingeschleust werden.
net.core.bpf_jit_harden = 2
# Sperrt BPF für normale Nutzer: Ein einfacher Benutzer kann keine fremden Datenpakete auf dem Server mitlesen.
kernel.unprivileged_bpf_disabled = 1
# Protokolliert ungültige Pakete: Ein Paket von einer internen Adresse das von außen kommt wird als Bedrohung gemeldet.
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
# Verbietet Umleitungen: Ein fremder Rechner kann deinen Server nicht anweisen Daten über einen unsicheren Umweg zu schicken.
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# Keine Routenvorgabe durch Pakete: Ein Paket kann nicht selbst bestimmen welchen Weg es durch das Netz nimmt um Filter zu umgehen.
net.ipv4.conf.default.accept_source_route = 0
Instalación de Lynis
Lynis es una herramienta especializada para realizar auditorías de seguridad en sistemas Unix. Se instala para evaluar objetivamente la seguridad del servidor y alcanzar, con optimizaciones dirigidas, un nivel de endurecimiento de alrededor de 80. Este alto valor sirve de referencia para un entorno profesionalmente asegurado contra numerosas amenazas digitales.
# Installation
sudo apt install lynis
# Audit starten
sudo lynis audit system
Para aumentar aún más la seguridad del sistema, en el siguiente paso se crea un archivo de configuración adicional para parámetros del kernel. Estas opciones se basan en las recomendaciones de la auditoría de Lynis y buscan minimizar posibles superficies de ataque a nivel de kernel.
sudo vi /etc/sysctl.d/99-lynis-hardening.conf
# Diese Einstellung sorgt dafür, dass die Prozess-ID (PID) an den Namen der Core-Dumps angehängt wird. Dies erleichtert die Zuordnung von Fehlern und verhindert das einfache Überschreiben älterer Berichte.
kernel.core_uses_pid = 1
# Hiermit wird der „Reverse Path Filter“ aktiviert. Das System prüft dabei, ob eingehende Pakete über die plausible Schnittstelle ankommen, über die auch die Antwort gesendet würde. Dies ist ein wichtiger Schutz gegen IP-Spoofing.
net.ipv4.conf.all.rp_filter = 1
# Diese Zeile wendet die Filterregel für den Rückpfad als Standardwert auf alle Netzwerkschnittstellen des Systems an.
net.ipv4.conf.default.rp_filter = 1
# Diese Option deaktiviert die sogenannten „Magic SysRq“-Tastenkombinationen. Damit wird verhindert, dass Personen mit physischem Zugriff auf den Server kritische Befehle direkt über die Tastatur auslösen können.
kernel.sysrq = 0
Se cargan los archivos de configuración y los parámetros definidos se aplican al kernel en ejecución sin necesidad de reiniciar el sistema.
sudo sysctl -p /etc/sysctl.d/99-hardening.conf
sudo sysctl -p /etc/sysctl.d/99-lynis-hardening.conf
Permisos de archivos y limpieza de servicios
El riesgo con programaciones automáticas radica en la posible inyección de comandos que luego se ejecutan con altos privilegios en segundo plano. Con los siguientes pasos, se protegerá el acceso a directorios sensibles y la configuración de acceso remoto, de modo que solo un usuario con privilegios pueda acceder.
# Cron und Systemdateien schützen
sudo chmod 600 /etc/crontab
sudo chmod 700 /etc/cron.d
sudo chmod 700 /etc/cron.daily
sudo chmod 700 /etc/cron.hourly
sudo chmod 700 /etc/cron.weekly
sudo chmod 700 /etc/cron.monthly
sudo chmod 600 /etc/at.deny
sudo chmod 600 /etc/ssh/sshd_config
# Die Einschränkung von Werkzeugen zur Programmerstellung wie Compilern erschwert es Angreifern erheblich eigene Schadsoftware direkt auf dem Zielsystem zu bauen und auszuführen.
sudo chmod 700 /usr/bin/gcc
sudo chmod 700 /usr/bin/make
# Das restlose Entfernen veralteter Dienste wie Telnet beseitigt zudem bekannte Sicherheitslücken die durch eine unverschlüsselte Übertragung von Daten entstehen würden.
sudo apt purge rsh-client rsh-redone-client telnet -y
Banner del sistema y protección legal
Los banners personalizados minimizan el riesgo de revelar información sobre las características internas del sistema, privando a posibles atacantes de pistas valiosas para ataques dirigidos. Estas advertencias explícitas también constituyen la base legal para una futura acción judicial al dejar claro que el acceso está reservado a personas autorizadas. Al mencionar la vigilancia activa de todas las actividades, se ejerce un efecto disuasorio que alerta a los usuarios no autorizados de las consecuencias de sus acciones desde el mismo inicio de la conexión.
# Zeigt den Warntext bei einer lokalen Anmeldung direkt an der Konsole an
sudo vi /etc/issue
# Stellt den Rechtstext für Anmeldeversuche über das Netzwerk bereit
sudo vi /etc/issue.net
*****************************************************************************
AUTHORIZED USERS ONLY.
This system is restricted to authorized users for business purposes only.
All activities on this system are logged and monitored. Unauthorized
access or use is strictly prohibited and may be subject to criminal
and/or civil penalties. By continuing, you consent to these terms.
*****************************************************************************
Endurecimiento de Postfix
Muchas distribuciones populares como Debian u Ubuntu instalan durante la configuración básica un agente de transferencia de correo (MTA). Esto se hace sobre todo para que el sistema pueda enviar notificaciones de estado o alertas de servicios en segundo plano a la administración local.
Si Postfix está instalado, se oculta información.
sudo postconf -e "smtpd_banner = \$myhostname ESMTP"
sudo postconf -e "disable_vrfy_command = yes"
sudo systemctl restart postfix
7. Uso de Rootkit Hunter (rkhunter)
Rootkit Hunter es una herramienta de diagnóstico especializada que inspecciona todo el entorno de software en busca de programas maliciosos ocultos o puertas traseras. Al comparar las huellas digitales de los archivos del sistema con una base de datos de referencia segura, se detectan de inmediato cambios sospechosos en la integridad del sistema operativo. La ejecución regular de estas comprobaciones es un pilar esencial para la detección de métodos de ataque avanzados que puedan haberse incrustado profundamente en el sistema.
Instalación
sudo apt install rkhunter -y
Configuración
sudo vi /etc/rkhunter.conf
UPDATE_MIRRORS=1
MIRRORS_MODE=0
WEB_CMD=/usr/bin/wget
sudo /etc/default/rkhunter
# Diese Einstellung sorgt für die tägliche und selbstständige Durchführung einer vollständigen Systemüberprüfung im Hintergrund. Damit wird sichergestellt dass potenzielle Manipulationen an Dateien zeitnah erkannt werden ohne dass ein manueller Start durch einen privilegierten Nutzer erforderlich ist.
CRON_DAILY_RUN="true"
# Mit dieser Option wird die regelmäßige Aktualisierung der internen Datenbank für Dateieigenschaften und Signaturen aktiviert. Dies ist entscheidend um die Erkennungsrate gegen neue Bedrohungen hoch zu halten da veraltete Informationen die Schutzwirkung des Programms erheblich mindern würden.
CRON_DB_UPDATE="true"
# Diese Zeile bewirkt die automatische Erneuerung der Dateireferenzen sobald Software über die Paketverwaltung des Systems installiert oder aktualisiert wird. Durch diesen Abgleich werden Fehlalarme vermieden die sonst entstehen würden wenn rechtmäßige Programmänderungen als unbefugte Eingriffe missverstanden werden.
APT_AUTOGEN="true"
Comprobación del sistema manualmente:
# Dieser Befehl dient der Aktualisierung der internen Datenbanken des Programms. Er lädt die neuesten Signaturen und Informationen über bekannte Rootkits, Backdoors und andere bösartige Software von den offiziellen Servern herunter, um die Erkennungsrate des Systems auf dem aktuellen Stand zu halten.
sudo rkhunter --update
# Mit dieser Anweisung wird ein sogenanntes „Property Update“ durchgeführt. Das Programm analysiert die aktuellen Dateieigenschaften (wie etwa Dateigröße oder Hash-Werte) der wichtigen Systemdateien und speichert diese als vertrauenswürdige Basislinie in einer Datenbank. Dies ist notwendig, damit das Tool bei künftigen Prüfungen feststellen kann, ob Dateien unbefugt verändert wurden. Dieser Schritt sollte immer nach einer gewollten Systemaktualisierung oder Softwareinstallation ausgeführt werden, um Fehlalarme zu vermeiden.
sudo rkhunter --propupd
# Dies ist der eigentliche Prüfbefehl, der den Scanvorgang startet. Das Werkzeug vergleicht die laufenden Prozesse und Dateien des Systems mit der zuvor erstellten Datenbank sowie den aktuellen Signaturen. Dabei wird nach verdächtigen Verzeichnissen, versteckten Dateien und bekannten Anzeichen für eine Kompromittierung des Kernels oder der Systemanwendungen gesucht.
sudo rkhunter --check
8. Framework de auditoría
El Linux Audit Framework es una herramienta potente para la supervisión del sistema originalmente desarrollada por Red Hat y ahora incluida en casi todas las distribuciones como parte integral del kernel. Su uso es tan importante porque permite un registro exhaustivo e inmutable de todos los eventos de seguridad, mucho más allá de los archivos de registro normales. Ayuda a cumplir con estrictas políticas de seguridad de los datos y permite, en caso de incidente, un análisis forense preciso de cada acción en el sistema. Gracias a su integración directa en el núcleo del sistema operativo, incluso los procesos con altos privilegios pueden ser supervisados totalmente, lo que aumenta enormemente la transparencia y la seguridad del entorno.
Instalación
sudo apt install auditd audispd-plugins
Este archivo actúa como la instancia central para la definición de reglas de auditoría dentro del framework. En él se especifica con precisión qué eventos del sistema, accesos a archivos o acciones administrativas deben ser capturados y registrados permanentemente por el kernel.
sudo vi /etc/audit/rules.d/audit.rules
# Zeichnet auf wenn Benutzergruppen erstellt oder in ihren Berechtigungen verändert werden.
-w /etc/group -p wa -k identity
# Überwacht die zentrale Datei für Nutzerinformationen um Manipulationen an Konten zu erkenne
-w /etc/passwd -p wa -k identity
# Protokolliert Zugriffe auf die verschlüsselten Passwörter was für die Erkennung von Diebstahlsversuchen kritisch ist.
-w /etc/shadow -p wa -k identity
# Jede Änderung an den Befugnissen für die Ausführung von Befehlen mit erweiterten Rechten wird festgehalten.
-w /etc/sudoers -p wa -k identity
# Verhindert dass die Identität des Systems im Netzwerk unbemerkt modifiziert wird.
-w /etc/hostname -p wa -k system-locale
# Stellt sicher dass Änderungen an Schnittstellen oder Routingtabellen nachvollziehbar bleiben.
-w /etc/network -p wa -k system-locale
# Überwacht die Datei welche die Informationen über die jeweils letzten Anmeldungen der Nutzer speichert.
-w /var/log/lastlog -p wa -k logins
# Registriert Ereignisse die mit fehlgeschlagenen Anmeldeversuchen und daraus resultierenden Sperrungen zusammenhängen.
-w /var/run/faillock -p wa -k logins
# Diese Anweisung bewirkt dass auf Systemen mit einer Architektur von 64 Bit jeder einzelne Start eines Programms lückenlos aufgezeichnet wird. Der Systemaufruf namens execve ist für das Ausführen von Anwendungen zuständig und wird hierbei bei jedem Beenden des Vorgangs protokolliert. Dies ermöglicht es der administrativen Ebene genau zu rekonstruieren welcher Nutzer zu welchem Zeitpunkt welchen Befehl auf der Konsole gestartet hat. Selbst wenn ein Nutzer wie z.B. aaron versucht Spuren zu verwischen bleiben diese Aktionen im Audit Protokoll dauerhaft gespeichert.
-a always,exit -F arch=b64 -S execve -k command-execution
Cargar reglas
# Dieser Befehl wird verwendet, um die Audit-Regeln aus den Konfigurationsdateien (normalerweise unter /etc/audit/rules.d/) zu kompilieren und direkt in den laufenden Kernel zu laden. Dadurch werden Änderungen am Regelwerk sofort wirksam, ohne dass ein Neustart des Dienstes oder des Systems erforderlich ist.
sudo augenrules --load
# Listet alle aktuell im Kernel geladenen Audit-Regeln auf. Dies ermöglicht eine direkte Kontrolle darüber, ob die gewünschten Überwachungsregeln erfolgreich aktiviert wurden und welche Systemereignisse momentan vom Kernel protokolliert werden.
sudo auditctl -l
