Nota al iniciar: para la fecha de creación de este post, aun no había salido la versión oficial de Debian 11 (codename: “bullseye”). La forma o modo es más o menos similar en casi todas las instalaciones recientes de Debian; solo basta con sustituir el nombre de la distro al momento de instalar y listo. Importante resaltar que si instalaste Debian 10 (codename: “Buster”), debes colocar los repositorios de “Buster” o también ”oldstable” y si colocaste Debian 11, debes colocar “stable” o “bullseye”. Ahora sí, continuemos!!!


Hola fronters! En este post les explicaré como instalar y configurar un servidor Linux desde cero con la distribución Debian GNU Linux.


Para poder crear nuevo servidor podemos utilizar una maquina física, denominada comúnmente bare metal, este puede ser un equipo Desktop (computador u ordenador de sobremesa), un servidor físico, como Dios manda, propiamente destinado a esas funciones, dispositivos mini con las Raspberry Pi. También, existen otro tipo de servidores, que son los virtualizados, y que a partir de servidores físicos, podemos crear servidores más pequeñitos, tomando prestados los recursos de ese servidor y hacerlos funcionar para distintas tareas especificas, tal y como si fuese uno de “carne y hueso”. También existen contenedores, los cuales son otra forma de virtualización; pero de eso hablaremos en otro post.


En este tutorial, te enseñaré como crear tu Máquina Virtual, también conocida como Virtual Machine, VM, y en lo sucesivo nos referiremos con este ultimo termino para hablar de ellas. No solo es posible crear VMs para emular servidores, sino también PCs con sistemas operativos de escritorio de los que podríamos utilizar cotidianamente (o quizás no tanto), en nuestros equipos; siendo sus propósitos muy diversos, que van desde probar un sistema operativo (OS), para ver que tal va, testing labs o entornos de pruebas más complejos, hasta llegar a los ambientes de producción, o para uso plenamente autorizado por nuestra organización.


Los preparativos e instalación de una VM.


Para llevar a cabo nuestra tarea, utilizaremos un hipervisor llamado VMWare Workstation, sin embargo existen muchos otros hipervisores, tales como VMWare EXSI, Virtualbox, ProxmoxVE y muchos otros.

Para ello, luego de instalarlo debidamente, procederemos a abrir la aplicación:

Luego presionaremos en el botón Create a New Virtual Machine y se abrirá una venta citando las especificaciones técnicas que tendrá nuestra VM.

Seccionaremos la opción Custom (Advanced), para crear nuestra primera VM.

Luego, el cuadro de dialogo nos preguntara si deseamos que tenga algún tipo de compatibilidad de hardware y con otros productos. En este caso he seleccionado que tenga compatibilidad con VMWare EXSI 7, pero no es vital ni importante cumplir este paso, a menos que pensemos en portar la VM que estemos creando a alguna de estas plataformas.

En el cuadro de diálogo, nos da la opción de escoger una imagen ISO de instalación de una distro de
sistema operativo. En nuestro caso seleccionamos la opción Installer disc image file (iso) y luego
presionaremos el botón Browse…

Escogemos la imagen ISO de Debian 10, por error seleccioné una versión de la ISO de 32 bits , pero es
exactamente el mismo proceso para crear una VM de 64 bits, solo que con la versión que corresponde.

Asignamos un nombre a nuestra VM. Verificamos la ruta en la cual estará almacenada y en caso de preferir
otra la cambiamos, modificando el parámetro Location

Indicamos cual sera la cantidad de Unidades de Procesamiento Virtuales o vCPUs que tendrá nuestra
VM. Si el CPU físico de nuestro bare metal soporta tecnologías multi hilo, podremos seleccionar mas de
un núcleo (core) de procesamiento.


NOTA: para efectos didácticos, nuestra clave “super segura”, sera una clave muy fácil y poco segura. Esto
con la intención de agilizar los procesos de instalación y configuración iniciales. Posteriormente si haremos
ajustes más avanzados, que nos permita darle una seguridad más robusta a nuestro servidor. Este proceso
se llama Security hardening o Securización de Infraestructura Tecnológica.

Seleccionamos la cantidad de memoria Ram que utilizará nuestra VM.

