Activar el modo de compatibilidad con Internet Explorer de Microsoft Edge

Ayer se acabó la era IE, tras mucho tiempo anunciándolo Microsoft jubilaba definitivamente Internet Explorer para todos aquellos usuarios que tengan una versión de Windows actualizada. A pesar de los avisos mucha gente todavía depende de Internet Explorer por la necesidad de recurrir a controles ActiveX para diversas cosas: interactuar con algún hardware antiguo (una tableta de firma, un lector de huellas, una máquina de radiología…), utilizar aplicaciones internas de tipo intranet, creo que algunas páginas de la administración todavía dependen de IE para algunos certificado digitales, etc. ¿Qué solución tiene esta gente? La más radical sería montar una máquina virtual con Windows 7 para tener IE11, pero no es lo más práctico. Microsoft Edge incorpora un modo de compatibilidad con IE, que en principio se mantendrá hasta 2029 (luego ya se verá).

¿Cómo activamos el modo IE de Edge?

Es muy simple, pulsando sobre el icono de los tres puntos en la esquina superior derecha se desplegará este menú:

Ahí tenéis una opción que es Volver a Cargar en modo Internet Explorer. Al pulsarla recargará la página usando un motor que emula las características del de Explorer. Cuando lo activemos nos pedirá que confirmemos si queremos abrir esta dirección siempre en ese modo, con un aviso como este:

Si necesitáis configurar las Opciones de Internet, a las que antes se accedía desde el menú de Explorer ahora debéis buscarlas en el Panel de Control del sistema operativo, por el resto se configuran igual.

El portapapeles avanzado de Windows 10 y 11

Seguramente el portapapeles sea una de las funciones más usadas de Windows: pulsas Ctrl+C para copiar una cosa y después Ctrl+V para pegarla, pero ¿cuántas veces han pulsado Windows+V? Seguramente mucha de la gente que está leyendo esto no conoce este atajo de teclado y esta funcionalidad.

Tradicionalmente el portapapeles en Windows tenía una memoria limitada a un solo item: copiamos algo y si después copiamos otra cosa entonces la primera se va al mágico limbo donde van los sueños cuando nos despertamos (o similar). Desde Windows 10 esta memoria puede ampliarse para que guarde múltiples registros, algo que podemos hacer de dos formas:

  • La primera es irnos a la configuración de Windows, allí buscar en el menú de la izquierda la sección portapapeles y una vez escogida marcamos Activado el Historial del Portapapeles.
  • La otra opción es pulsar directamente la combinación de teclas Windows+V, si está desactivado nos dirá que tenemos que activarlo y ya tendremos allí un botón de Activar para hacerlo sin tener que ir a la configuración.

Una vez hayamos activado esto, cada vez que usemos el comando Copiar o Ctrl+C se añadirá una entrada al historial. Si pulsamos Ctrl+V funcionará como siempre y pegará lo último que hayamos copiado, pero si pulsamos Windows+V entonces veremos una lista con lo que tengamos copiado y desde ahí podremos escoger la que queramos pegar.

Incluso, si utilizas una cuenta de Microsoft para acceder a Windows, podrás sincronizar este portapapeles entre varios dispositivos, pudiendo acceder a todo el historial desde todos. Esto puedes configurarlo desde el menú de configuración que veíamos en el primer punto.

¿Contras y riesgos de esto? Bueno, por motivos de privacidad y seguridad es recomendable borrar el historial de vez en cuando, dado que si una persona accede al dispositivo podría ver todo lo que hayamos copiado y pegado.

Buscador de comandos en Visual Studio Code

Seguimos hablando de Visual Studio Code y de trucos para ser más productivos utilizándolo, que ya hemos visto unos cuántos.

Este editor tiene un buen montón de útiles comandos y además muchos de ellos pueden ser ejecutados a través de atajos de teclado, pero la cantidad es tan grande que es imposible recordarlos todos y recordar todos sus atajos. ¿Tenemos una solución? Sí, VSCode incluye un buscador de comandos que podemos abrir pulsando a la vez las teclas CTRL, SHIFT y P, lo cual nos abrirá un diálogo de texto para que busquemos el comando que necesitamos, sin tener que estar dando vueltas por los menús como pollos sin cabeza.

Siete extensiones para VSCode que me resultan de mucha ayuda.

