Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.

Nombre de usuario
  

Contraseña
  





Buscar en los foros



(Búsqueda avanzada)

Estadísticas del foro
» Miembros: 6.571
» Último miembro: Jorge Luquerna
» Temas del foro: 3.248
» Mensajes del foro: 18.941

Estadísticas totales

Usuarios en línea
Actualmente hay 217 usuarios en línea.
» 1 miembro(s) | 213 invitado(s)
Bing, Facebook, Twitter, Rigodoncito

Últimos temas
Problema con WireGuard y ...
Foro: Cuestiones técnicas
Último mensaje por: Rigodoncito
9 minutos
» Respuestas: 0
» Vistas: 2
Canal en Telegram QnapClu...
Foro: Anuncios, noticias y enlaces
Último mensaje por: gonac58
1 hora
» Respuestas: 82
» Vistas: 51.755
certificado
Foro: Empezando con tu NAS
Último mensaje por: pipo13
4 horas
» Respuestas: 0
» Vistas: 2
NAS QNAP TS451+
Foro: Cuestiones técnicas
Último mensaje por: Xuang
7 horas
» Respuestas: 0
» Vistas: 7
Problemas con el Hybrid B...
Foro: Cuestiones técnicas
Último mensaje por: Randal54
, 09:23 PM
» Respuestas: 0
» Vistas: 6
Activar y desactivar la c...
Foro: Cuestiones técnicas
Último mensaje por: jose eduardo vazquez garcia
, 06:42 PM
» Respuestas: 2
» Vistas: 55
nube con 2 NAS
Foro: Empezando con tu NAS
Último mensaje por: Ganekogorta
, 08:12 AM
» Respuestas: 2
» Vistas: 65
miniaturas
Foro: Empezando con tu NAS
Último mensaje por: dominicelliott
25-03-2024, 11:44 AM
» Respuestas: 3
» Vistas: 136
Antivirus psr qnap ts-233
Foro: Anuncios, noticias y enlaces
Último mensaje por: Ganekogorta
25-03-2024, 08:18 AM
» Respuestas: 1
» Vistas: 47
Qnap TS-664
Foro: Empezando con tu NAS
Último mensaje por: FernandoCC
23-03-2024, 10:45 PM
» Respuestas: 2
» Vistas: 89

 
  Problemas con VPN
Enviado por: Javier Sepulveda - 29-01-2024, 06:51 PM - Foro: Cuestiones técnicas - Respuestas (7)

Hola a todos

Soy nuevo en este portal.
Les comento que tengo un NAS con servicio QBelt, hasta el día viernes funcionaba perfecto, pero hoy ha sido imposible que me pueda conectar.
En realidad si conecta pero el equipo no me entrega Internet y no me deja conectarme a las carpetas compartidas del NAS.
El NAS esta conectado con una IP publica en una de las tarjetas de red y con una privada en la otra.
El equipo me conecta la VPN, me da el mensaje que les adjunto y luego se desconecta.

Alguien me puede dar una mano



Archivos adjuntos Miniatura(s)
       

  Encantado de estar aquí
Enviado por: Mariosalgooos - 29-01-2024, 06:49 PM - Foro: Presentaciones - Respuestas (1)

Hola a todos, estoy más que encantado de estar aquí con todos vosotros, todo un placer, soy nuevo en el foro!


  Problemas con qVPN y OpenVPN
Enviado por: enekinsw - 27-01-2024, 10:40 PM - Foro: Firmware, Aplicaciones y Tutoriales - Respuestas (3)

Hola a todos,

desde hace unos días no me puedo conectar a red de casa a través de VPN. Tengo un TS-230 y configurada con qVPN una red openVPN. Me da un error de "peer certificate verification failure". He estado buscando información y he encontrado que con las actualizaciones de openVPN está habiendo problemas. Os dejo el link:

https://www.qnap.com/es-es/how-to/faq/ar...pn-service

En dicho link se propone una solución pero para ello hay que tener la versión de qVPN 3.2.x o superior. El problema es que la versión más alta que hay para mi nas es la 2.4.747.

¿Se os ocurre alguna solución? Gracias de antemano!


  Controlar y actualizar contenedores mediante Telegram
Enviado por: yeraycito - 27-01-2024, 06:30 PM - Foro: VMs & Docker Containers - Sin respuestas

A la hora de actualizar los contenedores que tengamos instalados en el nas podemos hacer uso de Watchtower que lo hace automáticamente y sin intervención por parte nuestra:      https://www.qnapclub.es/showthread.php?tid=4885

