Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Después de importar de forma manual un disco virtual a Compute Engine, debes optimizar esas imágenes para que puedan usar funciones específicas del entorno de Compute Engine.
Contenido
Instala el entorno invitado de Compute Engine
Debes instalar el entorno invitado para poder usar las funciones clave de Compute Engine. Para saber en qué situaciones debes instalar o actualizar manualmente el entorno invitado, consulta este artículo.
Puedes ejecutar la imagen de disco de arranque en Compute Engine sin realizar cambios adicionales, pero también puedes optimizarla más para que se ejecute de manera óptima en Compute Engine y tenga acceso a todas las funciones del servicio.
Edita el archivo ntp.conf para que incluya solo la entrada del servidor Google NTP server metadata.google.internal iburst.
Establece el DHCP MTU en la MTU de red. El servidor DHCP de Compute Engine entrega este parámetro como la opción interface-mtu, que la mayoría de los clientes respeta. Para obtener más información sobre las MTU de red, consulta la descripción general de la unidad de transmisión máxima.
Quita 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
Inhabilita el firewall del sistema operativo, a menos que tengas requisitos específicos que no sean compatibles con las reglas de firewall de Compute Engine.
Compute Engine proporciona un firewall para el tráfico de entrada y de salida. Para obtener más información sobre los firewalls, consulta Descripción general de las reglas de firewall.
Para garantizar una red de alto rendimiento y capacidad de disco, inhabilita o quita el daemon irqbalance. Este daemon no equilibra de forma correcta las solicitudes de IRQ para los sistemas operativos invitados en instancias de máquina virtual (VM). En su lugar, usa las secuencias de comandos que forman parte del entorno invitado para equilibrar de forma correcta la configuración de IRQ en las CPU virtuales.
Configura el acceso mediante SSH a la imagen base:
Inhabilita el acceso mediante SSH con permisos de administrador.
Inhabilita la autenticación de contraseña.
Inhabilita la autenticación basada en host.
Habilita la verificación estricta de la clave de host.
Usa ServerAliveInterval para mantener las conexiones abiertas.
Quita las Llaves SSH de tu imagen para que otros usuarios no puedan acceder a las claves públicas o privadas de tu imagen. En su lugar, usa Compute Engine para administrar el acceso a las instancias.
Edita 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
Edita 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 el disco de arranque en Compute Engine, crea una imagen a partir de él para poder crear instancias basadas en una versión optimizada por completo de la imagen en lugar de tener que configurar cada instancia que creas.
Configura las recomendaciones de seguridad
Siempre debes proporcionar un entorno de sistema operativo seguro, pero puede ser difícil lograr un equilibrio entre un entorno seguro y accesible.
Las máquinas virtuales que son vulnerables a los ataques pueden consumir recursos caros. Google recomienda que las imágenes cumplan con las siguientes prácticas de seguridad:
Minimiza la cantidad de software instalado de forma predeterminada (por ejemplo, realiza una instalación mínima del SO).
Habilita las actualizaciones automáticas.
De forma predeterminada, inhabilita todos los servicios de red, excepto SSH, DHCP y NTPD.
Puedes permitir que se ejecute un servidor de correo electrónico, como Postfix, si solo acepta conexiones del localhost.
No permitas puertos de escucha externos, excepto sshd.
Instala el paquete denyhosts para ayudar a prevenir los intentos de acceso SSH forzados.
Elimina todas las cuentas de usuario no estándar innecesarias de la instalación predeterminada.
En /etc/passwd, configura la shell de todas las cuentas de usuario no estándar como /sbin/nologin o /usr/sbin/nologin (según la ubicación donde tu SO instaló nologin).
Configura tu SO para que use SHA512 en las contraseñas de /etc/shadow.
Establece y configura pam_cracklib para obtener contraseñas seguras.
Establece y configura pam_tally para bloquear cuentas durante 5 minutos después de 3 fallas.
En /etc/shadow, configura la cuenta raíz para que se bloquee de forma predeterminada. Ejecuta el siguiente comando para bloquear la cuenta raíz:
usermod -L root
Deniega la raíz en /etc/ssh/sshd_config mediante la inclusión de la siguiente línea:
PermitRootLogin no
Crea perfiles de AppArmor o SELinux para todos los servicios predeterminados en ejecución orientados a la red.
Si es posible, usa las funciones del sistema de archivos a fin de prescindir del bit S*ID y proporcionar un control más detallado.
Habilita las mitigaciones de compilación y de explotación del entorno de ejecución cuando compilas software orientado a la red. Por ejemplo, estas son algunas de las mitigaciones que ofrece GNU Compiler Collection (GCC) y los pasos para habilitarlas:
Protección contra el desborde de pilas: Habilítala con -fstack-protector.
De forma predeterminada, esta opción protege las funciones con un búfer de pilas asignadas mayor a ocho bytes. Si quieres aumentar la protección mediante la cobertura de funciones con búferes de al menos cuatro bytes, agrega --param=ssp-buffer-size=4.
Aleatorización del diseño del espacio de direcciones (ASLR): habilítala mediante la creación de un ejecutable independiente de posición con -fPIC -pie.
Protecciones de glibc: Habilítalas con -D_FORTIFY_SOURCE=2.
Protección de Global Offset Table (GOT): Habilita esta función del cargador del entorno de ejecución con -Wl,-z,relro,-z,now.
Errores en tiempo de compilación para strings de formato faltantes: -Wformat -Wformat-security -Werror=format-security.
Inhabilita CAP_SYS_MODULE, que permite cargar y descargar módulos del kernel. Para inhabilitar esta función, edita el archivo /etc/sysctl.conf e incluye la siguiente configuración:
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-08 (UTC)"],[[["\u003cp\u003eAfter importing a virtual disk to Compute Engine, the guest environment must be installed to utilize key Compute Engine features.\u003c/p\u003e\n"],["\u003cp\u003eOptimizing an imported image for Compute Engine involves configuring settings like NTP, timezone, network performance, and security.\u003c/p\u003e\n"],["\u003cp\u003eFor high performance, it is recommended to use the ISC DHCP client, set the DHCP MTU, disable IPv6 if not needed, and remove persistent network rules.\u003c/p\u003e\n"],["\u003cp\u003eSecurity best practices for images include minimizing installed software, disabling unnecessary network services, and configuring strong password policies, as well as hardening SSH configurations.\u003c/p\u003e\n"],["\u003cp\u003eAfter configuring and optimizing the boot disk, create a new image from the boot disk and include it in an image family for easy management and instance creation.\u003c/p\u003e\n"]]],[],null,["*** ** * ** ***\n\nAfter you\n[manually import a virtual disk](/compute/docs/import/import-existing-image) to\nCompute Engine, you need to optimize those images so they can use\nfeatures specific to the Compute Engine environment.\n\nContents\n\nInstall the Compute Engine guest environment\n\nYou must install the\n[guest environment](/compute/docs/images/guest-environment) before you can use\nkey features of Compute Engine. To find out when you need to manually\ninstall the guest environment, see\n[when to manually install or update the guest environment](/compute/docs/images/guest-environment#when-to-install).\n\n[Install the guest environment](/compute/docs/images/install-guest-environment)\non the running VM instance you created after\n[manually importing your existing image](/compute/docs/import/import-existing-image).\nTo perform the installation, access the VM instance via SSH with a user\naccount you created before importing it or by\n[interacting with the Serial Console](/compute/docs/instances/interacting-with-serial-console).\n| **Important:** Install the guest environment **after** you have imported your existing image. The guest environment makes configuration changes to the instance that are specific to Compute Engine.\n| **Important:** Failure to install the guest environment on a VM instance created from an imported image results in key features of Compute Engine being unavailable to the instance. For example, you won't be able to use all of the methods for [connecting to Linux instances](/compute/docs/instances/connecting-to-instance), and the instance might be unable to participate in [load balancing](/compute/docs/load-balancing) configurations.\n\nConfigure your imported image for Compute Engine\n\nYou can run your boot disk image in Compute Engine without\nadditional changes, but you can also further optimize the image so that it runs\noptimally within Compute Engine and has access to all\nCompute Engine features.\n\n- Edit the `ntp.conf` file to include only the\n `server metadata.google.internal iburst` Google NTP server entry.\n\n- Set the timezone to UTC:\n\n ```\n sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime\n ```\n- To ensure high performance network capability, use the following recommended\n network configurations:\n\n - Use the [ISC DHCP client](http://www.isc.org/downloads/dhcp/).\n - Set the DHCP MTU to the network MTU. The Compute Engine DHCP server serves this parameter as the `interface-mtu` option, which most clients respect. For more information about network MTUs, see the [maximum transmission unit overview](/vpc/docs/mtu).\n - If you don't plan to [configure IPv6\n addresses](/compute/docs/ip-addresses/configure-ipv6-address), disable IPv6.\n - Remove persistent network rules to prevent the instance from remembering\n MAC addresses. For example:\n\n ```\n rm -f /etc/udev/rules.d/70-persistent-net.rules\n ```\n - Disable the operating system firewall unless you have specific\n requirements not supported by Compute Engine Firewall Rules.\n Compute Engine provides a firewall for\n inbound and outbound traffic. For more information about firewalls, see\n [Firewall rules overview](/vpc/docs/firewalls).\n\n- To ensure high performance network and disk capability, disable or remove\n the `irqbalance` daemon. This daemon does not correctly balance IRQ requests\n for the guest operating systems on virtual machine (VM) instances. Instead,\n use the scripts that are part of the\n [guest environment](#install_guest_environment) to correctly balance\n IRQ settings for virtual CPUs.\n\n- Configure SSH access to the base image:\n\n - Disable root ssh login.\n - Disable password authentication.\n - Disable host-based authentication.\n - Enable strict, host-key checking.\n - Use `ServerAliveInterval` to keep connections open.\n - Remove SSH keys from your image so that others can't access the public\n or private keys in your image. Instead, use Compute Engine to\n [manage access to instances](/compute/docs/instances/managing-instance-access).\n\n - Edit the `/etc/ssh/ssh_config` file to use the following configuration:\n\n ```\n Host *\n Protocol 2\n ForwardAgent no\n ForwardX11 no\n HostbasedAuthentication no\n StrictHostKeyChecking no\n Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc\n Tunnel no\n\n # Compute Engine times out connections after 10 minutes of inactivity.\n # Keep alive ssh connections by sending a packet every 7 minutes.\n ServerAliveInterval 420\n ```\n - Edit the `/etc/ssh/sshd_config` file to use the following configuration:\n\n ```\n # Disable PasswordAuthentication because ssh keys are more secure.\n PasswordAuthentication no\n\n # Disable root login. Using sudo provides better auditing.\n PermitRootLogin no\n\n PermitTunnel no\n AllowTcpForwarding yes\n X11Forwarding no\n\n # Compute Engine times out connections after 10 minutes of inactivity.\n # Keep alive ssh connections by sending a packet every 7 minutes.\n ClientAliveInterval 420\n ```\n\nAfter you configure and optimize your boot disk on Compute Engine,\ncreate an image from that boot disk so that you can create instances from\na fully-optimized version of the image rather than having to configure each\ninstance every time you create it.\n\nConfigure security best practices\n\nYou should always provide a secure operating system environment, but it can\nbe difficult to strike a balance between a secure and an accessible environment.\nVirtual machines that are vulnerable to attack can consume expensive\nresources. Google strongly recommends that your images comply with the\nfollowing security best practices:\n\n- Minimize the amount of software installed by default (for example, perform a minimal install of the OS).\n- Enable automatic updates.\n- By default, disable all network services except for SSH, DHCP, and NTPD. You can allow a mail server, such as Postfix, to run if it is only accepting connections from localhost.\n- Do not allow externally listening ports except for sshd.\n- Install the [denyhosts](http://denyhosts.sourceforge.net/faq.html#1_0) package to help prevent SSH brute-force login attempts.\n- Remove all unnecessary non-user accounts from the default install.\n- In `/etc/passwd`, set the shell of all non-user accounts to `/sbin/nologin` or `/usr/sbin/nologin` (depending on where your OS installed nologin).\n- Configure your OS to use salted SHA512 for passwords in `/etc/shadow`.\n- Set up and configure [pam_cracklib](http://linux.die.net/man/8/pam_cracklib) for strong passwords.\n- Set up and configure [pam_tally](http://linux.die.net/man/8/pam_tally) to lock out accounts for 5 minutes after 3 failures.\n- In `/etc/shadow`, configure the root account to be locked by default. Run\n the following command to lock the root account:\n\n ```\n usermod -L root\n ```\n- Deny root in `/etc/ssh/sshd_config` by adding the following line:\n\n ```\n PermitRootLogin no\n ```\n- Create\n [AppArmor](https://www.kernel.org/doc/html/latest/admin-guide/LSM/apparmor.html)\n or\n [SELinux](http://selinuxproject.org/page/Main_Page)\n profiles for all default running network-facing services.\n\n- Use file system capabilities where possible to remove the need for the S\\*ID\n bit and to provide more granular control.\n\n- Enable compiler and runtime exploit mitigations when compiling network-facing\n software. For example, here are some of the mitigations that the\n [GNU Compiler Collection (GCC)](http://gcc.gnu.org/)\n offers and how to enable them:\n\n - Stack smash protection: Enable this with `-fstack-protector`. By default, this option protects functions with a stack-allocated buffer longer than eight bytes. To increase protection by covering functions with buffers of at least four bytes, add `--param=ssp-buffer-size=4`.\n - Address space layout randomization (ASLR): Enable this by building a position-independent executable with `-fPIC -pie`.\n - Glibc protections: Enable these protections with `-D_FORTIFY_SOURCE=2`.\n - Global Offset Table (GOT) protection: Enable this runtime loader feature with `-Wl,-z,relro,-z,now`.\n - Compile-time errors for missing format strings: `-Wformat -Wformat-security -Werror=format-security`\n- Disable\n [`CAP_SYS_MODULE`](http://man7.org/linux/man-pages/man7/capabilities.7.html),\n which allows for loading and unloading of kernel modules. To disable this\n feature, edit the `/etc/sysctl.conf` file and include the following setting:\n\n ```\n kernel.modules_disabled = 1\n ```\n- Remove the\n [kernel symbol table](http://en.wikipedia.org/wiki/System.map):\n\n ```\n sudo rm /boot/System.map\n ```\n\nWhat's next\n\n- After your image is ready for production, [create a final version](/compute/docs/images/create-delete-deprecate-private-images) of that custom image and [include the image in an image family](/compute/docs/images/create-delete-deprecate-private-images#setting_families) so that you can easily manage updated versions of the custom image.\n- Learn how to [start an instance from an image](/compute/docs/instances/creating-and-starting-an-instance#startinginstancwithimage)."]]