Ya sabéis muchos que hace un tiempo me lancé a los brazos del Tío Bill y su malvada Microsoft y comencé a trabajar con el editor VSCode. Una de las virtudes de este editor es su extensibilidad, sus capacidades pueden ser ampliadas añadiéndole distintos plugins que nos ayuden a ser más productivos, a hacer más con menos. Aquí va una lista con siete:

  • Regex Previewer: Las expresiones regulares pueden volverse un dolor de cabeza en muchos casos. Esta extensión nos ayudará con ellas, ya que mientras la escribimos y editamos podremos ver en el panel contiguo un documento con ejemplos y comprobar cuales pasan la validación mientras la modificamos.
  • JavaScript Debugger: Un depurador de Javascript que nos permite revisar nuestro código en Node.js, Chrome, Edge, WebView2, o en el desarrollo de extensiones de VSCode.
  • JavaScript Code Snippets: Siguiendo con el Javascript, esta extensión trae distintos ejemplos de código ya cargados para que con solo teclear una abreviatura nos genere todo un bloque.
  • GitHub Copilot: Llevamos unas semanas en las que no para de hablarse de la llegada de las IA para revolucionarlo todo, y la más útil para desarrolladores parece ser GitHub Copilot, un asistente que te ayudará sugiriéndote el siguiente paso mientras escribes código. El «contra» aquí es que es de pago, aunque si quieres probarla puedes hacer uso de la demo gratuita. Menos espectaculares, aunque gratuitas, son las extensiones IntelliCode y la todavía experimental IntelliCode Completions, que ofrecen un intellisense supuestamente más eficiente y mejorado gracias al uso de inteligencia artificial.
  • Colorize: Puede parecer una chorrada, pero a la hora de trabajar con CSS esta extensión es de gran ayuda. Simplemente cuando definamos un color en nuestra hora de estilos esta línea se subrayará con dicho color.
  • CSS Peek:Otra herramienta para el desarrollo front-end que nos permite acceder desde nuestro código HTML al CSS vinculado con él.
  • GitLens: Finamente, si trabajas con Git,esta extensión te facilitará mucho la visualización de los cambios que haya sufrido el código y su historial.

Usar PowerShell para comprobar si un puerto responde a una conexión.

Tenéis que disculparme por desaparecer un par de meses, pero se me ha juntado una sobrecarga de trabajo con intentar acabar un curso de informática forense. La buena noticia es que ahora os podré contar más cosas sobre más temas, que de algo sirve estudiar xDDD.

La última vez que os escribí por aquí os contaba cómo podíamos comprobar que un servidor de correo respondía en un puerto concreto. Hoy vamos a ver cómo podemos comprobar de forma muy sencilla desde PowerShell si un puerto está respondiendo.

El comando tnc, abreviatura de Test-NetworkConnection, nos permite comprobar si un puerto responde. Requiere dos parámetros dicho comando, el primero es obligatorio y sería la IP o el nombre del host, el segundo es opcional y sería el puerto concreto que queremos comprobar (precedido del parámetro -port). La sintaxis básica sería:

tnc eldominiooip.com -port ElPuertoQueSea

Si no especificamos puerto simplemente sabremos si dicha IP o nombre de red tiene conexión, si lo especificamos sabremos además si el puerto está abierto o a la escucha. Esta mañana tenía que comprobar si un servidor web respondía en el puerto 8080, así que mandé el siguiente comando:

tnc dominio.ejemplo.com -port 8080

La respuesta que obtuve fue que la conexión TCP había fallado. Tras llamar al cliente confirmamos que le habían cambiado el router y no habían abierto el puerto. En este ejemplo fue el puerto 8080 de un servidor web, pero también podéis probar cualquier otro puerto, ya sea para un servicio web, ftp, smtp, etc.

Comprobar manualmente si un servidor de correo responde en un puerto concreto

Esta mañana tenía que ver por qué un cliente no podía enviar correos desde el software que le proporciona mi empresa, el cliente insistía en que había configurado bien su cuenta pero la aplicación devolvía un error en la capa de transporte… así que algo no estaba bien. Me pareció raro que el puerto del SMTP fuese el 25 porque su proveedor de correo normalmente usa el puerto 465 y autenticación SSL. ¿Podía comprobar esto? Pues sí, abrí una consola y probé:

telnet mail.direcciondemicliente.com 25

Y la respuesta que obtuve es que el servidor no conectaba, así que luego probé a usar openssl para comprobar si respondía en el puerto 465:

openssl s_client -connect mail.direcciondemicliente.com:465

Y ahí ya recibí un mensaje que empezaba por 220 y me decía que el servidor estaba ready for the chachachá. Cambié la configuración de los puertos en su correo y todo fue como la seda.