También existe la posibilidad de instalar otros sistemas que no actualizan pero si notifican la existencia de actualizaciones de los contenedores.

Lo que voy a pasar a explicar a continuación sería el punto intermedio entre los dos sistemas anteriores, es decir, notifica las actualizaciones y a continuación si se quiere se puede actualizar, todo ello desde Telegram. Aparte de lo anterior también desde Telegram podemos obtener lo siguiente:


✅ Listar contenedores
✅ Arrancar, parar y eliminar contenedores
✅ Obtener los logs tanto de manera directa como a través de fichero
✅ Extraer el docker-compose de tus contenedores
✅ Notificaciones cuando un contenedor se cae o se inicia


Lo primero que tenemos que hacer es crear un bot de Telegram exclusivo para este propósito tal como se explica aquí:

https://www.qnapclub.es/showthread.php?tid=3968


A continuación vamos a crear en el nas un nuevo contenedor y lo haremos con Docker Compose sea a través de Container Station o por medio de un Stack en Portainer, los parámetros son los siguientes:


version: '3.3'
services:
    docker-controller-bot:
        environment:
            - TELEGRAM_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXX
            - TELEGRAM_ADMIN=XXXXXXXXXX
            - CONTAINER_NAME=docker-controller-bot
            - CHECK_UPDATES=1
            - CHECK_UPDATE_EVERY_HOURS=12
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
        image: dgongut/docker-controller-bot:latest
        container_name: docker-controller-bot
        network_mode: host
        restart: always
        tty: true



En el apartado TELEGRAM TOKEN pondremos el Token del bot de Telegram creado anteriórmente.

En el apartado TELEGRAM ADMIN pondremos el Chat ID del bot de Telegram

El apartado CHECK UPDATE EVERY HOURS está configurado para que cada 12 horas busque actualizaciones de los contenedores que tengamos instalados pero lógicamente se puede cambiar por otro valor distinto.


Una vez instalado el contenedor en el nas en nuestro bot de Telegram nos aparece lo siguiente:


   


Como he comentado anteriórmente el docker busca actualizaciones de los contenedores que tengamos instalados cada 12 horas, si existe una o varias actualizaciones las notifica al bot de Telegram y si queremos podemos dar la orden de actualizar desde el propio bot:


   


Os pongo una captura del log del contenedor en la que se puede ver como busca actualizaciones, si encuentra alguna lo notifica al bot de Telegram y si se ha dado la orden de actualización desde el bot cómo se efectúa ese proceso:


   


  Docker BotTorrent v4 y QPKG
Enviado por: Ganekogorta - 27-01-2024, 04:32 PM - Foro: VMs & Docker Containers - Sin respuestas

Hola

En este post voy a tratar de explicar como instalar una nueva versión del docker de DekkaR basado en python y usando una imagen docker realizada por Daniel.

Esta vez usa la librería Pyrogram de Python que descarga mas rápidamente los contenidos.

El despliegue es muy sencillo desde la consola de comandos:

Código:
docker run --rm -it --name BotTorrent4  -v /share/Download/peliculas:/app/multimedia -v /share/Download/torrent:/app/torrent -e "BOT_TOKEN=token_de_nuestro_bot_de_Telegram" -e "USUARIO_ID=numero_de_usuario" -e "API_ID=numero_id_API" -e "API_HASH=cadena_hash" -e "MENSAJE_INICIO=BotTorrent4 en linea" dgongut/dekkar-bot-torrent:latest

Evidentemente, como requisitos previos hemos de tener:
  • instalado e iniciado container station
  • creado un bot de Telegram para que se encargue de las descargas Smile

Si detenemos el docker, este se elimina.

Se usan dos rutas persistentes para las descargas que son:
  • /share/Download/peliculas 
  • /share/Download/torrent

La idea es que si descargamos archivos .torrent, estos sean descargados en "/share/Download/torrent", así si tenemos activado en nuestro gestor de descargas la monitorización de esa carpeta, el programa de torrentes inicie la descarga.
Y si bajamos películas, estas vayan directamente a "/share/Download/peliculas"

Ahora voy a dar una vuelta de tuerca mas y he creado un paquete QPKG instalable para x86_x64 (no he probado en otras arquitecturas ) que nos instala una aplicación llamada bottorrent4 en nuestro App Center.

