56
docker/csf-start.sh
Archivo normal
56
docker/csf-start.sh
Archivo normal
@@ -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
83
docker/entrypoint.sh
Archivo normal
@@ -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
|
||||
Referencia en una nueva incidencia
Block a user