Así que si queréis comprobar si un servidor de correo responde podéis usar Telnet como en el primer ejemplo (telnet dirección puerto) en el caso de que la conexión no esté cifrada, mientras que con openssl podéis hacer la misma comprobación en servidores que usen validación SSL. ¿Y si usan TLS? Pues con openssl también pero con más parámetros, tal que así:

openssl s_client -starttls smtp -connect mail.direcciondemicliente.com:587

Powershell: obtener la temperatura de la placa base en grados celsius.

¿Se puede obtener la temperatura de la placa base en Windows sin necesidad de apps externas y sin tener que entrar al a BIOS? Se puede con PowerShell.

Lo primero que tenemos que hacer es ejecutar PowerShell con permisos de administrador. Luego si ejecutamos este comando podríamos obtener un array con un par de lecturas de la temperatura de nuestra placa base en ese momento:

$(Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi").CurrentTemperature

Pero claro, esto no nos da la temperatura en grados celsius, ni siquiera en kelvin realmente. Si queremos ver esos datos tenemos que operar: si dividimos ese valor entre 10 obtendremos la temperatura en grados kelvin, después para convertir de kelvin a celsius habría que restar 273.15 grados. Estas operaciones podemos meterlas directamente en el comando que ejecutamos para no tener que andar haciendo cálculos manuales. Ojo, porque el objeto al que llamamos nos devuelve un array, para poder operar yo voy a acceder al primer elemento de la respuesta y forzar la conversión a entero para poder trabajar sin problema. Nos quedaría tal que así:

[int]($(Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi").CurrentTemperature[0])/10-273.15

Voy a recalcar que esta temperatura es la de la placa base y no la del procesador, que generalmente suele ser más alta.

Ciberseguridad: consejos a la hora de usar conexiones con el protocolo RDP

El protocolo de acceso a escritorio remoto (en adelante RDP) ha formado parte de Windows desde hace años, apareciendo originalmente para Windows XP. Cuando nos conectamos por RDP tenemos un equipo que hace de servidor, al que nos conectaremos, y el resto de equipos serán clientes. Aunque es una forma muy cómoda de trabajar también hay que señalar que con el paso de los años se ha quedado bastante obsoleto en términos de seguridad: carece de encriptación y es muy sensible a los ataques por fuerza bruta. Cuando durante el confinamiento de marzo-mayo de 2020 muchas empresas se lanzaron a teletrabajar sin un plan claro, dada la urgencia, se abusó de estas conexiones y muchas sufrieron problemas de seguridad (recuerdo haber leído un artículo en Twitter allá sobre el 18 de marzo donde ya se remarcaba la cantidad de escritorios remotos vulnerables que se podían localizar en España). Los delincuentes intentar servirse de conexións RDP vulnerables para instalar ransomware, spyware o practicar el cryptojacking.

Fotografía genérica de un app de seguridad.
Photo by Pixabay on Pexels.com

¿Cómo podemos usar RDP de forma segura?

Vamos a plantear varios puntos. El primero ¿necesitamos conexión vía RDP para trabajar? En muchos casos es más seguro implementar soluciones de trabajo a través de portales en la nube, claro que también requiere de una inversión en desarrollo (que se verá compensada en el largo plazo por la mejora en productividad y en seguridad).

En caso de que realmente necesitemos esta conexión vamos con el siguiente punto ¿Está nuestro software actualizado? Este es un punto recurrente en todas las entradas sobre ciberseguridad, pero es importante recordar que un equipo desactualizado suele ser más vulnerable ante cualquier tipo de ataque. No olvides descargar siempre las actualizaciones de seguridad del sistema operativo.

Los ataques más comunes contra los escritorios remotos son ataques de fuerza bruta y en muchos casos se sirven de un diccionario de usuarios y contraseñas, por lo que es recomendable no utilizar nombres genéricos para los usuarios (tipo Admin, Administrador, Administrator, etc.) dificultando así el trabajo del atacante, además de complementarlo con una política de contraseñas robustas. A día de hoy depender solo de la contraseña puede no ser suficiente, por lo que sería recomendable utilizar alguna solución para realizar una autenticación de dos factores, ya sea a través de datos biométricos, de una clave generada al momento que se envíe al usuario o del uso de un dispositivo externo para la validación. Otra buena política es bloquear el acceso de un usuario a través de este protocolo tras un número determinado de intentos fallidos de conexión. También es importante definir bien los permisos de los usuarios para limitar qué pueden y qué no pueden hacer según el trabajo que vayan a desempeñar. Un último consejo es no dejar «usuarios zombies«, cuántos más usuarios tenga el servidor más posibilidades tendrá el atacante de intentar entrar, por lo que si un usuario deja de utilizarse lo mejor será eliminarlo del sistema.

Una de las mejores soluciones que tenemos para hacer más robusta nuestra seguridad en los accesos a un servidor por RDP es utilizar una VPN: por un lado nos dará un cifrado para nuestras comunicaciones, cosa de la que carece el protocolo RDP, y por otro podremos limitar el acceso al servidor y permitirlo solo a través de dicha VPN, lo que reduce enormemente las posibilidades de un ataque. Lo ideal es conectarse a través de una VPN, pero si por lo que sea no disponéis de una entonces al menos no utilicéis el puerto por defecto, el 3389, para la conexión. Cambiando este puerto se logra reducir un poco el número de ataques automatizados, aunque no es una solución ideal pues el atacante podría simplemente buscar los puertos a la escucha. También se puede implementar un filtrado por IP en el cortafuegos, pero es algo que solo recomendaría para empresas que cuenten con una IP fija, para el teletrabajo no acaba de ser una solución práctica pues la mayoría de conexiones domésticas utilizan direcciones IP dinámicas.

Cifrar la tarjeta SD en nuestro teléfono

Cuando ayer hablaba de apps de ciberseguridad para Android comentaba entre otras buenas prácticas de seguridad la idea de cifrar la tarjeta SD del dispositivo. Me habéis preguntado cómo se hace esto y por qué habría que hacerlo.

El por qué es simple: si alguien te roba tu teléfono puede que no sea capaz de desbloquearlo si lo has protegido con un patrón, datos biométricos, código pin, etc. pero si saca la tarjeta SD y la mete en otro dispositivo entonces podrá ver todo lo que hay en ella. ¿Ventajas de cifrarla? Mayor seguridad, si te roban el teléfono esos datos están protegidos, acceder a ellos es muy difícil, puede que no imposible pero sí muy complicado ¿Contras? Dos: una pequeña pérdida de rendimiento cuando accedas a la tarjeta que será más o menos significativa según la potencia del teléfono y, sobre todo, que una vez cifrada si se te estropea el teléfono no voy a decir que sea imposible recuperar esos datos, pero estás en la misma situación que el atacante: es complicado.

¿Cómo se cifra una tarjeta SD en Android?

Bueno, como siempre con Android dependemos mucho del fabricante y de la versión del sistema operativo. Como algo genérico diré que esa opción siempre va a estar en los ajustes del teléfono, donde deberemos buscar los que sean relativos a seguridad y dentro de los mismos deberíamos encontrar alguna referencia a la tarjeta SD.

Por ejemplo, en mi actual teléfono Samsung con Android 11 habría que ir a los Ajustes, allí a Datos Biométricos y Seguridad y dentro de ese menú ya aparece una opción que es Cifrar Tarjeta SD. Esto no era exactamente igual en mi anterior teléfono, un Huawei con Android 10, en el que para cifrar la tarjeta SD habría que ir a Ajustes, allí pulsar en Seguridad, dentro de ese menú ir a Ajustes adicionales, después apretar sobre Cifrado y credenciales y finalmente Cifrar tarjeta de memoria. Como véis esta opcion estará en el apartado de seguridad del teléfono, pero según el fabricante estará más accesibe o menos. En todo caso, seguramente en la web del fabricante del teléfono tendréis un manual de instrucciones de vuestro dispositivo en el que vendrán detalladas las instrucciones concretas para hacerlo en ese modelo.

Obtener nuestra IP externa desde el terminal de Linux usando el comando dig

Bueno, si ya vimos ayer cómo obtener nuestra IP externa desde el PowerShell de Windows y anteriormente desde Linux con cURL y con wget, hoy vamos a ver unha tercera forma de hacer esto desde Linux: con el comando dig (acrónimo de Domain Information Groper).

Para este ejemplo nos serviremos del servicio de OpenDNS, aunque también podría hacersce con otros como el de Google, Cloudflare o el de Ipify que usamos ayer. Básicamente tendríamos que usar este comando:

dig +short myip.opendns.com @resolver1.opendns.com

¿Y si queremos usarlo en un script? Pues basta con meter la respuesta que capturamos en una variable:

miDirIp="$(dig +short myip.opendns.com @resolver1.opendns.com)"