Instalar Ubuntu Server

16 marzo 2019
Josep Ma Solanes 0

Proceso de despliegue de un sistema operativo Ubuntu Server en una máquina virtual. Exceptuando la creación de la máquina virtual, este artículo de instalar Ubuntu Server sirve para cualquier entorno de virtualización o físico.

Aquí existe una entrada para las versiones anteriores.

En el sistema operativo de escritorio Microsoft Windows 10, con el rol de virtualización Hyper-V habilitado, crear una máquina virtual de Generación 2 para el servidor Ubuntu Server. Para la demostración, utilizo 2 GB de memoria RAM, 2 vCPUs, 20 GB de disco duro y la conexión en red. Naturalmente, está sobredimensionado sólo para el laboratorio.


Proceder con la instalación del Ubuntu Server seleccionandoInstall Ubuntu Server.

Seleccionar el idioma para el sistema operativo.

Seleccionar la distribución del teclado. Importante, que después cuando se tienen que colocar los símbolos es un desastre.

Proceder a la instalación del Ubuntu. Seleccionar la primera opción.

Configuración de la dirección de red. Es un buen sitio para establecer la configuración estática de la dirección IP, DNS y puerta de enlace.

Si se requiere de una dirección proxy para salir a Internet. En caso contrario, dejar en blanco.

Repositorio alternativo a utilizar para la descarga de los paquetes. Se puede dejar el de defecto.

Para el particionado del disco duro yo utilizo los volúmenes LVM, pero también podéis utilizar el método tradicional. Aquí cada uno con lo que más cómodo se encuentre.

Seleccionar el disco duro donde instalar el Ubuntu Server. Como que sólo hay uno, es el que toca seleccionar.

Modificar las particiones según vuestro gusto. Ojo que por defecto, la partición disponible raíz sólo se carga con 4 GB. Lo podéis dejar así y extenderla más tarde o hacer la ampliación.

identificación del usuario (operador) y del nombre del servidor (ubuntublog).

Seleccionar paquetes adicionales para instalar el servidor. En este caso, no instalo ningún paquete adicional.

El instalador acaba de desplegar el nuevo servidor Ubuntu Server. Cuando acaba hay que extraer la imagen ISO de instalación y reiniciar ya con el sistema operativo instalado en la máquina virtual.

La primera vez que arranca la máquina virtual todavía acaba de afinar el sistema, esperar hasta que no salgan más mensajes y iniciar sesión con el nombre de usuario y contraseña que se ha configurado al instalar el servidor.

Como buenos administradores de IT lo primero que haremos será actualizar el servidor con las últimas actualizaciones y instalaremos las herramientas de integración de la virtualización para Hyper-V para asegurar el buen funcionamiento del sistema. Desde el símbolo de comandos y todo en la misma línea:

sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install linux-azure -y && sudo apt-get autoremove -y

Definir la zona horaria del sistema, en mi caso España, copiar de la carpeta de zonas horarias según corresponda:

sudo cp /usr/share/zoneinfo/Europe/Madrid /etc/localtime

Habilitar el cortafuegos con UFW:

sudo ufw enable

Y habilitar la conexión por SSH desde el equipo con el que trabajamos. En mi caso el Windows 10 que tiene como dirección IP: 192.168.1.130.

sudo ufw allow from 192.168.1.130 to any port 22

Salimos de la máquina virtual con un exit y realizamos la conexión mediante una consola de comandos remota, por ejemplo con el PUTTY.

Cambiar o definir la contraseña de root que ha puesto por defecto el sistema. Recordar que primero se pide la contraseña del usuario actual con privilegios de administrador (operador) y que después se pide la nueva contraseña para el root con la validación de la misma:

sudo passwd root

Comprobarlo saltando a la consola de root con el comando. Recordar que ahora se pide la contraseña del usuario root:

su -

Instalar servidor de base de datos MariaDB

Lo haremos con la última versión estable del servidor de la base de datos MariaDB. Para esto, primero hay que añadir los repositorios de MariaDB en el Ubuntu Server. Añadimos las claves de firma:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 

Descargar el repositorio de uno de los múltiples que hay. Podéis utilizar el asistente de MariaDB para encontrar el repositorio que más os encaje.

sudo add-apt-repository 'deb [arch=amd64] http://mirror.klaus-uwe.me/mariadb/repo/10.3/ubuntu cosmic main' 

Con el repositorio cargado, actualizamos la base de datos y procedemos a la instalación del servidor de bases de datos MariaDB:

sudo apt-get update && sudo apt-get install mariadb-server -y

Al hacer la instalación se pide por la contraseña de root de la base de datos. Indicar y apuntarla en un sitio seguro que después se pide.

Cuando finaliza la instalación, ejecutar el script para asegurar la seguridad de la misma:

  • Eliminar los usuarios anónimos.
  • Desactivar el inicio de sesión del usuario root de forma remota.
  • Eliminar las bases de datos de test.
  • Volver a cargar los privilegios de los usuarios.
sudo mysql_secure_installation

