Implementación de Retpoline en Windows 10 Pro

Google desarrolló Retpoline, una técnica inteligente de control de flujo, para acelerar drásticamente las operaciones y procesos dependientes de la ejecución especulativa. La clave de Retpoline es hacerlo, además, sin comprometer la seguridad.

Microsoft ha adaptado recientemente Retpoline al kernel de Windows. En este artículo detallo la Implementación de Retpoline en Windows 10 Pro, con esta optimización conseguiremos mejoras de velocidad de un 25 – 50 % en ciertas áreas.

Google desarrolló Retpoline, una técnica inteligente de control de flujo, para acelerar drásticamente las operaciones y procesos dependientes de la ejecución especulativa. La clave de Retpoline es hacerlo, además, sin comprometer la seguridad.

Retpoline tiene como objetivo acelerar drásticamente las operaciones y procesamiento que dependen de la ejecución especulativa sin comprometer la seguridad.

En este artículo detallo como activar Retpoline en sistemas Windows 10 y aprovechar sus ventajas en velocidad.

Prestaciones con Retpoline habilitado

Por todos es conocida la gran afectación en prestaciones y velocidad que acarrearon los patches para todos los sistemas operativos Windows y distribuciones Linux para mitigar las vulnerabilidades descubiertas debidas a ejecución especulativa.

Según estudios de Microsoft, la implementación de Retpoline en el Kernel de Windows 10 ha aportado importantes mejoras en velocidad:

  • Hasta un 25% de mejora en el tiempo de lanzamiento de  aplicaciones.
  • Un 50% en el rendimiento del almacenamiento en los puntos de referencia de DiskSpd.
  • Mejoras drásticas en operación con redes  en las CPU de Broadwell 14 nm y Haswell 22 nm.

Bien, manos a la obra, vamos a habilitar Retpoline en nuestro sistema Windows 10 Pro.

Implementación en Windows 10 Pro

Los procedimientos aquí detallados están pensados para sistemas basados en CPUs Intel Broadwell y anteriores (Haswell, IvyBridge, …) con Windows 10 1809 instalado. No son compatibles con CPUs Intel Skylake:

«Since Retpoline is a performance optimization for Spectre Variant 2, it requires that hardware and OS support for branch target injection to be present and enabled. Skylake and later generations of Intel processors are not compatible with Retpoline, so only Import Optimization will be enabled on these processors.»

Lanzamos Windows PowerShell como administrador y ejecutamos:

PS> Install-Module -Name SpeculationControl
Instalación de Retpoline en Windows 10. Speculation Control
Instalación de Retpoline – Speculation Control

Y después:

PS> # Guardamos estado política ejecución
PS> $SaveExecutionPolicy = Get-ExecutionPolicy

PS> # comprobamos la variable
PS> echo $SaveExecutionPolicy
PS> Restricted

PS> # Ajustamos nueva política ejecución a RemoteSigned
PS> Set-ExecutionPolicy RemoteSigned -Scope Currentuser

PS> # Guardamos estado nueva política ejecución
PS> $SaveNewExecutionPolicy = Get-ExecutionPolicy

PS> # comprobamos la variable
PS> echo $SaveNewExecutionPolicy
PS> RemoteSigned
Instalación de Retpoline en Windows 10. Set-Execution Policy
Instalación de Retpoline – Set-Execution Policy

Continuamos:

PS C:\> Import-Module SpeculationControl
PS C:\> Get-SpeculationControlSettings

Aquí vemos los ajustes actuales del sistema operativo de la máquina de tests:

Instalación de Retpoline en Windows 10. Get-SpeculationControlSettings
Instalación de Retpoline – Get-SpeculationControlSettings

Y ahora debemos insertar valores en el registro de Windows. Esta es la implementación de retpoline en sí.

En SKUs de sobremesa o portátiles debemos ejecutar lo siguiente:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0x400

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 0x400

Instalación de Retpoline en Windows 10. reg add
Instalación de Retpoline – Adiciones claves al registro: reg add

Y reiniciar la máquina. Comprobamos que se ha aplicado la configuración:

PS> Get-SpeculationControlSettings

Retpoline activado en Windows 10
Retpoline correctamente activado en Windows 10
Retpoline activado en Windows 10
Retpoline correctamente activado en Windows 10

Como vemos, tras el reinicio ya tenemos Retpoline activado.

Nuestro equipo será mucho más rápido en múltiples tareas, sobretodo en las relacionadas con el almacenamiento, redes y arranque de aplicaciones.

Bibliografía complementaria

Microsoft: Retpoline en el kernel de Windows 10:

Artículo original de Google sobre a optimización Retpoline:

Intel sobre Retpoline en Skylake vs. arquitecturas anteriores (Broadwell 14 nm, Haswell 22 nm, IvyBridge 22 nm…):

Hasta la próxima.

Carlos Yus Valero

VirtualBox Guest Additions en VM Red Hat RHEL 7.6

Dedico este artículo a la instalación de las VirtualBox Guest Additions en un Host Windows 10 Pro.

Las Guest Additions brindan numerosas posibilidades a nuestras máquinas virtuales y facilita mucho su utilización.

Oracle VM VirtualBox
Oracle VM VirtualBox

En este caso el Sistema Guest es un Red Hat RHEL 7.6 Server con interfaz gráfica. En otro artículo detallaré su instalación en una VM VirtualBox y algunas claves de configuración.

Recientemente hablé en este Blog sobre virtualización. En mi anterior artículo me centré en optimizar las prestaciones de VMs en VirtualBox para Windows 10. Estas optimizaciones de rendimiento iban dirigidas a máquinas con procesadores multicore, específicamente a CPUs con 8 cores y 16 threads como los AMD Ryzen 7 2700X o los Intel Core i9 9900K.

Instalación de las VirtualBox Guest Additions

La instalación es sencilla pero no está exenta de unos cuantos pasos, muchos de ellos se realizan en consola y con privilegios root.

Continuar leyendo «VirtualBox Guest Additions en VM Red Hat RHEL 7.6»

Datos gratis para tu proyecto IoT

En el departamento de I+D+i estamos en pleno desarrollo de un proyecto IoT (Internet of Things) que necesita una conexión a Internet fiable con la que trabajar 24/7. Es un producto enfocado tanto a particulares como a empresas del cual se podrían querer instalar de uno a decenas o cientos.

Tras varias semanas de pruebas y análisis de datos decidimos que lo mejor para poder instalar y probar nuestro producto a pequeña escala sería dotarlo de conexión propia con un módem USB, así que tras analizar el mercado existente hemos apostado por el Huawei E3531.

La tarifa de datos para el proyecto IoT

Pero todavía nos faltaba una decisión importante: la tarifa de datos.

Nuestra estimación es que el dispositivo necesite aproximadamente 1 MB diario para comunicarse con uno de nuestros VPS. Estuvimos un par de días comparando tarifas de operadoras tradicionales y de conocidas y desconocidas OMV. Las tarifas de contrato estaban casi descartadas de entrada, porque tener que pagar un mínimo cada mes encarecería el producto final.

Por otro lado, existen algunas tarifas prepago interesantes como 3€ por un bono de 300 MB. El problema es que el bono tiene una duración de 1 mes natural y, o no podías acumular los datos sobrantes, o tenías que pagar un plus por poder hacerlo.

La alternativa gratuita: FreedomPop

Continuar leyendo «Datos gratis para tu proyecto IoT»

CSS3 transform translate – Centrar elemento

CSS3 transform translate, o más correctamente transform:translate, nos sirve para centrar un elemento en una posición fija, relativa o absoluta.

CSS3 transform translate: Por norma general entendemos que para centrar un elemento en una página web lo podemos hacer con los parámetros CSS3:

top:50% y left:50%

Pero ¿Porqué no nos queda justamente en el centro? Una solución sería margin:auto podemos centrar un elemento con un:

 width:100% y height:100%

Dentro de otro con medidas reducidas pero si no tenemos ese elemento contenedor ¿Cómo lo conseguimos?

Hay que tener en cuenta que un elemento puede tener un tamaño específico de ancho y largo, por lo tanto dependiendo del tamaño del objeto nos queda descentrado. Continuar leyendo «CSS3 transform translate – Centrar elemento»

Bloqueando reincidentes de Fail2ban

Fail2ban escanea logs (por ejemplo /var/log/auth.log), bloqueando IPs que muestran comportamientos maliciosos.

Es una gran herramienta en la que se pueden configurar jaulas para los diferentes tipos de servicios que tengáis en vuestro servidor, protegiendo de esta manera intentos de acceso con contraseña errónea (fuerza bruta) o incluso bots maliciosos en busca de páginas comunes entre tus webs y que suelen obtener un 404.

Bloqueando reincidentes de Fail2ban

Con éste sencillo script, podéis crear una tarea en cron para que cada minuto lea el fichero en el que Fail2ban registra su actividad, en busca de IPs que ya han sido baneadas, pero siguen insistiendo.

Continuar leyendo «Bloqueando reincidentes de Fail2ban»