Aquí seleccionaremos el tipo de conexión de red que requerimos para nuestro servidor. Yo seleccionaré use
Bridged Networking para poder conectarme luego remotamente a ella vía SSH (Secure SHell).

Seleccionamos el tipo de unidad de disco que utilizaremos.

Seleccionamos el tipo de disco virtual, indicamos la capacidad de la unidad de almacenamiento, y como
deseamos que sea gestionada: tanto en la cantidad de archivos / ficheros generados, como en la reserva
del espacio: si bien queremos reservar todo el espacio indicado o por el contrario, si queremos que nuestra
unidad de expanda dinámicamente, según sea su uso.

Aquí seleccionamos el tipo de tarjeta controladora SCSI para gestionar nuestras unidades de disco
virtuales.

Escribimos el nombre de nuestra unidad de almacenamiento virtual. El archivo tendrá la extensión .vmdk.
Una vez terminado todo esto, hacemos click en el botón Next y comienza nuestra aventura!!!

Instalando Debian GNU Linux

Una vez ha iniciado la instalación desde nuestra ISO, seleccionamos la opción Install, pero cualquiera de
las dos opciones de instalación que aparece funcionan bien.

Seleccionamos el idioma de nuestra preferencia para iniciar el asistente de instalación, yo escogí Inglés.

Selecciona la ubicación, como no aparece Venezuela, que es mi ubicación actual, como no aparece
Venezuela en el listado principal, seleccionamos Other, pero usted selecciona el de su preferencia.

Seleccionamos South America, en caso de que sea de este lado del mundo:

Seleccionan el país de su preferencia:

He configurado los locales del sistema de Estados Unidos, en_US.UTF-8, sin embargo pueden seleccionar
el de su preferencia.

Y el keymap, o mapeo del teclado:

Le damos nombre a nuestro servidor. En mi caso le puse un nombre genérico: srv

Si desean agregar el servidor a un dominio pre existente, pueden escribirlo aquí. De lo contrario pueden
dejarlo en blanco:

Asignamos la superhipermegaclave123456segura, por los momentos:

Repetimos la superhipermegaclave123456segura, para confirmarla:

Creamos el nuevo usuario regular del sistema, el cual llamaremos usuario (en minúsculas):

Le asignamos la superhipermegaclave123456segura2, al Usuario usuario:

Repetimos la clave superhipermegaclave123456segura2, delUsuario usuario, para confirmarla:

Escogemos el método de particionado que tendrá nuestro servidor, en nuestro caso escogeremos el método
de particionado guiado por ser el mas fácil, sin embargo, dependiendo del tipo de servidor que necesitemos
crear nuestras necesidades de particionado pueden cambiar:

Seleccionamos la unidad que vamos a formatear:

Escogemos el tipo de particionado que nos sugiere el método guiado:

Una vez terminado todo, finalizamos los cambios y escribimos los cambios al disco.

El asistente nos hace una pregunta para confirmar si efectivamente deseamos escribir dichos cambios al
disco, indicándonos ademas que todo lo que esté en el disco. será eliminado. Confirmamos en caso de
estar seguros del cambio a realizar:

En este caso, como solo tenemos la imagen ISO de instalación y deseamos saltarnos la instalación de un
entorno gráfico y otros paquetes adicionales desde otras imágenes, seleccionamos NO. Las instalaciones
adicionales detalladas las haremos manualmente descargándolas de internet.

En caso de tener un mirror o repositorio local de paquetes, podría utilizarlo indicándole al sistema la ruta del
mismo. En nuestro caso, no lo tenemos, entonces seleccionamos la opción Yes para continuar sin un mirror:

Seleccionamos NO:

Seleccionamos el software adicional que deseamos instalar, en este caso solo seleccionaremos las
opciones que aparecen en la imagen: SSH y Standard System Utilities.

Instalamos el gestor de arranque GRUB:

Seleccionamos la unidad en la que instalaremos el gestor de arranque de nuestro sistema:

Y luego de terminar iniciará nuestro servidor, viendo la pantalla inicial de nuestro gestor de arranque GRUB:

Una vez ya iniciado, escribimos nuestro usuario y clave, escritos anteriormente durante el proceso de
instalación. Noten bien que cuando escribamos nuestra clave, no se verá nada, ni asteriscos ni nada, así
que no, no se dañó el teclado:

