Preparación básica de un servidor de Linux

  Se ha hablado, en anteriores entradas, acerca de numerosos tipos de servidores, en especial, de servidores de red, pero poco se ha tratado el tema de los servidores de base donde suelen ir instalados todos los demás, así como otros programas que realizan tareas junto al servidor.
  Y es que Internet Information Services, Nginx, Tomcat, los sistemas de gestión de bases de datos, los servidores de DNS o de DHCP, y otros programas que gestionan redes de todo tipo suelen estar instalados como parte o en un sistema operativo de servidor (Ubuntu Server, Windows Server, Red Hat, CentOS, Debian, etc.).
  En los ejemplos de la siguiente explicación se empleará un sistema operativo Debian 9.
  En primer lugar, un sistema operativo de servidor debe ahorrar la mayor cantidad de recursos posible, por lo que lo mejor es no instalar un entorno gráfico de escritorio o, en su defecto, el más ligero que se conozca (Openbox, XFCE, LXDE, etc.).
  En segundo lugar, si es posible durante la instalación, se debe instalar un servidor SSH para poderse conectar remotamente al servidor principal. Sin embargo, dicha conexión debe ser segura, por lo que se debe editar el archivo "sshd_config" (situado en las ruta "/etc/ssh/") y descomentar y cambiar los siguientes parámetros:
  •   Port: Se cambia el número de puerto predeterminado por otro que esté libre.
  •   Authentication: Se añade "Protocol 2".
  •   PermitRootLogin: Cambiar el valor predeterminado por el valor "prohibit_password".
  •   PubkeyAuthentication: Sólo descomentarla.
  •   AuthorizedkeysFile .ssh/authorized_keys  .ssh/authorized_keys2: Sólo descomentarla (después hay que añadir una clave pública al servidor).
  El tercer paso es añadir repositorios que le falten al servidor, como los de las ramas "Contrib", "Non-free" y "Backports" (es posible que ya los tengan, dependiendo del sistema operativo de Linux). Esto se puede hacer de dos maneras; una es escribiendo (o copiando y pegando) directamente las líneas que se muestran más adelante en el archivo "sources.list" (alojado en la ruta "/etc/apt/"), y la otra es escribiendo las mismas líneas en un fichero con la extensión ".list" dentro de la ruta "/etc/apt/sources.list.d/". Las líneas a escribir son:
## Note, this file is written by cloud-init on first boot of an instance
## modifications made here will not survive a re-bundle.
## if you wish to make changes you can:
## a.) add 'apt_preserve_sources_list: true' to /etc/cloud/cloud.cfg
##     or do the same in user-data
## b.) add sources in /etc/apt/sources.list.d
## c.) make changes to template file /etc/cloud/templates/sources.list.debian.tmpl
###

# See http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.html
# for how to upgrade to newer versions of the distribution.
deb http://deb.debian.org/debian stretch main contrib non-free
deb-src http://deb.debian.org/debian stretch main contrib non-free

## Major bug fix updates produced after the final release of the
## distribution.
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free
deb http://deb.debian.org/debian stretch-updates main contrib non-free
deb-src http://deb.debian.org/debian stretch-updates main contrib non-free

## Uncomment the following two lines to add software from the 'backports'
## repository.
##
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free

  A continuación, se actualiza la lista de paquetes mediante el comando apt update (anteponiendo sudo si no se está como administrador), y se instalan los siguientes paquetes básicos de administración de sistemas [comando apt install <nombre del paquete> (anteponiendo sudo si no se está como administrador)]:
  • joe (editor de texto).
  • most (permite ver paginada cualquier lista y texto en un terminal).
  • lynx (navegador de red de consola).
  • curl (descarga de paquetes).
  • nmap (escáner de red).
  • deborphan (elimina dependencias de paquetes desinstalados).
  • ntp (Herramientas de NTP).
  • ntpdate (sincroniza el reloj con NTP).
  • htop (visor del sistema).
  • syslog-ng (gestor de registros).
  • bzip2 (programa de compresión de archivos).
  • net-tools (herramientas de red).
  • apt-transport-https (repositorios).
  • iptables-persistent (cortafuegos).
  • vim (editor de texto).
  Seguidamente se debe reconfigurar la sincronización horaria a la zona adecuada utilizando el comando dpkg-reconfigure tzdata (anteponiendo sudo si no se está como administrador).
  El siguiente paso consiste en preparar la red del servidor. Lo primero (si no se va a utilizar el nombre del equipo dado durante la instalación) es renombrar el equipo editando el archivo "hostname" (situado en el directorio "/etc/"; puede verse que el equipo se llama "fct" en este ejemplo).
  Con el nombre definido, ya es posible editar el archivo "hosts" (alojado en el mismo directorio que el anterior), donde se comentarán o se borrarán las líneas correspondientes a las direcciones IPv6, y se cambiarán las líneas de dicho archivo por las siguientes:
  • <IP pública>       <nombre del equipo>
  • <IP principal>     <nombre del equipo>
  • 127.0.0.1            <nombre del equipo>  [localhost]
 Este archivo deberá quedar, más o menos, como en la siguiente imagen.
  A continuación, se preparan los interfaces de red del servidor. Si existe una red interna, lo mejor es que tengan dos adaptadores de red, uno de ellos para conectarse al módem y el otro para conectarlo a un switch y a dicha red. En todo caso, hay que editar el archivo "interfaces" (situado en la ruta "/etc/network") y quitarle la configuración del interfaz principal (el que va al módem). Luego se crea un archivo de configuración de interfaz de red (con un nombre representativo) en la ruta "/etc/network/interfaces.d", donde se realizará la configuración del interfaz de red principal escribiendo las líneas:
# The primary network interface
auto <nombre de interfaz de red>
allow-hotplug <nombre de interfaz de red>

iface <nombre de interfaz de red> inet dhcp

  Debe quedar de un modo similar al de la siguiente imagen (en este ejemplo, el nombre de la interfaz de red es "eno1"):
  También es necesario crear, en el mismo directorio, un segundo archivo de configuración de red, para una dirección IP estática, con las siguientes líneas:
auto <nombre de interfaz de red>
iface <nombre de interfaz de red> inet static
        address <dirección IP>
        netmask <máscara de red>
        network <dirección IP de la red>
        broadcast <dirección IP del  dominio de difusión>
        dns-nameservers 8.8.8.8
   Al terminar, se reinicia la red mediante el comando systemctl restart networking (anteponiendo sudo si no se está como administrador).


CONFIGURACIONES MENORES

  Algo que facilita más de lo que se piensa el trabajo de administración de un servidor es el esquema de colores del terminal. Este puede modificarse, por ejemplo, editando el archivo  ".bashrc" situado en la ruta "/home/<nombre de usuario>", donde se deberán añadir las líneas siguientes al final de la sección "enable color support of ls and also add handy aliases":
export LS_OPTIONS='--color=auto'
eval "`dircolors`" 
alias ls='ls $LS_OPTIONS'

  También se pueden añadir estas otras al final de la sección "some more ls aliases":
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

  Por último, se pueden añadir al final del archivo arriba mencionado las siguientes líneas:
export HISTSIZE=-1
export HISTCONTROL=erasedups
shopt -s histappend

  Naturalmente, se deben guardar los cambios al finalizar.
  Otra configuración interesante, aunque no imprescindible, está relacionada con la red. Se trata de unas líneas que evitan que el interfaz (o interfaces) busque direcciones IPv6. Hay que colocarlas al final del archivo "sysctl.conf" (alojado en el directorio "etc").

# Tuned swappiness
vm.swappiness=1

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.<nombre de interfaz de red>.disable_ipv6 = 1


  Deben quedar de modo similar al de la siguiente imagen:


  Aguardo que la presente entrada haya sido del gusto del lector. De ser así, espero que este la comparta y/o la comente, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.