Previa a la instalación del QPKG, hay que crear un archivo con la siguiente información relativa a nuestras credenciales de Telegram.
El archivo ha de crearse en la ubicación "/share/DockerData/bottorrent4/" y ha de llamarse "bottorrent4.conf". Para evitar problemas de rutas, lo mejor es tener una carpeta compartida llamada "DockerData"
Luego el contenido del archivo ha de ser algo similar a:
Código:
BOT_TOKEN=token_de_nuestro_bot_de_Telegram
USUARIO_ID=numero_de_usuario
API_ID=numero_id_API
API_HASH=cadena_hash
MENSAJE_INICIO=BotTorrent4 en linea

Luego descargamos el archivo bottorrent4_4.0_x86_64.qpkg que bajamos desde Mega y lo instalaremos.

Luego desde el app center agregaremos manualmente qpkg y seguimos el asistente.

seleccionamos el archivo pqkg
   

Aceptamos la instalación
   

Como no está firmada digitalemente hemos de activar que entendemos los riesgos e instalamos
   

Veremos el progreso de la instalación.
   

Y finalizará con el mensaje de aplicación instalada, 
   

También veremos en nuestro Bot de Telegram que hemos recibido el mensaje de que se ha iniciado y veremos en nuestro app center el nuevo icono de la aplicación
   

Cuando lo detengamos, el contenedor se eliminará y cada vez que lo iniciemos será creado de nuevo con la imagen mas nueva posible.

Una de las ventajas de tener el contendor como app, es que podemos gestionarlo desde nuestro móvil con Qmanager.


  PLEX - Conexiones seguras y cambio de nombre de servidor
Enviado por: Gribaumont - 22-01-2024, 05:50 PM - Foro: Cuestiones técnicas - Respuestas (1)

Muy buenas:

