miércoles, 4 de agosto de 2021

Error de Microsoft Teams C0070057



Cómo solucionar el error C0070057 que impide usar Microsoft Teams en Windows".



Al volver de vacaciones, encendí el PC del trabajo y al abrir Teams me encontré con este error:



Tras leer en reddit acerca de este fallo de Windows, lo que hice para solucionarlo fue ir a la opción correo electrónico y cuentas, clicando en el botón inicio y escribiendo "correo":



Cliqué sobre "Agregar una cuenta de trabajo o escuela" e introduje, de nuevo, mi cuenta de correo empresarial, para regenerar el perfil corrupto que provoca el error.

Una vez hecho esto, el pop up con el error dejó de aparecer y Teams volvió a funcionar con normalidad.
1

miércoles, 28 de julio de 2021

Replicar directorios entre 2 servidores Linux



Cómo replicar una estructura de directorios (sin archivos) entre dos servidores Linux.



Puede que necesitemos replicar una estructura de directorios entre 2 servidores Linux y que solo queramos copiar los directorios, no los archivos. En ese caso, podemos usar la herramienta rsync.

Para esta tarea, usaremos las siguientes opciones de rsync:

Copiar los directorios:

-f"+ */"

No copiar los archivos:

-f"- *"

Seguido de la ruta en origen y la ruta en destino:

HOST# rsync -av -f"+ */" -f"- *" /carpeta/ root@destino:/carpeta/

Tras ejecutar el comando anterior, el árbol de carpetas de origen, es decir, la carpeta que hemos indicado y todas sus subcarpetas, se copiarán en destino, sin los archivos que haya en su interior.

El resto de opciones de rsync significan:

-a: archive mode; es como ejecutar las opciones -rlptgoD
-v: mostrar más información por pantalla.

Rescto al parámetro -a / -rlptgoD, singifica:

-r, --recursivo: entra a los subdirectorios
-l, --links: copiar enlaces
-p, --perms: preservar pemisos
-t, --times: preservar marcas de tiempo
-g, --group: el grupo en destino es el mismo que el grupo en origen
-o, --owner: preservar el autor
-D, -devices --specials: transfiere archivos especiales
0

miércoles, 21 de julio de 2021

PowerShell: comprobar si un puerto está abierto



Cómo comprobar si un puerto está abierto usando PowerShell.



Para comprobar si un puerto está abierto, podemos usar el siguiente script de PowerShell:

Function Test-PortConnection { [CmdletBinding()] # Parameters used in this function Param ( [Parameter(Position=0, Mandatory = $True, HelpMessage="Provide destination source", ValueFromPipeline = $true)] $Destination, [Parameter(Position=1, Mandatory = $False, HelpMessage="Provide port numbers", ValueFromPipeline = $true)] $Ports = "80" ) $ErrorActionPreference = "SilentlyContinue" $Results = @() ForEach($D in $Destination) { # Create a custom object $Object = New-Object PSCustomObject $Object | Add-Member -MemberType NoteProperty -Name "Destination" -Value $D Write-Verbose "Checking $D" -ForegroundColor Yellow ForEach ($P in $Ports) { $Result = (Test-NetConnection -Port $p -ComputerName $D ).PingSucceeded If(!$Result) { $Status = "Failure" } Else { $Status = "Success" } $Object | Add-Member Noteproperty "$("Port " + "$p")" -Value "$($status)" } $Results += $Object # or easier way true/false value # # ForEach ($P in $Ports) # { # $Result = $null # $Result = Test-NetConnection -Port $p -ComputerName $D # $Object | Add-Member Noteproperty "$("Port " + "$p")" -Value "$($Result)" # } # # $Results += $Object # } # Final results displayed in new pop-up window If($Results) { $Results } }

Tras pegar el script en la consola de PowerShell, podemos usarlo de la siguiente manera:

Test-NetConnection -ComputerName hostname -Port 443

Dodne hostname es el hostname de la máquina y 443 el puerto a comprobar.
0

miércoles, 14 de julio de 2021

Evitar contenido HTTP usando NGINX con HTTPS



Cómo evitar mostrar contenido HTTP en una web HTTPS a través de NGINX.



Al pasar un dominio, digamos dominio.com, a través de NGINX actuando como proxy inverso, me encontré que algunos JavaScript no cargaban, por lo que la web funcionaba a medias.

Tras mucho rato tratando de averiguar por qué no cargaban los JavaScript, me di cuenta de lo siguiente:

1) Hacía un redirect HTTP a HTTPS en NGINX.

2) La web cargaba recursos en HTTP en su código fuente que a su vez trataban de ir a HTTPS debido mi configuración de NGINX, y, al estar en el código fuente, este redirect no funcionaba.

