Configuración inicial del servidor con Ubuntu 20.04/18.04 y 16.04

Configuración inicial del servidor con Ubuntu 20.04/18.04 y 16.04

Este tutorial lo guiará en los primeros pasos básicos que necesita configurar en un nuevo Ubuntu servidor para aumentar la seguridad y la confiabilidad para su servidor.

Las configuraciones explicadas en este tema son casi las mismas para todos los sistemas de servidor de Ubuntu, con respecto a la plataforma del sistema operativo subyacente, ya sea Ubuntu se instala en un servidor de metal desnudo, en una máquina virtual privada o en una máquina virtual hilada en una nube pública VPS.

Requisitos

  • Ubuntu 20.Instalación del servidor 04
  • Ubuntu 18.Instalación del servidor 04
  • Ubuntu 16.Instalación del servidor 04

Actualizar y actualizar el sistema Ubuntu

El primer paso que debe cuidar en caso de una nueva instalación de Ubuntu servidor o un nuevo implementado Ubuntu VPS es para asegurarse de que el sistema y todos los componentes del sistema, como el kernel, el administrador de paquetes APT y todos los demás paquetes instalados estén actualizados con las últimas versiones y parches de seguridad lanzados.

Para actualizar el servidor Ubuntu, iniciar sesión en la consola del servidor con una cuenta con privilegios raíz o directamente como root y ejecutar los comandos a continuación para realizar el proceso de actualización y actualización.

$ sudo apt actualización 
Actualizar el servidor Ubuntu

Después de ejecutar el comando de actualización, verá el número de paquetes disponibles para el proceso de actualización y el comando utilizado para enumerar las actualizaciones de los paquetes.

$ sudo apt list -actualizable 
Lista Actualización de paquetes Ubuntu

Después de consultar la lista de paquetes disponibles para actualizar, emita el siguiente comando para iniciar el proceso de actualización del sistema.

$ sudo apt actualización 
Actualizar los paquetes de servidor Ubuntu

Para eliminar todos los paquetes DEB descargados localmente y todos los demás cachés de apt-get, ejecute el siguiente comando.

$ sudo apt autoremove $ sudo apt limpio 
Paquetes y caché de Autoremove APT

Crear una cuenta nueva en Ubuntu

Por defecto, como medida de seguridad, la cuenta raíz está completamente deshabilitada en Ubuntu. Para crear una nueva cuenta en el sistema, inicie sesión en el sistema con el usuario de la cuenta con privilegios raíz y cree una nueva cuenta con el siguiente comando.

Esta nueva cuenta se otorgará con los privilegios de potencia raíz a través del comando sudo y se utilizará para realizar tareas administrativas en el sistema. Asegúrese de configurar una contraseña segura para proteger esta cuenta. Siga el agregar usuario solicitar configurar los detalles del usuario y la contraseña.

$ sudo adduser ubuntu_user 
Crear usuario en Ubuntu

Si esta cuenta se asignará a otro administrador del sistema, puede obligar al usuario a cambiar su contraseña en el primer intento de inicio de sesión emitiendo el siguiente comando.

$ sudo chage -d0 ubuntu_user 

Por ahora, el nuevo usuario agregado no puede realizar tareas administrativas a través de sudo utilidad. Para otorgar esta nueva cuenta de usuario con privilegios administrativos, debe agregar el usuario a "sudo"Grupo del sistema emitiendo el siguiente comando.

$ sudo usermod -a -g sudo ubuntu_user 

Por defecto, todos los usuarios que pertenecen al "sudo"El grupo puede ejecutar comandos con privilegios raíz a través de sudo utilidad. Se debe usar el comando sudo antes de escribir el comando necesario para la ejecución, como se muestra en el siguiente ejemplo.

$ sudo apt instalación paquete_name 

Pruebe si el nuevo usuario tiene los privilegios raíz otorgados, iniciando sesión en el sistema y ejecute el Actualización de apt comando prefijo con sudo.

$ SU - Ubuntu_user $ sudo apt actualización 
Verificar el nuevo usuario

Configurar el nombre de host del sistema en Ubuntu

Por lo general, el nombre de host de la máquina está configurado durante el proceso de instalación del sistema o cuando el VPS se crea en la nube. Sin embargo, debe cambiar el nombre de su máquina para reflejar mejor el destino de su servidor o para describir mejor su propósito final.

En una gran empresa, las máquinas llevan el nombre de los complejos esquemas de nombres para identificar fácilmente la máquina en los bastidores de los centros de datos. Por ejemplo, si su máquina Ubuntu operará un servidor de correo, el nombre de la máquina debe reflejar este hecho y puede configurar el nombre de host de la máquina como mx01.mi dominio.lan, Por ejemplo.

Para mostrar detalles sobre el nombre de host de su máquina, ejecute el siguiente comando.

$ HOSTNAMECTL 

Para cambiar el nombre de su máquina, problema comando hostnamectl Con el nuevo nombre que configurará para su máquina, como se ilustra en el siguiente extracto.

$ sudo hostnamectl set-hostname tecMint 

Verifique el nuevo nombre de su sistema con uno de los siguientes comandos.

$ hostname $ hostname -s $ cat /etc /hostname 
Establezca el nombre de host en el servidor Ubuntu

Configurar SSH con autenticación de clave pública en Ubuntu

Para aumentar el grado de seguridad del sistema de un servidor Ubuntu, debe configurar la autenticación de clave pública SSH para una cuenta local. Para generar un par de claves SSH, la clave pública y privada, con una longitud de clave, como 2048 bits, ejecuta el siguiente comando en su consola de servidor.

Asegúrese de que haya iniciado sesión en el sistema con el usuario, está configurando la tecla SSH.

$ su -Ubuntu_user $ ssh -keygen -t rsa -b 2048 
Configurar las teclas SSH en Ubuntu

Mientras se genera la clave, se le solicitará que agregue frase Para asegurar la clave. Puede ingresar una frase de pases fuerte o elegir dejar la frase de pases en blanco si desea automatizar tareas a través del servidor SSH.

Después de generar la tecla SSH, puede copiar la clave pública a un servidor remoto ejecutando el siguiente comando. Para instalar la clave pública al servidor SSH remoto, necesitará una cuenta de usuario remoto con los permisos y credenciales adecuados para iniciar sesión en un servidor remoto.

$ ssh-copy-id [correo electrónico protegido] _server 
Copiar la tecla SSH al servidor remoto

Debería poder iniciar sesión automáticamente a través de SSH al servidor remoto utilizando el método de autenticación de la clave pública. No necesitará agregar la contraseña remota del usuario mientras usa la autenticación de la clave pública SSH.

Después de iniciar sesión en el servidor remoto, puede comenzar a ejecutar comandos, como Comando W Para enumerar el control remoto SSH en los usuarios, como se muestra en la siguiente captura de pantalla.

Escriba la salida en la consola para cerrar la sesión SSH remota.

$ ssh [correo electrónico protegido] _server $ W $ Salida 
Verificar el inicio de sesión sin contraseña SSH

Para ver el contenido de su clave SSH pública para instalar manualmente la clave a un servidor SSH remoto, emita el siguiente comando.

$ Cat ~/.ssh/id_rsa.pub 
Ver tecla SSH

Secure SSH Server en Ubuntu

Para asegurar el demonio SSH, debe cambiar el número de puerto SSH predeterminado desde 22 a un puerto aleatorio, más alto que 1024, y no permita el acceso remoto de SSH a la cuenta raíz a través de la contraseña o la clave, abriendo el archivo de configuración principal del servidor SSH y realiza los siguientes cambios.

$ sudo vi/etc/ssh/sshd_config 

Primero, busca la línea comentada #Port22 y agregue una nueva línea debajo (reemplace el número de puerto de escucha en consecuencia):

Puerto 2345 

No cierre el archivo, desplácese hacia abajo y busque la línea #Permitrootlogin Sí, desenchufe la línea eliminando el # firma (hashtag) desde el comienzo de la línea y modifique la línea para que se vea como se muestra en el siguiente extracto.

Permitrootlogin no 
Servicio SSH seguro