Habilitar el acceso remoto a la base de datos desde el equipo de control Windows 10 (en mi caso la IP 192.168.1.130):

sudo ufw allow from 192.168.1.130 to any port 3306

Crear un usuario operador en la base de datos para poder realizar las tareas de administración remotas. Recordar que se le ha quitado el privilegio al usuario root de hacer un inicio de sesión remoto.

iniciar sesión en el servidor de base de datos MariaDB:

mysql -u root -p

Crear el usuario operador con acceso sólo desde la IP del Windows 10. Asignarle los privilegios de administrador sobre las bases de datos:

create user 'operador'@'192.168.1.130' identified by 'P@ssw0rd';

grant all privileges on *.* to 'operador'@'192.168.1.130' with grant option;

flush privileges;

Validar el listado de usuarios y privilegios:

select host,user from mysql.user;

Modificar el archivo de configuración de MariaDB para que escuche por la dirección IP y no sólo por el localhost que es la configuración por defecto:

vi /etc/mysql/my.cnf

Modificar la línea bind-address = 127.0.0.1, para pasar a 0.0.0.0 para que escuche desde cualquier dirección:

bind-address            = 0.0.0.0

Reiniciar el servicio de MariaDB para aplicar los cambios:

sudo service mysql restart

Carpetas de trabajo de las webs

Para alojar las webs y los archivos de configuración, se utiliza una carpeta /webs y un grupo de seguridad de webmasters.

Para crear el grupo de seguridad, en el que se incluye el usuario operador:

sudo groupadd webmasters
sudo usermod -a -G webmasters operador

Crear la carpeta en la raíz del servidor Ubuntu Server y asignar permisos de lectura, escritura y ejecución en el propietario root y el grupo Webmasters. Se deniega el acceso para cualquier otro usuario.

sudo mkdir /webs
sudo chown root:webmasters /webs/ -R
sudo chmod 770 /webs/ -R

Compartir archivos en equipos Windows

Para compartir archivos en el entorno Windows utilizamos el SAMBA. Instalación:

sudo apt-get install samba -y

Modificar el cortafuegos para que permita las conexiones externas por SMB sólo desde el equipo de trabajo Windows 10 (dirección IP: 192.168.1.130):

sudo ufw allow proto udp from 192.168.1.130 to any port 137
sudo ufw allow proto udp from 192.168.1.130 to any port 138
sudo ufw allow proto tcp from 192.168.1.130 to any port 139
sudo ufw allow proto tcp from 192.168.1.130 to any port 445

Configuración del archivo de SAMBA para trabajar sólo con el protocolo SMB3 y compartir la carpeta etc para el usuario Operador:

sudo vi /etc/samba/smb.conf

El archivo queda de la siguiente forma, modificad los campos que os convengan, como el nombre del dominio o de la máquina, etc….

[global]
workgroup = JMSOLANES
server string = %h server (Ubuntu)
wins support = no
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
panic action = /usr/share/samba/panic-action %d
server role = standalone server
security = user
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
map to guest = bad user
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = Enter\snew\s\spassword:* %n\n Retype\snew\s\spassword:* %n\n password\supdated\ssuccessfully .
pam password change = yes
usershare allow guests = no
#client max protocol = SMB3
client min protocol = SMB3
#server max protocol = SMB3
server min protocol = SMB3
#max protocol = SMB3
min protocol = SMB3

[etc]
comment = Server configuration
path = /etc
browsable = yes
guest ok = no
writable = no
read only = yes
valid users = operador root

Añadir el usuario operador dentro del entorn de SAMBA para que pueda validarse:

sudo smbpasswd -a operador

Compartir la carpeta Web para los usuarios que estén en el grupo Webmasters:

[webs]
comment = Web server
path = /webs
browseable=yes
guest ok = no
create mask = 0775
directory mask = 0775
writable=yes
read only=no
force group=webmasters
valid users = @webmasters

Compartir archivos por NFS (equipos Linux)

En este laboratorio también se necesitará del entorno de archivos compartidos NFS para poder compartir datos de forma persistente con los containers.

Para instalarlo en el servidor:

sudo apt-get install nfs-kernel-server nfs-common -y

Permitir la conexión por NFS a través del cortafuegos. De momento lo haremos sobre la red en la que estamos, para probar que todo funciona correctamente, desde otro servidor Linux. En el entorno de producción lo limitaremos a la red de containers:

sudo ufw allow from 192.168.1.0/24 to any port nfs

Exportar la carpeta de Webs a la red de trabajo en modo lectura y escritura. Editar el archvo /etc/exports:

sudo vi /etc/exports

Para añadir la línea:

/webs 192.168.1.0/255.255.255.0(rw,sync)

En otro equipo Linux de la red, se puede montar para comprobar que todo funciona correctamente (crear previamente la carpeta ubuntublog o seleccionar otro donde montar el volumen de red):

mount -t nfs 192.168.1.220:/webs /ubuntublog -o username=operador,dir_mode=777,file_mode=777

Similar Posts by The Author: