tarian es una herramienta para proteger sus aplicaciones que se ejecutan en Kubernetes de ataques maliciosos mediante el registro previo de sus procesos confiables y firmas de archivos confiables. Tarian detectará procesos desconocidos y cambios en los archivos registrados, luego enviará alertas y tomará una acción automatizada. Guarde su ¡Entorno K8s de Ransomware!
Queremos mantener esto como un proyecto de código abierto para luchar contra los ataques a nuestro ecosistema favorito de Kubernetes. Mediante una contribución continua, podemos luchar contra las amenazas juntos como comunidad.
¿Cómo funciona Tarian?
Tarian Cluster Agent se ejecuta en el clúster de Kubernetes detectando procesos desconocidos y cambios desconocidos en los archivos, los informa al servidor Tarian y, opcionalmente, toma medidas: elimina el pod violado. Aprovecha Falco con una regla personalizada para detectar nuevos procesos ejecutados. Para la detección de cambios de archivos, Tarian Cluster Agent inyecta un contenedor sidecar en el pod de su aplicación principal que verificará las sumas de verificación de archivos en la ruta configurada y las comparará con las sumas de verificación registradas en Tarian Server. Tarian será parte del pod de su aplicación desde el entorno de desarrollo hasta el de producción, por lo tanto, puede regístrese en su base de datos de Tarian lo que se supone que debe estar sucediendo y ejecutándose en su contenedor + firmas de archivos para ser observados + lo que se puede notificar + acción a tomar (autodestruir el pod) en función de los cambios detectados. ¡Cambie a la izquierda su mecanismo de detección!
¿Qué sucede si ocurre un cambio desconocido dentro del contenedor que no está en la base de datos de registro de Tarian? ¿Cómo reacciona Tarian?
Si ocurre un cambio desconocido, Tarian puede simplemente notificar el análisis observado a su equipo de seguridad. Luego, sus ingenieros de seguridad pueden registrar ese cambio en la base de datos de Tarian, ya sea que se considere una amenaza o no. Además, en función de su análisis, pueden configurar qué acción tomar cuando ese cambio vuelve a ocurrir.
¿Cómo ayuda la contribución de la comunidad a luchar contra las amenazas a través de Tarian?
Cualquier nueva detección analizada y marcada como una amenaza por sus expertos en seguridad, si así lo desean, se puede compartir con la base de datos de la comunidad Tarian de código abierto con todos los registros, cadenas para buscar, observación, transparencia, acciones para configurar, … Básicamente cualquier cosa los expertos quieren advertir y compartir con la comunidad. Puede usar esa información como usuario de Tarian y configurar acciones en la aplicación Tarian que se usa en su entorno. Este es básicamente un mecanismo para compartir información sobre amenazas y qué hacer con Esto ayuda a todos los usuarios de Tarian a tomar acciones juntos en sus respectivos entornos K8 al compartir su conocimiento y experiencia.
¿Qué tipo de acción(es) tomaría Tarian en función de las amenazas conocidas?
Tarian simplemente destruiría el pod en el que se está ejecutando. Si el malware/virus se propaga al resto del entorno, ya sabes lo que sucede. Por lo tanto, Tarian está diseñado básicamente para ayudar a reducir el riesgo tanto como sea posible mediante la destrucción de los pods. el despliegue de K8 se encargará de un nuevo pod. Tarian solo destruirá los pods solo si le dices a Tarian que lo haga. Si no desea que ocurra ninguna acción, no tiene que configurar o activar ninguna Simplemente puede decirle a Tarian que solo le notifique Tarian básicamente hace lo que usted quiere que se haga para reducir el riesgo.
¿Por qué otra nueva herramienta de seguridad cuando ya hay muchas herramientas disponibles, como Falco, Kube-Hunter, Kube-Bench, Calico Enterprise Security y muchas más herramientas de seguridad (de código abierto y comerciales) que pueden detectar y prevenir amenazas en la red, infraestructura? y nivel de aplicación ¿Por qué Tarian?
La razón principal por la que nació Tarian es para luchar contra las amenazas en Kubernetes juntos como comunidad. Otra razón fue, ¿y si todavía hay algún ataque sofisticado que es capaz de penetrar cada capa de su seguridad, capaz de llegar a su aplicación de tiempo de ejecución (Código remoto Execution) y sus volúmenes de almacenamiento, y capaz de propagarse para dañar o bloquear su infraestructura y datos?! ¿Qué quiere hacer con tales ataques, especialmente los que se convierten en ransomware? Tarian está diseñado para reducir tales riesgos, tomando medidas ). Sabemos que Tarian no es la solución definitiva, pero confiamos en que puede ayudar a reducir los riesgos, especialmente cuando la comunidad comparte continuamente el conocimiento. Desde una perspectiva técnica, Tarian puede ayudar a reducir el riesgo destruyendo los recursos infectados.
requisitos previos
Un clúster de kubernetes que admite la ejecución de Falco
kubectl crear espacio de nombres tarian-system
kubectl crear espacio de nombres falco
Instale Falco con reglas personalizadas de Tarian
Guarda esto en falco-values.yaml
falcosidekick:
habilitado: verdadero
configuración:
webhook:
dirección: http://tarian-cluster-agent.tarian-system.svc:8088
Luego instale Falco usando Helm:
helm repo agregar falcosecurity https://falcosecurity.github.io/charts
actualización del repositorio de timón
actualización de timón -i falco falcosecurity/falco -n falco -f falco-values.yaml \
–set-file customRules.»tarian_rules.yaml»=https://raw.githubusercontent.com/kube-tarian/tarian/main/dev/falco/tarian_rules.yaml
En GKE, falco usa ebpf, por lo que deberá agregar
–establecer ebpf.habilitado=verdadero
Configurar una base de datos Postgresql
Puede usar una base de datos como un servicio de sus servicios en la nube o también puede ejecutarla usted mismo en el clúster. Por ejemplo, para instalar la base de datos en el clúster, ejecute:
timón repositorio agregar bitnami https://charts.bitnami.com/bitnami
timón instalar tarian-postgresql bitnami/postgresql -n tarian-system \
–set postgresqlNombre de usuario=postgres \
–set postgresqlContraseña=tarian \
–establecer postgresqlDatabase=tarian
Instalar Tarian
- Instalar tarian usando Helm
timón repo agregar tarian https://kube-tarian.github.io/tarian
actualización del repositorio de timón
helm upgrade -i tarian-server tarian/tarian-server –devel -n tarian-system
helm upgrade -i tarian-cluster-agent tarian/tarian-cluster-agent –devel -n tarian-system
- Espera a que todos los pods estén listos
kubectl wait –for=condition=ready pod –all -n tarian-system
- Ejecute la migración de la base de datos para crear las tablas requeridas
kubectl exec -ti deployment/tarian-server -n tarian-system — ./tarian-server db migrar
Después del paso anterior, debería ver una alerta de falco en los eventos de obtención de tarianctl (consulte las siguientes secciones de uso).
Configuración
Consulte los valores del gráfico de timón para
- tarian-servidor
- tarian-cluster-agente
Configuración específica de nube/proveedor
El clúster privado de GKE crea reglas de firewall de forma predeterminada para restringir la comunicación entre el maestro y los nodos solo en los puertos. 443
y 10250
Para inyectar el contenedor tarian-pod-agent, tarian utiliza un webhook de admisión mutante. El servidor webhook se ejecuta en el puerto 9443
Por lo tanto, necesitamos crear una nueva regla de firewall para permitir el ingreso desde el rango de direcciones IP maestras a los nodos en el puerto tcp 9443.
Uso
Usa tarianctl para controlar el servidor tarian
- Descargar desde la página de lanzamiento de Github
- Extrae el archivo y copia tarianctl a tu directorio PATH
- Exponga tarian-server a su máquina, a través de Ingress o port-forward.Para este ejemplo, usaremos port-forward:
kubectl port-forward svc/tarian-server -n tarian-system 41051:80
Configurar la dirección del servidor con env var
exportar TARIAN_SERVER_ADDRESS=localhost:41051
Para ver los eventos de infracción
tarianctl obtener eventos
Agregar una restricción de proceso
tarianctl agregar restricción –nombre nginx –espacio de nombres predeterminado \
–match-labels ejecutar = nginx \
–procesos-permitidos=pausa,agente-pod-tarian,nginx
tarianctl obtener restricciones
Agregar una restricción de archivo
tarianctl agregar restricción –nombre de archivos nginx –espacio de nombres predeterminado \
–match-labels ejecutar = nginx \
–archivo-permitido-sha256sums=/usr/share/nginx/html/index.html=38ffd4972ae513a0c79a8be4573403edcd709f0f572105362b08ff50cf6de521
tarianctl obtener restricciones
Ejecutar tarian agent en un pod
Luego, después de crear las restricciones, inyectamos tarian-pod-agent en el pod agregando una anotación:
metadatos:
anotaciones:
pod-agent.k8s.tarian.dev/threat-scan: «verdadero»
Al pod con esta anotación se le inyectará un contenedor adicional (tarian-pod-agent). El contenedor tarian-pod-agent verificará continuamente el entorno de tiempo de ejecución en función de las restricciones registradas. Se informará cualquier infracción, a la que se podrá acceder con tarianctl get events
.
Demostración: pruebe un pod que viole las restricciones
kubectl apply -f https://raw.githubusercontent.com/kube-tarian/tarian/main/dev/config/monitored-pod/configmap.yaml
kubectl apply -f https://raw.githubusercontent.com/kube-tarian/tarian/main/dev/config/monitored-pod/pod.yaml
esperar a que esté listo
kubectl espera –para=condición=listo pod nginx
simular ejecuciones de procesos desconocidos
kubectl exec -ti nginx -c nginx — dormir 15
deberías verlo reportado en tarian
tarianctl obtener eventos
Integración del administrador de alertas
Tarian viene con Prometheus Alert Manager de manera predeterminada. Si desea utilizar otra instancia de administrador de alertas:
timón instalar tarian-servidor tarian/tarian-servidor –devel \
–establecer server.alert.alertManagerAddress=http://alertmanager.monitoring.svc:9093 \
–establecer alertManager.install=falso \
-n sistema-tariano