Posteriormente, reinicie el servidor SSH para aplicar la nueva configuración y pruebe la configuración tratando de iniciar sesión desde una máquina remota a este servidor con la cuenta raíz a través del nuevo número de puerto. El acceso a la cuenta raíz a través de SSH debe estar restringido.

$ sudo systemctl reiniciar sshd 

Además, ejecute netstat o Comando SS y filtre la salida a través del comando GREP para mostrar el nuevo número de puerto de escucha para el servidor SSH.

$ sudo ss -tlpn | GREP SSH $ sudo netstat -tlpn | grep ssh 
Verificar el puerto SSH Artículo relacionado: 7 Consejos de seguridad SSH útiles para Harden OpenSsh Server

Hay situaciones en las que es posible que desee desconectar automáticamente todas las conexiones SSH remotas establecidas en su servidor después de un período de inactividad.

Para habilitar esta función, ejecute el siguiente comando, que agrega el Tmout Variable Bash a su cuenta .bashrc Archivo oculto y obliga a cada conexión SSH realizada con el nombre del usuario para desconectarse o abandonar después de 5 minutos de inactividad.

$ echo 'tmout = 300' >> .bashrc 

Ejecute el comando de cola para verificar si la variable se ha agregado correctamente al final de .bashrc archivo. Todas las conexiones SSH posteriores se cerrarán automáticamente después de 5 minutos de inactividad a partir de ahora.

$ cola .bashrc 

En la siguiente captura de pantalla, la sesión SSH remota desde la máquina Drupal hasta el servidor Ubuntu a través de la cuenta Ubuntu_user ha sido programada y el desecho automático después de 5 minutos.

Sesiones de SSH de desconexión automática

Configurar Ubuntu Firewall UFW

Cada servidor necesita un firewall bien configurado para asegurar el sistema a nivel de red. Ubuntu Server usa UFW Aplicación para administrar las reglas iptables en el servidor.

Verifique el estado de la aplicación UFW Firewall en Ubuntu emitiendo los comandos a continuación.

$ sudo systemctl status UFW $ sudo UFW estado 
Consulte el estado de firewall de UFW

Por lo general, el demonio de firewall UFW está en funcionamiento en el servidor Ubuntu, pero las reglas no se aplican de forma predeterminada. Antes de habilitar la política de firewall de UFW en su sistema, primero debe agregar una nueva regla para permitir que el tráfico SSH pase por el firewall a través del puerto SSH modificado. La regla se puede agregar ejecutando el siguiente comando.

$ sudo UFW Permitir 2345/TCP 

Después de permitir el tráfico SSH, puede habilitar y verificar la aplicación UFW Firewall con los siguientes comandos.

$ sudo ufw habilitar $ sudo UFW estado 
Abra el puerto SSH y verifique

Para agregar nuevas reglas de firewall para otros servicios de red instalados posteriormente en su servidor, como el servidor HTTP, un servidor de correo u otros servicios de red, use los ejemplos de comandos de firewall a continuación como guía.

$ sudo UFW Permitir http #LOW HTTP tráfico $ sudo UFW Permitir Proto TCP de cualquiera a cualquier puerto 25,443 # permitir el tráfico HTTPS y SMTP 

Para enumerar todas las reglas de firewall, ejecute el siguiente comando.

$ sudo UFW estado detallado 
Consulte las reglas de firewall de UFW Artículo relacionado: Cómo configurar UFW Firewall en Ubuntu Server

Establezca la hora del servidor de Ubuntu

Para controlar o consultar el reloj del servidor Ubuntu y otras configuraciones de tiempo relacionadas, ejecute el comando Timedatectl sin argumento.

Para cambiar la configuración de la zona horaria de su servidor, primero ejecute comando timedatectl Con el argumento de List TimeZones para enumerar todas las zonas horarias disponibles y, luego, establecer la zona horaria de su sistema como se muestra en el siguiente extracto.

$ sudo timedatectl $ sudo timedatectl list timeZones $ sudo timedatectl set-timezone europe/vienna 
Establecer la zona horaria de Ubuntu

El nuevo Systemd-Timesyncd Systemd Daemon Client se puede utilizar en Ubuntu para proporcionar un tiempo preciso para su servidor a través de la red y sincronizar el tiempo con un servidor de par de tiempo superior.