Mi situación es sencilla: 

  1. Dia 1: enciendo y configuro por primera vez el NAS y consigo (no sé ni cómo) que sea reconocible en Plex. Entre la cuenta de correo (plex.tv) y la app en QTS, todo funciona a las mil maravillas. Muero de emoción
  2. Día 3: trato de acceder al NAS desde otro ordenador de mi casa (red local, pues, a través del router) y como soy muy listo, hago varias cosas:
  • Cambio el nombre del NAS (siquiera me doy cuenta)   
  • Cambio la IP a una estática (esto quería hacerlo de verdad)
  • Con la app de QTS "Security counselor" en alguna parte configuro que todas las conexiones entrantes sean seguras. Sucede entonces que cuando vuelvo a entrar en PLEX (a través de QTS), me aparece este mensaje:
  • Esta aplicación no admite conexiones seguras (HTTPS://) ¿Está seguro que desea abrirla?
   
Y ahora me encuentro que Plex no reconoce mi NAS y no sé cómo desactivar lo de las conexiones seguras.

¿Alguna idea?


Exclamation Nas no arranca y se apaga solo
Enviado por: Jefferson Trinidad - 21-01-2024, 06:23 AM - Foro: Cuestiones técnicas - Respuestas (6)

NAS NO ARRANCA Y SE APAGA SOLO

Saludos gente,

Espero todos se encuentren bien al leer este mensaje.

Sucede que hace unos meses compré un NAS modelo TS-664 de 6 bahías y 8GB RAM, es un modelo relaivamente nuevo (Aquí el modelo). Un día dejé el NAS realizando un backup a un disco duro externo, al otro día cuando fui a vrificar encontré el NAS apagado (Aun conectado a un UPS). El caso es que luego de ese día el NAS arranca cuando le parece, y al hacerlo en la mayoría de los casos se apaga nuevamente, aveces antes de subir QTS y aveces antes de. Cuando luego presiono el botón de encendido no arranca, solo enciende el primer led y los leds de atrás del cable de red, pero los abanicos no giran ni los discos arrancan, en ocasiones cuando desconecto todo funciona pero aveces no. He probado con distintas RAM e incluso iniciarlo con un disco duro nuevo y nada, se queda a mitad. Pensé que era algún problema con la electricidad pero lo he llevado a distintas casas y me paso lo mismo con UPS y sin UPS.

En resumen:

  • Con los discos fuera no arranca
  • Con discos dentro tampoco
  • Con distintas ram por igual
  • Aveces cuando carga se apaga nuevamente ya sea en el arranque o luego de subir QTS
  • Si pruebo con un HDD nuevo se apaga instalando el QTS

Lo que me sorprende es que enciende el led del frente y los leds del puerto de red de atrás, pero los abanicos no corren ni tampoo los discos. Habiendo probado todo me parece que es como un tema elétrico tal vez, no sé si con el adaptador de energía o en la placa base.

Estoy desesperado porque no tengo como devolver el NAS a la tienda ya que lo adquirí en otro país. El Nas estaba nuevo en la caja sellado y lo utilicé unos meses, hasta que esto me pasó.

Espero puedan ayudarme.

Saludos,
Jefferson


  Qumagie - Reconocimiento Personas
Enviado por: jfl300300 - 20-01-2024, 12:01 PM - Foro: Cuestiones técnicas - Respuestas (1)

Soy nuevo en QNAP y estoy aprendiendo. Tengo varias dudas sobre el reconocimiento de caras.

- En algunas fotos, hay veces , que no reconoce que hay una cara. ¿por qué?
- ¿Como se puede hacer para forzar que reconozca una cara? 
- ¿es posible hacerlo manualmente?


Brick Escritura registros en MariaDB desde powershell
Enviado por: Ganekogorta - 19-01-2024, 09:41 PM - Foro: Firmware, Aplicaciones y Tutoriales - Sin respuestas

Hola

Este post es un poco distinto de los habituales que vemos por el foro, pero creo que puede ser interesante para mas de uno y puede dar nuevas ideas de uso.

Hasta hace poco tenía una nas de Qnap integrada como miembro de un directorio activo.
Es decir sus carpetas compartidas podían ser accedidas por usuarios del directorio activo que no son de locales de la nas.
Básicamente el servidor y los equipos de la red accedían a la nas con los privilegios del directorio activo.
Una de las ventajas es que en el log de la nas se veía en todo momento las acciones de los usuarios hacia el recurso compartido (quien y que archivo se leía y borraba).
Debido a que esa nas está orientada a ser de almacenamiento (discos SATA y agrupación de tarjetas), el acceso se veía penalizado y se hacia lento cuando muchos usuarios lo hacían de forma simultánea.
Al final optamos por poner un almacenamiento externo a la nas y gestionado directamente por el servidor del directorio activo.
El servidor también tiene su "log", en este caso es un visor de eventos, pero no es tan útil y no quería tener unas reglas de auditoría excesivas que lo lastrasen.

Así que pensé en una forma de trasladar esa información a la nas. 
Lo forma en que la que lo he hecho es la siguiente:
-activo una auditoria en servidor que me cree determinados registros en el visor de eventos.
-mediante una tarea programada lanzo mediante powershell esos registros y no otros hacia la nas.
-la nas acepta esos registros en un base de datos creada en MariaDB.


1-Creación de la BBDD en MariaDB en la NAS

Primero debemos tener MariaDB 10 operativa en la Nas. Si no lo está, la agregamos desde el el App Center.


Podemos hacerlo ayudándonos de phpMyAdmin  o bien de forma manual mediante la consola de comandos.
Los pasos básicos son crear una BBDD de nombre "eventos_servidor" y en su interior una tabla que llama "items_alterados".
Luego un usuario que he llamado "administrador" con permisos a esa BBDD.

Por consola los comando en MariaDB serían:
Código:
mysql> CREATE DATABASE eventos_servidor;


Ahora damos privilegios al usuario "administrador" a la ip de nuestra nas, con clave "clave_de_la_BBDD" en todas la tablas de la  BBDD "eventos_server"
Código:
GRANT ALL PRIVILEGES ON eventos_servidor.* TO administrador@'ip_local_de_nuestra_nas' IDENTIFIED BY 'clave_de_la_BBDD' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Ahora nos identificamos como ese usuario "administrador" en la mariaDB:
Código:
USE administrador;

Y ahora creamos la tabla "items_alterados"y sus campos:
Código:
CREATE TABLE items_alterados (id INT NOT NULL AUTO_INCREMENT, servidor VARCHAR(100), archivo VARCHAR(255), fecha  DATETIME, usuario VARCHAR(100), accion VARCHAR(20), , tipo VARCHAR(20), PRIMARY KEY (ID));
Los campos de la tabla son : ID, servidor, archivo, fecha, usuario y acción .

Si todo ha ido bien tendremos en nuestra mariaDB un usuario con accesos a la BBDD, una tabla en su interior y los campos antes mencionados.

2- trabajo en el servidor

Creamos una política local en el servidor para que se registren los cambios.
   

En el servidor de Windows hemos de instalar el conector adecuado para que sepa comunicarse con la mariaDB. En el momento que lo hice era el "mysql-connector-net-8.2.0.msi", pero muy posible que haya nuevas versiones del mismo.

Ahora en la carpeta compartida hemos de auditar esos accesos. Vamos a la carpeta, hacemos clic con el botón secundario, pedimos propiedades y pulsamos sobre la lengüeta de "Seguridad", después pulsamos sobre el botón inferior de "opciones avanzadas". Seleccionamos la lengüeta de "Auditoria" y pulsamos sobre el botón de "Agregar".
   

Luego seleccionamos la entidad
   

podemos todos
   

Y ahora pulsamos sobre "mostrar permisos avanzados"
   

Aquí elegimos los permisos que nos interesan que son los de creación y eliminación.
   

Si agregamos muchos o innecesarios, el sistema trabaja mas y el log del visor de eventos aumenta mucho.
Dependiendo de nuestra actividad podríamos tener que aumentar el tamaño del archivo del visor de eventos (yo recomiendo tenerlo ciclíco).

3-Scrip de transferencia de datos a la NAS

Ahora sólo queda crear un script en PowerShell que mande los registros que nos interesan a la nas.
El archivo ha de tener extensión .ps1 y un contenido similar a el siguiente:
Código:
#Add-Type -Path 'C:\Program Files (x86)\MySQL\MySQL Connector NET 8.2.0\MySql.Data.dll'
[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=ip_local_de_la_nas;port=3306;uid=administrador;pwd=clave_de_la_BBDD;database=eventos_servidor'}
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
$contador = 0

#Obtengo limite de las 3 horas anteriores 3, 6, 9, 12, 15, 18, 21 y 24
$Date = Get-Date
#$Date = Get-Date -Year 2023 -Month 11 -Day 02 -Hour 07 -Minute 05 -Second 00 -format "yyyy-MM-dd HH:mm:ss"
$dia = $Date.day -as [int]
$mes = $Date.Month -as [int]
$anoini = $Date.Year -as [int]
$mesini = $Date.Month -as [int]
$diaini = $Date.Day -as [int]
$mesfin = $mesini
$diafin = $diaini
$anofin = $anoini

if (( $Date.hour -ge "6" ) -and  ($Date.hour -lt "9") ){
    write-host "estamos entre 6 y 9, transmito datos entre 3 y 6"
    $mensaje = "estamos entre 6 y 9, transmito datos entre 3 y 6."
    $horaini = "03"
    $horafin = "05"
    }
elseif (( $Date.Hour -ge "9" ) -and  ($Date.hour -lt "12") ){
    write-host "estamos entre 9 y 12, transmito datos entre 6 y 9"
    $mensaje = "estamos entre 9 y 12, transmito los datos entre 6 y 9."
    $horaini = "06"
    $horafin = "08"
    }
elseif (( $Date.Hour -ge "12" ) -and  ($Date.hour -lt "15") ){
    write-host "estamos entre 12 y 15, transmito datos entre 9 y 12"
    $mensaje = "estamos entre 12 y 15, transmito los datos entre 9 y 12."
    $horaini = "09"
    $horafin = "11"
    }
elseif (( $Date.Hour -ge "15" ) -and  ($Date.hour -lt "18") ){
    write-host "estamos entre 15 y 18, transmito datos entre 12 y 15"
    $mensaje = "estamos entre 15 y 18, transmito los datos entre 12 y 15."
    $horaini = "12"
    $horafin = "14"
    }    
elseif (( $Date.hour -ge "18" ) -and  ($Date.hour -lt "21") ){
    write-host "estamos entre 18 y 21, transmito datos entre 15 y 18"
    $mensaje = "estamos entre 18 y 21, transmito los datos entre 15 y 18."
    $horaini = "15"
    $horafin = "17"
    }
elseif (( $Date.hour -ge "21" ) -and  ($Date.hour -le "23") ){
    write-host "estamos entre 21 y 24, transmito datos entre 18 y 21"
    $mensaje = "estamos entre 21 y 24, transmito los datos entre 18 y 21."
    $horaini = "18"
    $horafin = "20"
    }
elseif (( $Date.hour -ge "3" ) -and  ($Date.hour -lt "6") ){
    write-host "estamos entre 3 y 6, transmito datos entre 0 y 3"
    $mensaje = "estamos entre 3 y 6, transmito los datos entre 0 y 3."
    $horaini = "00"
    $horafin = "5"
    }
else {
    write-host "estamos entre 0 y 3, trasnmito datos entre 21 y 24"
    $mensaje = "estamos entre 0 y 3, trasnmito los datos entre 21 y 24."
    $horaini = "21"
    $horafin = "23"
    #compruebo si es dia 1 de enero, entonces he de trabajar con en el dia anterior que es el 31 de diciembre del año anterior
    if ( $dia -eq 1 -and $mes -eq 1){
        write-host "dia primero del anyo"
        $dia
        $mes
        $mensaje = "estamos entre 0 y 3 primer dia del año."
        $anoini = (Get-Date).AddMonths(-1).AddMonths(1).AddDays(-1).ToString("yyyy")
        $mesini = (Get-Date).AddMonths(-1).AddMonths(1).AddDays(-1).ToString("MM")
        $diaini = (Get-Date).AddMonths(-1).AddMonths(1).AddDays(-1).ToString("dd")
        $anofin = $anoini
        $mesfin = $mesini
        $diafin = $diaini
        }
    #compruebo si es dia 1 pero NO de enero y he de trabajar con el dia último del mes anterior
    elseif ( $dia -eq 1 -and $mes -ne 1) {
        write-host "dia primero del mes no de enero"
        $mensaje = "estamos entre 0 y 3 primer dia del mes que no es enero."
        $dia
        $mes
        $mesini = (Get-Date).AddMonths(-1).AddMonths(1).AddDays(-1).ToString("MM")
        $diaini = (Get-Date).AddMonths(-1).AddMonths(1).AddDays(-1).ToString("dd")
        $anofin = $anoini
        $mesfin = $mesini
        $diafin = $diaini
        }
    else {
        write-host "cualquier dia distinto del primero de mes"
        $mensaje = "estamos entre 0 y 3 de cualquier dia NO 1 del mes."
        $dia
        $mes
        $diaini = $diaini = (Get-Date).AddDays(-1).ToString("dd")
        $anofin = $anoini
        $mesfin = $mesini
        $diafin = $diaini
        $anoini
        $mesini
        $diaini
        }
    }
#defino las fechas de trabajo
$Fini = Get-Date -Year $anoini -Month $mesini -Day $diaini -Hour $Horaini -Minute 00 -Second 00 -format "yyyy-MM-dd HH:mm:ss"
$Ffin = Get-Date -Year $anofin -Month $mesfin -Day $diafin -Hour $Horafin -Minute 59 -Second 59 -format "yyyy-MM-dd HH:mm:ss"

#proceso de enviar todos los datos del visor de eventos entre los rangos de fechas anteriores
$Eventos = 0
Get-WinEvent -Oldest -FilterHashTable @{LogName="Security";starttime=$Fini;endtime=$Ffin;id=4659,4663}| Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$contador = $contador + 1
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$archivo = $File
$File = $File.Replace("\","/")
$User = $event.Event.EventData.Data[1]."#text"
$id = $_.id
if ( $id -match "4659" ) {
    $Accion = "Borrado"
    #$Accion = $event.Event.EventData.Data[10]."#text"
    }
if ( $id -match "4663" ) {
    $Accion = $event.Event.EventData.Data[9]."#text"
    if ( $Accion -match "0x10000" ) {
        $Accion = "Renombrado"
    }
    if ( $Accion -match "0x2" ) {
        $Accion = "Creado o modificado"
    }
    if ( $Accion -match "0x4" ) {
        $Accion = "otro"
    }
    if ( $Accion -match "0x6" ) {
        $Accion = "Agregando datos"
    }
    }
$Computer = $event.Event.System.computer
$sql.CommandText = "INSERT INTO deleted_items (servidor,archivo,fecha,usuario,accion,tipo) VALUES ('$Computer','$File','$Time','$User','$Accion','$id')"
$Eventos = $Eventos + 1
$sql.ExecuteNonQuery()
}
}
$Reader.Close()
$Connection.Close()
$Eventos
Write-host "Total de Eventos $Eventos"
$mensaje = $mensaje + " Numero de eventos = " + $Eventos
#Se puede enviar la cadena $mensaje en un correo o incluso Telegram

Lo he comentado bastante pero la idea es ejecutarlo cada tres horas (podemos modificarlo para hacerlo con periodos mas cortos o largos).
La idea es ejecutarlo sobre las 00:10, 3:10, 6:10, ... cada tres horas para que envíe los datos relativos a las tres horas anteriores.
Es decir si lo ejecuto a las 6:10, transmite los eventos entre las 3:00 y las 5:59.
La gracia del script es cuando se lanza a las 0:10, que ha calcular el rango del día anterior entre las 21:00 y  23:59.
Y se complica un poco cuando estamos a día uno del mes (no se ve afectado por bisiestos) y caso especial de día uno de enero que además de ir al último día del mes anterior ha de ir al año anterior :-O

En el programador de tareas del servidor se ejecuta C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe y con parámetros -command "C:\ruta del archivo en el servidor\nombre_del_script.ps1"

El script puede completarse con mas comandos para que nos envíe un correo electrónico con el número de registros, y/o que nos lo envíe por Telegram.

4-Explotación de datos

Si queremos revisar los datos podemos hacerlo vía phpMyAdmin, la base de datos de Libreoffice, clientes hechos con MSAccess, PowerBi o incluso con scripts hechos en PowerShell.

Yo lo he puesto en practica con un servidor de dominio, pero al ser una política local, podemos hacerlo con nuestros equipos Smile

Se que este post se sale un poco de la norma, pero a fin de cuentas no deja de ser algo mas que podemos gestionar en nuestra Qnap y espero que os sirve para ver como las nas de Qnap son un buen complemento para otras cosas  Smile


  Docker gestor de 2FA
Enviado por: Ganekogorta - 19-01-2024, 09:41 PM - Foro: VMs & Docker Containers - Sin respuestas

Hola

Hoy voy a mostrar como tener nuestro propio gestor de 2FA para evitar dependencias de terceros.
Su función es como las de Authy o los autenticadores de Google, Microsoft o de Qnap 

Su uso es muy sencillo y permite añadirlos por cadena de texto, por cámara con código QR y por fotografía del QR.

Su entorno es web y es una lástima que no haya app para móvil. Pero vía web en el móvil funciona perfectamente.

Aquí me parece importante tener una carpeta persistente compartida para la bbdd de los códigos y poder tenerla  a buen recaudo y con opciones de copia de seguridad.

La ruta de la carpeta será por ejemplo "/share/DockerData/2fauth"
El docker usa al usuario 1000 y grupo 1000.
Es decir las carpetas persistentes ha de tener permisos similares para que el usuario de ese docker pueda usar la carpeta compartida de la nas.

La mejor forma de ver esos permisos ver las propiedades de los usuarios uno por uno desde QTS o mejor es lanzar el comando siguiente por consola:

Código:
cat /etc/passwd
Al hacerlo vemos todos los usurios y en cada línea veremos usuario, x, numero_de_id, número de grupo
Nos fijamos quien tiene 1000 (por ejemplo lo tiene asignado usuario_anterior )

Ahora para ver si tenemos un grupo con 1000, ejecutamos el siguiente comando:
Código:
cat /etc/group
Y veremos por línea:  nombre grupo, id_del_grupo , usuarios

Si tenemos el 1000 creado, tomamos nota del nombre usado. 
Si no lo ternemos lo creamos con la siguiente orden de consola:
Código:
addgroup -g 1000 dockers

En el comando de ejemplo anterior creo al grupo "dockers" con ID 1000

Ahora agregamos el "usuario_anterior" de ID 1000 al grupo "dockers" de ID 1000.
Podemos hacerlo desde los grupos de QTS o bien desde consola con
Código:
adduser usuario_anterior dockers


A esa carpeta hemos de asignar propietarios al "usuario_anterior" y grupo "docker" y dar permisos de tipo 700.
Lo hacemos con los comandos
Código:
chown 1000:1000 /share/DockerData/2fauth
chmod 700 /share/DockerData/2fauth


Ahora vamos con el comando de creación del contenedor, que será el siguiente:

Código:
docker run --name=2fauth -d -p 8500:8000/tcp -v /share/DockerData/2fauth:/2fauth -e AUTHENTICATION_GUARD=web-guard 2fauth/2fauth

Una vez iniciado, vamos a su web y veremos la pantalla habitual de usuario y clave (que aún no tenemos)
   

Evidentemente, de inicio NO hay ninguno y hemos de crearnos.
   

Tras dar nuestro nombre, dirección de correo y clave, nos da la opción de asociar una llave (Yubikey por ejemplo  Shy )
   


El docker permite envío de correos para restablecer claves olvidadas, pero para ello hemos de haber asignado las siguientes variables a la hora de definir el contenedor:
  • -e MAIL_DRIVER=smtp
  • -e MAIL_HOST=direccion_servidor_smtp
  • -e MAIL_PORT=465
  • -e MAIL_ENCRYPTION=ssl  protocolo cifrado
  • -e MAIL_FROM_NAME="nombre del remitente"
  • -e MAIL_FROM_ADDRESS=direccion_remitente
  • -e MAIL_USERNAME=usuario_smtp
  • -e MAIL_PASSWORD=clave_correo

Es decir, nuestra cadena de creación sería algo similar a esto:
Código:
docker run --name=2fauth -d -p 8500:8000/tcp -v /share/DockerData/2fauth:/2fauth -e AUTHENTICATION_GUARD=web-guard -e MAIL_DRIVER=smtp -e MAIL_HOST=smtp.servidor.com -e MAIL_PORT=465 -e MAIL_ENCRYPTION=ssl -e MAIL_FROM_NAME="admin de 2fAuth" -e MAIL_FROM_ADDRESS=correo@remitente.com -e MAIL_USERNAME=correo@remitente.com -e MAIL_PASSWORD=clave_correo  2fauth/2fauth:5.0.2

Una vez empecemos a tener datos de autenticaciones, es muy importante tener y hacer copias del archivo "database.sqlite" que está en la ruta "/share/DockerData/2fauth".
Ahí se encuentran todos nuestros datos de usuarios y accesos.
Lo mejor para hacer copia es detener el contenedor, copiar la sqlite y de nuevo arrancar el contenedor.

Nota del 25/01/24

He visto que para usar llaves físicas hay que hacer que el docker publique por https. Se puede hacer mediante un proxy inverso.
Pero aún así da algún error usando la consola para crearlo.
En cambio he visto que por docker compose no da ese problema.
He usado la siguiente configuración:
Código:
version: "3"
services:
  2fauth:
    image: 2fauth/2fauth:5.0.2
    container_name: 2fauth
    volumes:
      - /share/DockerData/2fauth:/2fauth
    ports:
      - 8500:8000/tcp
    environment:
      - UID=1000
      - GID=1000
      - APP_NAME=2FAuth
      - APP_ENV=local
      - APP_DEBUG=false
      - SITE_OWNER=tumail@qnapclub.com
      - APP_KEY=una_cadena_de_texto_aletoria_de_32_caracteres
      - APP_URL=https://2fa.tu_dominio_web.com
      - IS_DEMO_APP=false
      - LOG_CHANNEL=daily
      - LOG_LEVEL=notice
      - DB_DATABASE="/srv/database/database.sqlite"
      - CACHE_DRIVER=file
      - SESSION_DRIVER=file
      - MAIL_DRIVER=log
      - MAIL_HOST=smtp.servidor_correo.com
      - MAIL_PORT=587
      - MAIL_USERNAME=usuario@correo.com
      - MAIL_PASSWORD=la_clave_del_correo
      - MAIL_ENCRYPTION=ssl
      - MAIL_FROM_NAME=usuario@correo.com
      - MAIL_FROM_ADDRESS=usuario@correo.com
      - MAIL_VERIFY_SSL_PEER=true
      - THROTTLE_API=60
      - LOGIN_THROTTLE=5
      - AUTHENTICATION_GUARD=web-guard
      - AUTH_PROXY_HEADER_FOR_USER=null
      - AUTH_PROXY_HEADER_FOR_EMAIL=null
      - PROXY_LOGOUT_URL=null
      - WEBAUTHN_NAME=2FAuth
      - WEBAUTHN_ID=null
      - WEBAUTHN_ICON=null
      - WEBAUTHN_USER_VERIFICATION=preferred
      - TRUSTED_PROXIES=null
      - PROXY_FOR_OUTGOING_REQUESTS=null
      - BROADCAST_DRIVER=log
      - QUEUE_DRIVER=sync
      - SESSION_LIFETIME=120
      - REDIS_HOST=127.0.0.1
      - REDIS_PASSWORD=null
      - REDIS_PORT=6379
      - PUSHER_APP_ID=
      - PUSHER_APP_KEY=
      - PUSHER_APP_SECRET=
      - PUSHER_APP_CLUSTER=mt1
      - VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
      - VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
      - MIX_ENV=local

Como se puede comprobar, aquí se definen bastantes mas variables. 

Haciendo pruebas he comprobado que se integra sin problemas en:
  • las validaciones faciales de los iPhone (doy por supuesto que también en el lector de huella)
  • llaves físicas Yubikey

En su momento usé el tag "latest" que era la versión 5.0.2 del docker, con el último tengo problemas de visón dela web, así que en las cadenas de creación he obligado a esa versión.