Conectándonos por primera vez por SSH


Ya nuestro servidor, completamente funcional está instalado y corriendo. Ahora lo que haremos es entrar vía SSH para administrarlo de forma remota. Quizás si su hipervisor está instalado en el mismo PC u ordenador no sea necesario esto, pero en condiciones normales, esto no será lo común, así que empezar a familiarizarse con SSH y otras herramientas de línea de comandos, les será sumamente útil.


Como expliqué anteriormente, SSH son el acrónimo de las siglas Secure SHell, y es un estándar para la conexión remota en términos de administración de dispositivos de forma remota. En la actualidad SSH esta en su versión 2 y a diferencia de su predecesor, cuenta con múltiples opciones de seguridad tales como cifrado punto a punto y complementariedad con otros protocolos para transferencia de archivos, navegación, automatización entre otros.


Para acceder a un PC o servidor vía SSH, simplemente hay que abrir un terminal / consola de comandos y escribir:

ssh usuariodelservidorremoto@ipdelservidorremoto


En nuestro caso particular, sabiendo que el usuario de nuestro servidor remoto es usuario y que la dirección ip de dicho servidor es la 192.168.16.16, entonces la línea exacta seria así:

ssh usuario@192.168.16.16

Y al entrar obtendremos un mensaje como el que aparece a continuación, dado que será la primera vez que intentamos acceder a nuestro servidor nuevo de forma remota, a lo cual responderemos a dicho mensaje con la frase yes y luego introduciremos nuestra clave.

Y luego de esto ya habremos accedido sin problemas a nuestro servidor.

Después de esto, necesitaremos ejecutar una serie de tareas administrativas, tales como instalar programas o paquetes, crear o modificar archivos de configuración que afecten el funcionamiento global del sistema, entre otros. Para ello, es necesario convertirse en super usuario y se hace ejecutando el comando su – para lo cual solicitará la clave del usuario root, la misma que configuramos previamente durante el proceso de instalación.

Actualizar repositorios e instalar paquetes


Bien!!!… Una vez adentro del servidor, haremos unas cuantas cosas para terminar con esta fase de pre configuración de nuestro servidor. Para ello debemos ejecutar esta serie de pasos consecutivos.

Actualizo el sistema a su última versión.

apt update
apt upgrade -y

En mi caso, tuve un error como este al momento de actualizar los repositorios:

Pude configurarlos al momento de la instalación, pero honestamente, me salté esa parte!!!. Para solucionar esto, sustituiremos los repositorios actuales por estos, edito el fichero o archivo
/etc/apt/sources.list borrando el contenido del mismo:

deb http://deb.debian.org/debian/ stable main contrib non-free
deb-src http://deb.debian.org/debian/ stable main contrib non-free
deb http://deb.debian.org/debian/ stable-updates main contrib non-free
deb-src http://deb.debian.org/debian/ stable-updates main contrib non-free
deb http://deb.debian.org/debian-security stable/updates main
deb-src http://deb.debian.org/debian-security stable/updates main

Estos los he generado desde el sitio web: https://debgen.simplylinux.ch/index.php?generate

Otra opción menos destructiva para manejar el mencionado archivo es comentar las líneas que deseamos
que nuestro sistema ignore al momento de instalar paquetes. Para ello utilizaremos el símbolo de “#” (sin
las comillas)

Ahora sí, actualizamos los repositorios del sistema e instalamos los paquetes necesarios:


apt update
apt upgrade -y
apt install -y aptitude curl wget apt-transport-https dirmngr

Y luego:

aptitude install -y tzdata unzip git net-tools ifupdown net-tools resolvconf htop

NOTA: La verdad a mi me gusta mucho aptitude como gestor de paquetes y por eso luego de instalarlo, lo
uso en las siguientes instalaciones, no obstante si quieren seguir utilizando apt o apt-get es opcional de
cada quien. Del mismo modo, estos paquetes también pudieron ser instalados desde la linea anterior con apt sin ningún problema.


NOTA ADICIONAL: si estás utilizando Debian 11 “bullseye” recuerda colocar tu repositorio acorde a tu
distribución.


Convertir los nombres de las interfaces de red al viejo formato eth (opcional)


