Siempre hay algunas cosas que hacer después de implementar un nuevo servidor Linux. Podría estar cambiando la configuración de SSH, creando usuarios no root o instalando y configurando Docker.
Todas estas son tareas repetitivas que pueden ser especialmente frustrantes cuando estás probando algo y tienes que implementar servidores con la misma configuración.
Por ejemplo, utilizo la configuración de proxy inverso para probar diferentes tipos de aplicaciones y servicios web. Hacer todos esos pasos una y otra vez en todos los nuevos servidores podría ser una molestia.
Afortunadamente, Linode, nuestro proveedor de infraestructura, tiene una solución práctica en forma de StackScripts.
En este tutorial, te diré lo siguiente:
- ¿Qué son los Linode StackScripts?
- ¿Cómo usar esos StackScripts al implementar servidores con Linode?
- Consejos para crear su propio StackScript
- Implemente una configuración de proxy inverso usando StackScripts creados por el equipo del Manual de Linux (somos nosotros)
Este tutorial solo funciona con el proveedor de servidor en la nube Linode. Si no lo está utilizando, puede registrarse con este enlace para obtener créditos gratuitos de $60 durante dos meses.
¿Qué es un StackScript?
Es un script que se ejecuta después de que un servidor se implementa correctamente. Este script no tiene que ser un script de shell, puede estar escrito en Python o Perl, siempre que el intérprete esté allí, ¡todo lo que necesita es asegurarse de usar el shebang correcto!
Con StackScript, puede automatizar algunas de las tareas más monótonas de las necesidades posteriores a la implementación. Algunos de ellos se enumeran a continuación:
- Crear un usuario no root.
- Cambiar la configuración del servidor SSH (por ejemplo, deshabilitar la autenticación de contraseña).
- Instalar algunos de los paquetes que desee, como Python, Docker, Ruby, etc.
- Actualizando y reiniciando el servidor.
Suena como la característica que proporciona Dockerfile, ¿verdad? Es un concepto similar aquí.
Tipos de StackScripts
Bueno, no son exactamente "tipos". Depende de cómo estés interpretando la idea de un tipo. Si distingue dos scripts por el idioma (es decir, el intérprete) en el que están escritos, hay tantos tipos de StackScripts como intérpretes en una imagen de distribución específica como Python, Perl, Bash, Csh, Fish, Ksh, etc.
Aquí estoy distinguiendo StackScripts por su disponibilidad. Dependiendo de la disponibilidad, existen dos tipos de StackScripts:
- Cuenta StackScripts
- Secuencias de comandos de la comunidad
Cuenta StackScripts
Estos son sus scripts privados que ha creado usted mismo y que aún no ha hecho públicos.
Si inicia sesión en su cuenta de Linode, la encontrará en la pestaña "Cuenta StackScripts" en "StackScripts" en el panel lateral izquierdo.
Secuencias de comandos de la comunidad
Scripts que usted y otros han puesto a disposición del público a través del portal Linode.
Puede encontrarlo en el mismo lugar junto a "Cuenta StackScripts".
Práctica 1:Cree un StackScript simple e implemente un nuevo servidor con él
Para seguir, primero necesitará un par de cosas:
- Una cuenta de Linode. Si forma parte de una organización y uno de los administradores creó una cuenta para usted, asegúrese de que su cuenta tenga los permisos necesarios para operar con StackScripts.
- Algunos conocimientos de línea de comandos o secuencias de comandos de shell. Siempre puedes seguir nuestra Serie para principiantes de Bash.
Creación de un StackScript simple
En este ejemplo, creará un script bash que creará un usuario no root y copiará los detalles de la clave SSH para este usuario. No hace mucho pero es suficiente para comprender los conceptos básicos.
El nombre de usuario y las contraseñas estarán codificados en este ejemplo y no lo recomiendo en ningún entorno. Creé un script de pila para lograr una funcionalidad similar, que compartiré en un momento.
Vaya a la ventana de StackScript y haga clic en el botón "Crear un StackScript".
Ahora verá un par de campos de texto. Esto es lo que debe hacer:-
- Primero, asigne una etiqueta a su secuencia de comandos. Asegúrese de que esto sea único para la lista de StackScript de su cuenta.
- Luego, describa el propósito de la secuencia de comandos. Esto es opcional.
- Las "imágenes de destino" son básicamente las distribuciones para las que está creando este StackScript. Es posible que los comandos o el intérprete que vaya a utilizar no estén presentes en una distribución de forma predeterminada, pero sí en otra. Asegúrese de elegir la(s) imagen(es) correcta(s) aquí. Por ahora, seleccione Ubuntu 20.04
Finalmente, la parte del guión. Aquí copia y pega el siguiente código
#!/bin/sh
useradd \
-mG sudo \
-s /bin/bash \
-p $(awk -F: '$1 ~ /^root$/ {print $2}' /etc/shadow) \
noroot
if test -d /root/.ssh; then
cp -r /root/.ssh /home/noroot && \
chown -R noroot:noroot /home/noroot/.ssh && \
chmod 700 /home/noroot/.ssh
fi
rm -f /root/StackScript
El script hace lo siguiente
- Crea un usuario no root, llamado
noroot
, con la misma contraseña que el usuario root. - Si ha agregado claves SSH a su Linode, el script copiará el
.ssh
directorio a la casa del usuario no raíz y configure la propiedad y los permisos requeridos. - Los StackScripts se almacenan en
/root
bajo el nombreStackScript
, la última línea elimina el script del disco.
Una vez hecho todo, haga clic en "Guardar".
Implementar servidor usando StackScript
Ahora debería ver el StackScript en la lista de StackScript de su cuenta. Si no lo hace, vuelva a cargar la página.
Aquí, en el extremo derecho, haga clic en "Implementar nuevo Linode".
Otro método es seleccionar StackScripts para que sea el método de implementación en la página de creación de Linode como se muestra en la imagen a continuación.
Luego, continúe con su creación de Linode como está acostumbrado. Una vez que el estado de su Linode esté "en ejecución" en su tablero, espere un par de segundos y use SSH para iniciar sesión en el servidor, pero no como root, como noroot
usuario.
ssh [email protected]
Debería poder iniciar sesión como este nuevo usuario.
Práctica 2:Implementación de servidor usando StackScripts creado por Manual de Linux
En Linux Handbook, hacemos muchas pruebas y configuraciones. Puede verlo en nuestros tutoriales de implementación. Para ayudar a nuestros lectores como usted, recientemente comenzamos a crear StackScripts.
Con nuestros StackScripts, puede implementar servidores con configuraciones bastante complicadas. Tome el proxy inverso de Nginx configurado con Docker, por ejemplo. Si desea usar esa increíble configuración, simplemente use StackScript y ahorre mucho tiempo.
Puede encontrar LHB StackScripts en nuestro repositorio de GitHub.
Aquí lo guiaré a través de la implementación del proxy inverso usando reverse-proxy-jwilder
StackScript.
Primero diríjase a la sección de StackScript de la comunidad y busque "reverse-proxy-jwilder". Debería ver un script llamado "another_debdut/reverse-proxy-jwilder".
Como antes, haga clic en el botón "Implementar nuevo Linode". Ahora debería ver un par de campos de entrada más de lo que está acostumbrado.
Déjame explicarte las opciones:
Crear un usuario no root
Usando la root
usuario siempre en un entorno de producción no es la mejor idea. Pero Linode no tiene la opción de crear un usuario no root al implementar un servidor. Este script se encarga de eso.
La creación de usuarios es opcional porque hay momentos en los que se necesita realizar una pequeña prueba y es más fácil usar el root
usuario por el momento.
Contraseña de usuario no-root
Esto es de nuevo opcional. Si deja este espacio en blanco, la contraseña raíz se reutilizará para el usuario no raíz.
Actualizar el sistema
Es posible que a veces no desee actualizar el sistema, ya que puede llevar un tiempo.
Puerto SSH
Primero, solicita un número de puerto para que se ejecute el demonio SSH, el valor predeterminado es el puerto 22. Recomiendo configurarlo en algo diferente y recuerde que como este cambio no se reflejará en su tablero .
Según otra información, el script también configura otras partes de SSH. Por ejemplo, si agrega un usuario, root
no será accesible a través de SSH, si se proporciona al menos una clave pública, el inicio de sesión con contraseña está deshabilitado.
Bloquear la cuenta raíz
También puede bloquear la root
usuario directamente desde la pantalla de implementación. Este es uno de los trucos estándar de fortalecimiento de SSH.
Grupo de Docker
Dado que se instalará Docker, puede agregar su usuario no root a docker
grupo automáticamente desde aquí.
Eso es todo. Una vez hecho esto, continúe con la forma en que normalmente implementa un servidor.
Deberá esperar bastante tiempo para que se complete todo el proceso. Mientras tanto, después de iniciar sesión, puede consultar los registros con el comando tail:
tail -f /var/log/stackscript.log
Si ve algún error con estos StackScripts o desea ver que se está creando algún script personalizado, abra un problema en el repositorio de GitHub del Manual de Linux. Las contribuciones son siempre bienvenidas.
Para obtener más información sobre StackScripts, puede leer su documentación oficial aquí.