Para aplicar esta nueva característica de Systemd, modifique Systemd-Timesyncd Archivo de configuración de Daemon y agregue los servidores NTP geográficos más cercanos a la línea de instrucción NTP, como se muestra en el extracto de archivo a continuación:

$ sudo nano/etc/systemd/timesyncd.confusión 

Agregar la siguiente configuración a Timesyncd.confusión archivo:

[Tiempo] NTP = 0.piscina.NTP.org 1.piscina.NTP.org fallbackntp = ntp.ubuntu.comunicarse 
Configuración de tiempo de NTP

Para agregar sus servidores NTP geográficos más cercanos, consulte la lista de servidores del proyecto NTP Pool en la siguiente dirección: http: // www.piscina.NTP.org/es/

Posteriormente, reinicie el Daemon SystemD Timesync para reflejar los cambios y verifique el estado del demonio ejecutando los comandos a continuación. Después de reiniciar, el demonio comenzará a sincronizar el tiempo con el nuevo par del servidor NTP.

$ sudo systemctl reiniciar Systemd-Timesyncd.Servicio $ sudo systemCtl statusd-modeSyncd.servicio 
Servicio de inicio de tiempo de tiempo

Deshabilite y elimine los servicios innecesarios en Ubuntu

Para obtener una lista de todos los servicios de red TCP y UDP aumentando de forma predeterminada en su servidor Ubuntu, ejecute el ss o comando netstat.

$ sudo netstat -tulpn o $ sudo ss -tulpn 
Enumere todos los servicios en ejecución

Mirando con Ubuntu 16.10 versión, el resolución DNS predeterminado ahora está controlado por resuelto de Systemd servicio, como lo revela la salida de netstat o Comandos SS.

También debes consultar el resuelto de Systemd Estado del servicio ejecutando el siguiente comando.

$ sudo systemctl status systemd resuelto.servicio 
Verifique el estado resuelto de Systemd

El resuelto de Systemd El servicio se vincula en todas las interfaces de red habilitadas y escucha en los puertos 53 y 5355 TCP y UDP.

Correr resuelto del sistema El almacenamiento en caché del demonio DNS en un servidor de producción puede ser peligroso debido a la numerosa cantidad de ataques DDoS realizados por piratas informáticos maliciosos contra servidores DNS no garantizados.

Para detener y deshabilitar este servicio, ejecute los siguientes comandos.

$ sudo SystemCTL STOP resuelto $ sudo SystemCTL DISPLED-resuelto 
Deshabilitar Systemd Servicio resuelto

Verifique si el servicio ha sido detenido y deshabilitado emitiendo ss o comando netstat. Los puertos de escucha resueltos con SystemD, 53 y 5355 TCP y UDP, no deben enumerarse en la salida del comando NetStat o SS, como se ilustra en la siguiente.

También debe reiniciar la máquina para deshabilitar completamente todos los servicios de demonio resueltos de Systemd y restaurar el valor predeterminado /etc/resolv.confusión archivo.

$ sudo ss -tulpn $ sudo netstat -tulpn $ sudo systemctl reiniciar 
Verificar todos los servicios en ejecución

Aunque ha deshabilitado algunos servicios de red no deseados para que se ejecutaran en su servidor, también hay otros servicios instalados y ejecutados en su sistema, como LXC proceso y Snapd servicio. Estos servicios se pueden detectar fácilmente a través de PS, TOP o pstree comandos.

$ sudo ps aux $ sudo top $ sudo pstree 
Lista de servicios de ejecución en formato de árbol

En caso de que no use la virtualización de contenedores LXC en su servidor o comience a instalar software empaquetado a través de Snap Package Manager, debe deshabilitar y eliminar por completo estos servicios, emitiendo los comandos a continuación.

$ sudo Apt Autoremove-Purge LXC-Common LXCFS $ sudo apt Autoremove-Purge Snapd 

Eso es todo! Ahora, Ubuntu Server ahora está preparado para instalar un software adicional necesario para servicios o aplicaciones de red personalizadas, como instalar y configurar un servidor web, un servidor de base de datos, un servicio de compartir archivos u otras aplicaciones específicas.