Una de las cosas que menos me gustan de las nuevas distribuciones en general es la nueva metodología
para el nombramiento de las interfaces de red. Si bien, esto no afecta mucho en las VM, pues generalmente
los nombres que se asignan con mas cortos y amigables, en el caso de los baremetal, los nombres pueden
llegar a ser mas largos, confusos y menos uniformes, lo cual puede darnos verdaderos quebraderos de
cabeza a la hora de saber o intuir cual es el nombre de algunas de nuestras interfaces de red, o incluso a la
hora de implementar algunas políticas o rutinas mediante scripts de automatizaciones, etc. Para adecuar
esto, simplemente debemos seguir una serie de pasos a continuación:

Editamos el archivo /etc/default/grub y agregamos esta linea:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

Guardamos y salimos y luego ejecutamos lo siguiente como super usuario:

grub-mkconfig -o /boot/grub/grub.cfg

Si se desea, reiniciar, pero para poner a gestionar el servidor en el modo clásico hay que hacer unos
cuantos cambios en el modo de gestión de los servicios de red. Es decir: cambiar un servicio de red, por
otro:

Cambiando el servicio manejador de red

A lo largo del tiempo, Networking fue el servicio administrador del servicio de red de la distribución Debian
y sus derivados durante mucho tiempo. Aunque viene aun con el sistema operativo, este viene desactivado
y enmascarado por defecto, para darle paso a la nueva generación de herramientas de gestión de red,
como es el caso de Systemd-networkd o Netplan, en el caso de Ubuntu. Sin embargo, en la actualidad
aun se sigue utilizando muchísimo por muchos administradores de sistemas. Para deshabilitar Systemdnetworkd en Debian y poder habilitar Networking

Habilitamos y desenmascaramos el servicio Networking:

systemctl enable networking
systemctl unmask networking

E inhabilitamos por completo el Systemd-Networkd:

systemctl stop systemd-networkd
systemctl disable systemd-networkd
systemctl mask systemd-networkd

Ahora si podemos editar el archivo /etc/network/interfaces:

Si configuramos la red de nuestro servidor, de manera que tome directamente la dirección, bien sea con DHCP:

# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
O si por el contrario, la red va a ser estática:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.16.16/24
gateway 192.168.16.1

Luego de configurar este archivo, guardamos los cambios y salimos del editor… Aun no reiniciemos, pues aun faltan cambios y si reiniciamos en este momento, la red del servidor no funcionará adecuadamente.

Obligar al sistema a tomar DNS especificados por el Administrador de Sistemas (Opcional)

En ocasiones he experimentado problemas para añadir servidores DNS específicos, sobre todo si no se cuenta propiamente con un servidor DNS o Ahora desvinculo el archivo /etc/resolv.conf y le agrego los servidores DNS de mi preferencia.

unlink /etc/resolv.conf
echo nameserver 8.8.8.8 >> /etc/resolv.conf
echo nameserver 8.8.4.4 >> /etc/resolv.conf

Y luego para que pueda funcionar adecuadamente el archivo o fichero /etc/resolv.conf

systemctl disable --now systemd-resolved

Reiniciamos y tenemos el servidor pre configurado y listo para implementar el servicio de nuestra preferencia.

RECOMENDACIONES

Es buena práctica, una vez que tenemos un servidor virtual en fase inicial, realizarle un respaldo (backup) del estado de la VM; o convertirlo en una plantilla (template), y así evitar, tener que repetir todo estos pasos constantemente. No es necesario que realices configuraciones muy específicas en dicho servidor pre configurado, dado que por cada servicio que implementes, de seguro requerirás realizar configuraciones especiales que permitirán robustecer y personalizar tu VM.

Enhorabuena fronters!!!

Espero que este HowTo haya sido de tu agrado y recuerda siempre practicar e investigar más y más, si esto
te apasiona.

Hey Fronters, Gabriel aquí… Este es el primer post de muchos por venir, o al menos eso espero. Llevo varios años pensando en el “como sería” ayudar a otros a aprender lo poquito que se de tecnología de una forma didáctica, amena y divertida; sin embargo por una razón u otra esto se ha fue postergando y quedando a un segundo plano. Sin embargo, decidí juntar fuerzas con mi viejo amigo Frank y hacer de este hermoso proyecto, una realidad…

Hasta la próxima!!!