Tras dar muchas vueltas y probar sin éxito cosas como:

proxy_set_header X-Forwarded-Proto https;

acabé usando el siguiente header dentro del location del dominio en NGINX:

add_header 'Content-Security-Policy' 'upgrade-insecure-requests';

Esta directiva indica al navegador del usuario que trate todas las URL inseguras de un sitio (las que se sirven a través de HTTP) como si hubieran sido reemplazadas por URL seguras (las que se sirven a través de HTTPS). Esta directiva está destinada a sitios web con un gran número de URL heredadas inseguras.

La directiva 'upgrade-insecure-requests' se evalúa antes que 'block-all-mixed-content', por lo que permite cargar recursos HTTP vía HTTPS sin bloquearlos.
0

miércoles, 7 de julio de 2021

Aumentar tamaño de swap en Linux



Cómo aumentar el tamaño de swap por si el sistema se queda sin memoria RAM disponible.



Administro un sistema operativo Linux que corre directamente sobre una máquina física, sin ningún sistema de virtualización por en medio. Este sistema va algo corto de memoria RAM y cae a menudo.

Mientras espero la llegada de nuevos DIMM's de RAM, lo que he hecho ha sido aumentar el tamaño de swap para que pagine bajo demanda bajando a disco aquellos programas que no necesite usar en un momento dado para evitar que el sistema haga un kernel panic al no contar con la RAM necesaria.

Para aumentar el tamaño de swap en un sistema Linux, podemos aumentar la partición de swap o podemos añadir un swapfile que actúe como espacio swap. Lo más rápido es añadir un swapfile.

Para ello, creamos un directorio donde ubicar el fichero:

HOST # mkdir /swap

A continuación, creamos un swapfile de 100GB:

HOST # fallocate -l 100G /swap/swapfile

Si no disponemos de fallocate, podemos usar dd:

HOST # dd if=/dev/zero of=/swap/swapfile bs=1G count=100 100+0 records in 100+0 records out 107374182400 bytes (107 GB, 100 GiB) copied, 151.577 s, 708 MB/s

- bs indica el tamaño de los bloques a crear.
- count indica el número de bloques a crear en total.

bs * count = el número de GB del fichero.

Damos derechos de lectura/escritura/ejecución al fichero solo a root:

HOST # chmod 600 /swap/wapfile

Indicamos al sistema que el archivo es una swap area:

HOST # mkswap /swap/swapfile Setting up swapspace version 1, size = 100 GiB (107374178304 bytes) no label, UUID=37855cb5-34f6-45b6-a6a3-bdf87642abff

Activamos el fichero:

HOST # swapon /swap/swapfile

Recordar que este fichero se desactivará tras un reinicio del sistema operativo.

Por último, solo queda comprobar que swap ha aumentado su tamaño:

HOST # swapon --show NAME TYPE SIZE USED PRIO /dev/sdb3 partition 32G 0B -2 /swap/swapfile file 100G 0B -3

También podemos mirarlo con el comando free:

HOST # free -h total used free shared buff/cache available Mem: 1.3Ti 777Gi 275Gi 37Gi 324Gi 549Gi Swap: 131Gi 0B 131Gi

Si quisiéramos deshabilitar el swapfile:

HOST # swapoff /swap/swapfile

Listo.
0

miércoles, 9 de junio de 2021

Evitar contenido HTTP usando Apache con HTTPS



Cómo evitar mixed content warning en Apache.

Si servimos una web en HTTPS mediante Apache y esta enlaza a recursos como imágenes, css o JavaScript mediante links que usen HTTP, los navegadores no cargarán estos recursos.

Para evitar este problema, podemos configurar el siguiente código en el .htaccess:

<ifModule mod_headers.c> Header always set Content-Security-Policy "upgrade-insecure-requests;" </IfModule>

Este encabezado indica al navegador web que "actualice" las solicitudes HTTP a HTTPS sin tener que tocar código en el sitio web, pero solo funciona en navegadores modernos.


Tocando código


Si podemos tocar código, deberíamos cambiar los enlaces de la siguiente manera:

1) Modificando todos los enlaces para cargar archivos a través de HTTPS:

<img src="https://ejemplo.com/imagen.png">

2) Alternativamente, se puede prescindir de http y https y dejar que el servidor elija el esquema:

<img src="//ejemplo.com/imagen.png">

3) Por último, podemos usar rutas relativas:

<img src="/imagen.png">

NOTA: "//" hace que el navegador utilice el mismo esquema de la URL actual, por lo que utilizará https:// en las páginas HTTPS y http:// en las páginas HTTP.
0