initial commit

Signed-off-by: ale <ale@manalejandro.com>
Este commit está contenido en:
ale
2025-09-20 19:00:44 +02:00
commit c8e3ccb07f
Se han modificado 14 ficheros con 1173 adiciones y 0 borrados

56
docker/csf-start.sh Archivo normal
Ver fichero

@@ -0,0 +1,56 @@
#!/bin/bash
# Script de inicio para CSF en contenedor Docker
set -e
echo "Iniciando ConfigServer Security & Firewall (CSF)..."
# Verificar que los archivos de configuración existen
if [ ! -f /etc/csf/csf.conf ]; then
echo "Error: Archivo de configuración CSF no encontrado"
exit 1
fi
# Crear directorios de log si no existen
mkdir -p /var/log/lfd
mkdir -p /var/lib/csf
# Verificar y corregir permisos
chmod 600 /etc/csf/csf.conf
chmod 600 /etc/csf/csf.allow
chmod 600 /etc/csf/csf.deny
chmod 755 /usr/local/csf/bin/csf
chmod 755 /usr/local/csf/bin/lfd
# Inicializar iptables si es necesario
if ! iptables -L > /dev/null 2>&1; then
echo "Inicializando iptables..."
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
fi
# Verificar configuración CSF
echo "Verificando configuración CSF..."
if ! /usr/local/csf/bin/csf --check; then
echo "Advertencia: Verificación de CSF falló, continuando de todos modos..."
fi
# Iniciar CSF
echo "Iniciando CSF..."
/usr/local/csf/bin/csf --start
# Verificar estado
if /usr/local/csf/bin/csf --status > /dev/null 2>&1; then
echo "CSF iniciado correctamente"
else
echo "Error: CSF no pudo iniciarse correctamente"
exit 1
fi
echo "CSF está ejecutándose"

83
docker/entrypoint.sh Archivo normal
Ver fichero

@@ -0,0 +1,83 @@
#!/bin/bash
# Entrypoint para el contenedor CSF
set -e
# Función para manejo de señales
cleanup() {
echo "Recibida señal de terminación..."
# Detener CSF de forma controlada
if [ -x /usr/local/csf/bin/csf ]; then
echo "Deteniendo CSF..."
/usr/local/csf/bin/csf --stop || true
fi
# Detener LFD si está ejecutándose
if pidof lfd > /dev/null; then
echo "Deteniendo LFD..."
killall lfd || true
fi
# Detener rsyslog
if pidof rsyslogd > /dev/null; then
echo "Deteniendo rsyslog..."
killall rsyslogd || true
fi
echo "Limpieza completada"
exit 0
}
# Configurar manejo de señales
trap cleanup SIGTERM SIGINT
# Iniciar rsyslog en background
echo "Iniciando rsyslog..."
rsyslogd &
# Esperar un momento para que rsyslog se inicie
sleep 2
# Verificar capacidades necesarias
if [ ! -w /proc/sys/net/ipv4/ip_forward ]; then
echo "Advertencia: No se pueden modificar configuraciones de red del kernel"
echo "Asegúrese de ejecutar el contenedor con --privileged o las capacidades necesarias"
fi
case "$1" in
csf)
echo "Iniciando CSF en modo contenedor..."
# Ejecutar script de inicio de CSF
/usr/local/bin/csf-start.sh
# Mantener el contenedor ejecutándose
echo "CSF iniciado. Manteniendo contenedor activo..."
# Loop infinito para mantener el contenedor vivo
while true; do
# Verificar cada 30 segundos que CSF sigue ejecutándose
if ! /usr/local/csf/bin/csf --status > /dev/null 2>&1; then
echo "CSF no está ejecutándose. Reintentando inicio..."
/usr/local/bin/csf-start.sh || {
echo "Error: No se pudo reiniciar CSF"
cleanup
exit 1
}
fi
sleep 30
done
;;
bash|sh)
echo "Iniciando shell interactivo..."
exec /bin/bash
;;
*)
echo "Ejecutando comando personalizado: $@"
exec "$@"
;;
esac