Después de importar manualmente un disco virtual a Compute Engine, debes optimizar esas imágenes para que puedan usar funciones específicas del entorno de Compute Engine.
Contenido
Instalar el entorno invitado de Compute Engine
Debes instalar el entorno invitado antes de poder utilizar las funciones clave de Compute Engine. Para saber cuándo necesita instalar manualmente el entorno invitado, consulte Cuándo instalar o actualizar manualmente el entorno invitado .
Instale el entorno invitado en la instancia de VM en ejecución que creó después de importar manualmente su imagen existente . Para realizar la instalación, acceda a la instancia de VM a través de SSH con una cuenta de usuario que creó antes de importarla o interactuando con la consola serie .
Configura tu imagen importada para Compute Engine
Puedes ejecutar tu imagen de disco de arranque en Compute Engine sin cambios adicionales, pero también puedes optimizar aún más la imagen para que se ejecute de manera óptima dentro de Compute Engine y tenga acceso a todas las funciones de Compute Engine.
Edite el archivo
ntp.conf
para incluir solo la entrada del servidorserver metadata.google.internal iburst
Google NTP.Establezca la zona horaria en UTC:
sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
Para garantizar una capacidad de red de alto rendimiento, utilice las siguientes configuraciones de red recomendadas:
- Utilice el cliente DHCP ISC .
- Configure la MTU de DHCP en la MTU de la red. El servidor DHCP de Compute Engine sirve este parámetro como la opción
interface-mtu
, que la mayoría de los clientes respetan. Para obtener más información sobre las MTU de red, consulte la descripción general de la unidad de transmisión máxima . - Si no planea configurar direcciones IPv6 , desactive IPv6.
Elimine las reglas de red persistentes para evitar que la instancia recuerde direcciones MAC. Por ejemplo:
rm -f /etc/udev/rules.d/70-persistent-net.rules
Deshabilite el firewall del sistema operativo a menos que tenga requisitos específicos que no sean compatibles con las reglas de firewall de Compute Engine. Compute Engine proporciona un firewall para el tráfico entrante y saliente. Para obtener más información sobre firewalls, consulte Descripción general de las reglas de firewall .
Para garantizar un alto rendimiento de la red y la capacidad del disco, deshabilite o elimine el demonio
irqbalance
. Este demonio no equilibra correctamente las solicitudes de IRQ para los sistemas operativos invitados en instancias de máquinas virtuales (VM). En su lugar, utilice los scripts que forman parte del entorno invitado para equilibrar correctamente la configuración de IRQ para las CPU virtuales.Configure el acceso SSH a la imagen base:
- Deshabilite el inicio de sesión ssh de root.
- Deshabilite la autenticación de contraseña.
- Deshabilite la autenticación basada en host.
- Habilite la verificación estricta de la clave del host.
- Utilice
ServerAliveInterval
para mantener las conexiones abiertas. Elimine las claves SSH de su imagen para que otros no puedan acceder a las claves públicas o privadas de su imagen. En su lugar, utilice Compute Engine para gestionar el acceso a las instancias .
Edite el archivo
/etc/ssh/ssh_config
para usar la siguiente configuración:Host * Protocol 2 ForwardAgent no ForwardX11 no HostbasedAuthentication no StrictHostKeyChecking no Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc Tunnel no # Compute Engine times out connections after 10 minutes of inactivity. # Keep alive ssh connections by sending a packet every 7 minutes. ServerAliveInterval 420
Edite el archivo
/etc/ssh/sshd_config
para usar la siguiente configuración:# Disable PasswordAuthentication because ssh keys are more secure. PasswordAuthentication no # Disable root login. Using sudo provides better auditing. PermitRootLogin no PermitTunnel no AllowTcpForwarding yes X11Forwarding no # Compute Engine times out connections after 10 minutes of inactivity. # Keep alive ssh connections by sending a packet every 7 minutes. ClientAliveInterval 420
Después de configurar y optimizar su disco de arranque en Compute Engine, cree una imagen a partir de ese disco de arranque para que pueda crear instancias a partir de una versión completamente optimizada de la imagen en lugar de tener que configurar cada instancia cada vez que la crea.
Configurar las mejores prácticas de seguridad
Siempre debe proporcionar un entorno de sistema operativo seguro, pero puede resultar difícil lograr un equilibrio entre un entorno seguro y accesible. Las máquinas virtuales que son vulnerables a ataques pueden consumir recursos costosos. Google recomienda encarecidamente que sus imágenes cumplan con las siguientes prácticas recomendadas de seguridad:
- Minimice la cantidad de software instalado de forma predeterminada (por ejemplo, realice una instalación mínima del sistema operativo).
- Habilite las actualizaciones automáticas.
- De forma predeterminada, deshabilite todos los servicios de red excepto SSH, DHCP y NTPD. Puede permitir que se ejecute un servidor de correo, como Postfix, si solo acepta conexiones desde localhost.
- No permita puertos de escucha externos excepto sshd.
- Instale el paquete denyhosts para ayudar a prevenir intentos de inicio de sesión por fuerza bruta SSH.
- Elimine todas las cuentas innecesarias que no sean de usuario de la instalación predeterminada.
- En
/etc/passwd
, configure el shell de todas las cuentas que no sean de usuario en/sbin/nologin
o/usr/sbin/nologin
(dependiendo de dónde instaló nologin su sistema operativo). - Configure su sistema operativo para usar SHA512 salado para contraseñas en
/etc/shadow
. - Instale y configure pam_cracklib para contraseñas seguras.
- Instale y configure pam_tally para bloquear cuentas durante 5 minutos después de 3 fallas.
En
/etc/shadow
, configure la cuenta raíz para que esté bloqueada de forma predeterminada. Ejecute el siguiente comando para bloquear la cuenta raíz:usermod -L root
Deniegue la raíz en
/etc/ssh/sshd_config
agregando la siguiente línea:PermitRootLogin no
Cree perfiles de AppArmor o SELinux para todos los servicios de red en ejecución predeterminados.
Utilice las capacidades del sistema de archivos siempre que sea posible para eliminar la necesidad del bit S*ID y proporcionar un control más granular.
Habilite las mitigaciones de vulnerabilidades del compilador y del tiempo de ejecución al compilar software orientado a la red. Por ejemplo, estas son algunas de las mitigaciones que ofrece GNU Compiler Collection (GCC) y cómo habilitarlas:
- Protección contra aplastamiento de pila: habilítela con
-fstack-protector
. De forma predeterminada, esta opción protege funciones con un búfer asignado por pila de más de ocho bytes. Para aumentar la protección cubriendo funciones con buffers de al menos cuatro bytes, agregue--param=ssp-buffer-size=4
. - Aleatorización del diseño del espacio de direcciones (ASLR): habilite esto creando un ejecutable independiente de la posición con
-fPIC -pie
. - Protecciones de Glibc: habilite estas protecciones con
-D_FORTIFY_SOURCE=2
. - Protección de tabla de compensación global (GOT): habilite esta función del cargador en tiempo de ejecución con
-Wl,-z,relro,-z,now
. - Errores en tiempo de compilación para cadenas de formato faltantes:
-Wformat -Wformat-security -Werror=format-security
- Protección contra aplastamiento de pila: habilítela con
Deshabilite
CAP_SYS_MODULE
, que permite la carga y descarga de módulos del kernel. Para desactivar esta función, edite el archivo/etc/sysctl.conf
e incluya la siguiente configuración:kernel.modules_disabled = 1
Retire la tabla de símbolos del kernel :
sudo rm /boot/System.map
¿Qué sigue?
- Una vez que su imagen esté lista para producción, cree una versión final de esa imagen personalizada e inclúyala en una familia de imágenes para que pueda administrar fácilmente versiones actualizadas de la imagen personalizada.
- Aprenda cómo iniciar una instancia a partir de una imagen .