Si quieres seguir leyendo las entradas de este blog, puedes seguir por Digitalteam.
Autor: miguel
-
Intranet/Nextcloud (Parte 4/4)
Consideraciones finales
Programar un script que hace algo pero que es difícil comprobar el resultado es una práctica poco segura.
Nuestros scripts incorporan la salida de todos los procesos que llevan a cabo a un fichero que se situará en la raíz del la zona del usuario administrador.
Este fichero de log registra todos los movimientos que el script ha llevado a cabo o no por distintos motivos. Los principales controles que registra son:
- Incorrecto formato del fichero de clientes CSV
- Creación de usuario correcta o no.
- Factura repartida a qué usuario.
- etc.
Espero que estos scripts puedan servir de base o ayudar al desarrollo de una versión adaptada a las necesidades de cualquier pequeña empresa.
Los scripts están disponibles en mi Github.
-
Intranet/Nextcloud (Parte 3/4)
Repartir Facturas
Nuestro segundo y último script «repartir_ficheros.py» tiene como misión repartir los ficheros que el administrador suba a la carpeta «Reparto_Factura» de su zona de administración a todos los usuarios del sistema que les correspondan.
La lógica debe ser que el nombre del fichero a repartir comience con el código del usuario en nuestra intranet.
Por ejemplo: la factura «1000-noviembre.pdf» moverá dicho fichero a la zona de usuario con código 1000.
El administrador puede crear una estructura de carpetas en su carpeta «Reparto_Factura« que se replicará a la zona del usuario. Por ejemplo:
Estructura opcional de la carpeta Reparto_Factura Cron
Al igual que el script de creación de usuario, nuestro script de reparto se debe programar con la frecuencia estimada por el administrador de la plataforma atendiendo a sus necesidades. Esto es, si las facturas se suben con poca frecuencia, no tiene sentido establecer la programación muy frecuentemente.
En el caso de Hostens, el panel de control nos ofrece un asistente para los trabajos de cron como se muestra a continuación:
Fichero de reparto de facturas programado cada 5 minutos -
Intranet/Nextcloud (Parte 2/4)
Importar Usuarios
Nuestro primer script «importar_usuario.py» tiene como misión importar los ficheros CSV que el administrador suba a la carpeta Clientes_CSV de nuestra intranet. Los pasos que sigue en script son:
- Crea el usuario en NextCloud
- Manda un email a dicho usuario notificándole su usuario y contraseña aleatoria que el usuario puede/debe cambiar en el primer acceso.
- Crea la estructura de carpetas en la zona de usuario.
Formato del fichero
El fichero de clientes con extensión csv debe tener la siguiente estructura:
Abonado;Razón social Cliente;Email empresa
1000;Pepe;[email protected]El primero (1000) es el código que recibirá el cliente en nuestra plataforma. Puede ser numérico o alfanumérico. En cualquier caso dicho código será la primera cadena del nombre del fichero de facturas a repartir.
En nuestro ejemplo, las facturas para el usuario 1000 deben empezar por 1000_loquesea.pdf.
Los demás campos se explican por sí mismos.
Cron
Nuestro script se debe programar con la frecuencia estimada por el administrador de la plataforma atendiendo a sus necesidades. Esto es, si la necesidad de crear clientes nuevos no fuera mucha no tiene sentido establecer la programación con demasiada frecuencia.
En el caso de Hostens, el panel de control nos ofrece un asistente para los trabajos de cron como se muestra a continuación:
Fichero de creación de usuarios programado cada 5 minutos -
Intranet/Nextcloud (Parte 1/4)
Nuestra Intranet parte de una instalación de Nextcloud con varios retoques.
Cualquier proveedor de internet tiene en su panel cpanel/plesk una forma de instalar Nextcloud muy sencilla. En nuestro caso el hosting de pruebas está en https://www.hostens.com que para las pruebas iniciales está bien.
En su amplio repertorio de aplicaciones está Nextcloud:
Parte del repertorio de aplicaciones de Hostens La instalación no nos llevará mas que unos cuantos clics. De esta forma ya tenemos nuestro Nextcloud instalado:
Nextcloud instalado en el panel de Hostens Una vez instalado necesitaremos acceder a él y crear el usuario y la contraseña que será el administrador de nuestra intranet. En este momento tenemos Nextcloud instalado pero todavía nos quedan unos ajustes para adaptarlo a nuestras necesidades de Intranet.
- Ponerlo en castellano y habilitar nuestro dominio.
Tenemos que modificar/añadir un par de claves que se encuentran en el archivo config/config.ini del directorio de nuestra instalación.
Hostens nos provee en el panel de control de un administrador de ficheros con el que podemos hacer los cambios:
Acceso a config.php Aquí retocaremos el apartado dominio y el lenguaje:
En el array ponemos los dominios desde los que llamaremos a nextcloud Para que todo aparezca en castellano 2. Estructura de carpetas para los usuarios
También hay que preparar el /core/skeleton para que al crear el usuario nos aseguremos que la estructura es correcta.
Cada usuario tendrá la carpeta Factura en su home. 3. Cron
Nextcloud recomienda en su instalación que se programe una tarea de cron en el sistema que lo albergue para su correcto funcionamiento. Aunque existen varias posibilidades, lo mejor, cron.
Seleccionamos cron en los ajustes del administrador. Hostens nos provee también de una interfaz muy amigable para establecer la tarea de cron de Nextcloud cada 5 minutos.
Acceso a Cron en el panel de Hostens Tarea de cron creada con el asistente 4. Configuración de nuestro correo saliente.
Necesitaremos una cuenta de email que será el remitente de cuantos correos mandemos a los clientes. Se ha de configurar en los ajustes del administrador de NextCloud (Ajustes básicos):
Configuración de correo saliente 5. Configurar las aplicaciones instaladas.
Por defecto, Nextcloud incluye muchas aplicaciones instaladas que en nuestro caso no son necesarias.
En el panel de control del administrador debemos dejar exclusivamente las aplicaciones que se describen en la siguiente captura:
Aplicaciones instaladas en nuestra intranet Todas las demás aplicaciones no aportan para nuestro caso. Las dejaremos deshabilitadas.
6. Estructura del usuario administrador.
El usuario administrador debe tener una configuración de carpetas como la que se describe en la siguiente imagen:
Estructura de las carpeta en la zona de administración - Clientes_CSV : Contendrá los ficheros csv con los clientes que nuestros scripts crearán en NextCloud en un formato que se verá mas adelante.
- Plantillas_Email: Nuestros scripts pueden mandar correos con un formato preestablecido o bien leer los ficheros html de esta carpeta para mandar emails personalizados.
- Reparto_Facturas: El administrador subirá a esta carpeta los ficheros de facturas con formato pdf que nuestros scripts repartirán a los clientes que les correspondan.
- scripts: Contiene los scripts python del programa.
-
Creación de Intranet/Nextcloud
Hace un tiempo desarrollé unos scripts en Python para cubrir una necesidad que puede surgir en una empresa pequeña con pocos recursos como es la de dotar a sus propios clientes de un espacio donde éstos puedan consultar sus facturas y descargarlas.
Los scripts que funcionarán prácticamente en cualquier hosting o máquina dedicada efectuarán las siguientes acciones:
- Creación de usuarios importando un script csv sencillo. Se mandará al usuario un email con los datos para el primer acceso incluyendo una clave aleatoria.
- Reparto de las facturas en pdf que la empresa subirá a su zona de administración con el formato id_factura.pdf. El sistema notificará al usuario por email de nuevas facturas en su zona de usuario.
Las ventajas de este sistema son muchas:
- Aprovechar la infraestructura que crea una software open source como es Nextcloud: seguridad de los datos y simplicidad de manejo.
- Los documentos sensibles como son las facturas «no viajan» al correo electrónico del usuario, sino que es el cliente final el que accede a sus facturas.
- Aislamiento. Aunque Nextcloud es una plataforma en la que se fomenta el intercambio de información entre usuarios también se puede adaptar para que los usuarios estén aislados de los otros.
- A través de un fichero de configuración de texto, el administrador puede adaptar distintos parámetros de su hosting como son los distintos paths o la configuración de su correo saliente.
- Los scripts en Python serán publicados en Github para que se puedan adaptar a otras necesidades si así se requiere.
A través de una serie de próximos artículos iré explicando desde la configuración inicial de Nextcloud hasta la configuración de los scripts y su programación en cron.
-
Linux Smart Enumeration
Empezamos con unos oneliners rápidos:
wget "https://github.com/diego-treitos/linux-smart-enumeration/raw/master/lse.sh" -O lse.sh;chmod 700 lse.sh
curl "https://github.com/diego-treitos/linux-smart-enumeration/raw/master/lse.sh" -Lo lse.sh;chmod 700 lse.sh
Este proyecto está inspirado por https://github.com/rebootuser/LinEnum y usa la mayoría de sus tests.
A diferencia de LinEnum,
(más…)lse
trata de mostrar la información ordenada desde el punto de vista de su importancia en cuanto a privilegios se refiere. -
WSL 2 en Windows 10
Lo primero que hay que comprobar es tener la última versión de windows instalada, concretamente la versión 2004 a fecha de hoy. Esto se puede comprobar con el comando «winver» de windows.
Necesitaremos activar un par de características de windows. Para ello ejecutaremos:
…para seleccionar las siguientes dos características:
Y reiniciamos el equipo.
Debemos instalar ahora el kernel de Linux para el WSL2. Lo haremos en la siguiente página:
Desde la tienda de aplicación de Microsoft instalamos la distribución de Linux que queramos:
Después desde PowerShell (como Administrador) revisaremos la versión que este corriendo la distro instalada:
wsl --list --verbose
A continuación configuramos WSL 2 por defecto:
wsl --set-default-version 2
Con la distro instalada desde la tienda de aplicaciones de Microsoft, utilizamos los siguientes comandos desde la consola del Linux instalado:
sudo apt update && sudo apt upgrade -y
para actualizar linux.
sudo apt install kali-desktop-xfce -y
para instalar un entorno gráfico en dicho Linux.
sudo apt install xrdp -y
para instalar el servidor de escritorio remoto en nuestro Linux.
sudo service xrdp start
para levantar el servicio de escritorio remoto recién instalado.
cat /etc/os-release
para averiguar la versión concreta del Linux instalado.
ip add
para averiguar la ip que tiene nuestro Linux.
Desde el propio Windows podemos ejecutar el cliente de escritorio remoto facilitando la ip que acabamos de averiguar del Linux.
De esta forma tenemos un subsistema Linux con entorno gráficos en nuestro windows 10 sin necesitad de usar hypervisores de terceros como VirtualBox o vmWare.
-
Configuración Pihole en Synology Docker
De muchos es sabido que Pihone se está convirtiendo en un elemento imprescindible en toda red que pretenda estar mas protegida de trackers, anuncios intensivos, etc.
En este post pretendo añadir la configuración básica para que Pihole en el Docker de Synology funcione adecuadamente. Los pasos principales son:
- Descarga de la última versión de Pihole desde el menú «Registro» de Docker.
2. Una vez descargada la iniciamos.
-
Securización de router Mikrotik
Expongo aquí unas buenas prácticas básica que deberiamos hacer cada vez que instalemos o restauremos un router Mikrotik con su s.o. RouterOs.
- 1. Cambiar el usuario por defecto y eliminar el admin.
/user add name=myname password=mypassword group=full /user remove admin
2. Eliminar servicios que no usamos.
/ip service disable telnet,ftp,www,api,api-ssl /ip service print
3. Cambiar el puerto por defecto del servicio ssh.
/ip service set ssh port=2200 /ip service print
4. Configuración del cortafuegos IPV4
- Trabajar con conexiones nuevas para bajar la carga de la cpu.
- Crear una address-list para las direcciones Ip’s a las que concedemos permiso para administrar el router
- Aceptar conexiones icmp
- Rechazar todas las demás conexiones input.
/ip firewall filter add action=accept chain=input comment="default configuration" connection-state=established,related add action=accept chain=input src-address-list=allowed_to_router add action=accept chain=input protocol=icmp add action=drop chain=input /ip firewall address-list add address=192.168.88.2-192.168.88.254 list=allowed_to_router add address=172.26.0.2-172.26.0.254 list=allowed_to_router
5. Reglas IPV4 para clientes
- Los paquetes Established/related son añadidos a fasttrack para una rápida gestión.
- Rechazar conexiones inválidas y hacer log de ellas con el prefijo «invalid»;
- Rechazar intentos de llegar a direcciones no públicas desde el interior de la red local, aplicar address-list=not_in_internet antes, bridge1 es la interfaz LAN, registrar los intentos con !public_from_LAN;
- Rechazar paquete que no son NATeados, ether1 is la interfaz WAN, registrar estos intentos con el prefijo !NAT prefix;
- Rechazar paquetes desde internet, los cuales no son direcciones públicas, ether1 es la WAN, registrar los intentos con el prefijo !public;
- Rechazar los paquetes desde LAN que no tienen IP de la LAN;
/ip firewall filter add action=fasttrack-connection chain=forward comment=FastTrack connection-state=established,related add action=accept chain=forward comment="Established, Related" connection-state=established,related add action=drop chain=forward comment="Drop invalid" connection-state=invalid log=yes log-prefix=invalid add action=drop chain=forward comment="Drop tries to reach not public addresses from LAN" dst-address-list=not_in_internet in-interface=bridge1 log=yes log-prefix=!public_from_LAN out-interface=!bridge1 add action=drop chain=forward comment="Drop incoming packets that are not NATted" connection-nat-state=!dstnat connection-state=new in-interface=ether1 log=yes log-prefix=!NAT add action=drop chain=forward comment="Drop incoming from internet which is not public IP" in-interface=ether1 log=yes log-prefix=!public src-address-list=not_in_internet add action=drop chain=forward comment="Drop packets from LAN that do not have LAN IP" in-interface=bridge1 log=yes log-prefix=LAN_!LAN src-address=!192.168.88.0/24 /ip firewall address-list add address=0.0.0.0/8 comment=RFC6890 list=not_in_internet add address=172.16.0.0/12 comment=RFC6890 list=not_in_internet add address=192.168.0.0/16 comment=RFC6890 list=not_in_internet add address=10.0.0.0/8 comment=RFC6890 list=not_in_internet add address=169.254.0.0/16 comment=RFC6890 list=not_in_internet add address=127.0.0.0/8 comment=RFC6890 list=not_in_internet add address=224.0.0.0/4 comment=Multicast list=not_in_internet add address=198.18.0.0/15 comment=RFC6890 list=not_in_internet add address=192.0.0.0/24 comment=RFC6890 list=not_in_internet add address=192.0.2.0/24 comment=RFC6890 list=not_in_internet add address=198.51.100.0/24 comment=RFC6890 list=not_in_internet add address=203.0.113.0/24 comment=RFC6890 list=not_in_internet add address=100.64.0.0/10 comment=RFC6890 list=not_in_internet add address=240.0.0.0/4 comment=RFC6890 list=not_in_internet add address=192.88.99.0/24 comment="6to4 relay Anycast [RFC 3068]" list=not_in_internet
Fuente wiki mikrotik