Configuració inicial del servidor amb Ubuntu 20.04/18.04 i 16.04


Aquest tutorial us guiarà sobre els primers passos bàsics que heu de configurar en un nou servidor Ubuntu instal·lat per augmentar la seguretat i la fiabilitat del vostre servidor.

Les configuracions explicades en aquest tema són gairebé les mateixes per a tots els sistemes de servidors d'Ubuntu, pel que fa a la plataforma del sistema operatiu subjacent, tant si Ubuntu s'instal·la en un servidor nu, en una màquina virtual privada o en una màquina virtual activada en un VPS públic. núvol.

  • Instal·lació del servidor de l'Ubuntu 20.04
  • Instal·lació del servidor de l'Ubuntu 18.04
  • Instal·lació del servidor de l'Ubuntu 16.04

Actualitzar i actualitzar el sistema Ubuntu

El primer pas que heu de tenir en compte en cas d'instal·lació nova del servidor Ubuntu o d'un nou VPS Ubuntu desplegat és assegurar-vos que el sistema i tots els components del sistema, com ara el nucli, els pedaços de seguretat.

Per actualitzar el servidor Ubuntu, inicieu sessió a la consola del servidor amb un compte amb privilegis de root o directament com a root i executeu les ordres següents per dur a terme el procés d'actualització i actualització.

$ sudo apt update 

Després d'executar l'ordre d'actualització, veureu el nombre de paquets disponibles per al procés d'actualització i l'ordre utilitzat per llistar les actualitzacions de paquets.

$ sudo apt list --upgradable

Després d'haver consultat la llista de paquets disponibles per actualitzar, emet l'ordre següent per iniciar el procés d'actualització del sistema.

$ sudo apt upgrade

Per eliminar tots els paquets deb descarregats localment i tots els altres cachés apt-get, executeu l'ordre següent.

$ sudo apt autoremove
$ sudo apt clean

Crea un compte nou a Ubuntu

Per defecte, com a mesura de seguretat, el compte root està completament desactivat a Ubuntu. Per crear un compte nou al sistema, inicieu sessió al sistema amb l'usuari del compte amb privilegis root i creeu un compte nou amb l'ordre següent.

Aquest nou compte s'atorgarà amb privilegis de poders root mitjançant l'ordre sudo i s'utilitzarà per realitzar tasques administratives al sistema. Assegureu-vos de configurar una contrasenya segura per protegir aquest compte. Seguiu la indicació de l'adduser per configurar els detalls de l'usuari i la contrasenya.

$ sudo adduser ubuntu_user

Si aquest compte s'assignarà a un altre administrador del sistema, podeu obligar l'usuari a canviar la seva contrasenya en el primer intent d'inici de sessió emetent l'ordre següent.

$ sudo chage -d0 ubuntu_user

De moment, el nou usuari afegit no pot realitzar tasques administratives mitjançant la utilitat sudo. Per atorgar aquest nou compte d'usuari amb privilegis administratius, hauríeu d'afegir l'usuari al grup del sistema \sudo emetent l'ordre següent.

$ sudo usermod -a -G sudo ubuntu_user

Per defecte, tots els usuaris que pertanyen al grup sudo poden executar ordres amb privilegis root mitjançant la utilitat sudo. L'ordre Sudo s'ha d'utilitzar abans d'escriure l'ordre necessària per a l'execució, tal com es mostra a l'exemple següent.

$ sudo apt install package_name

Comproveu si el nou usuari té els privilegis de root concedits, iniciant sessió al sistema i executant l'ordre d'actualització apt amb el prefix sudo.

$ su - ubuntu_user
$ sudo apt update

Configura el nom d'amfitrió del sistema a Ubuntu

Normalment, el nom d'amfitrió de la màquina es configura durant el procés d'instal·lació del sistema o quan es crea el VPS al núvol. Tanmateix, hauríeu de canviar el nom de la vostra màquina per reflectir millor la destinació del vostre servidor o per descriure millor el seu propòsit final.

En una gran empresa, les màquines reben el nom d'esquemes de nom complexos per identificar fàcilment la màquina als bastidors del centre de dades. Per exemple, si la vostra màquina Ubuntu farà funcionar un servidor de correu, el nom de la màquina hauria de reflectir aquest fet i podeu configurar el nom d'amfitrió de la màquina com a mx01.mydomain.lan, per exemple.

Per mostrar detalls sobre el nom d'amfitrió de la vostra màquina, executeu l'ordre següent.

$ hostnamectl

Per canviar el nom de la vostra màquina, emeteu l'ordre hostnamectl amb el nou nom que configurareu per a la vostra màquina, tal com es mostra a l'extracte següent.

$ sudo hostnamectl set-hostname tecmint

Verifiqueu el nou nom del vostre sistema amb una de les ordres següents.

$ hostname
$ hostname -s
$ cat /etc/hostname 

Configureu SSH amb l'autenticació de clau pública a Ubuntu

Per augmentar el grau de seguretat del sistema d'un servidor Ubuntu, hauríeu de configurar l'autenticació de clau pública SSH per a un compte local. Per generar el parell de claus SSH, la clau pública i privada, amb una longitud de clau especificada, com ara 2048 bits, executeu l'ordre següent a la consola del vostre servidor.

Assegureu-vos que heu iniciat la sessió al sistema amb l'usuari que esteu configurant la clau SSH.

$ su - ubuntu_user
$ ssh-keygen -t RSA -b 2048

Mentre es genera la clau, se us demanarà que afegiu una frase de contrasenya per tal de protegir la clau. Podeu introduir una frase de contrasenya forta o triar deixar-la en blanc si voleu automatitzar tasques mitjançant el servidor SSH.

Un cop generada la clau SSH, podeu copiar la clau pública a un servidor remot executant l'ordre següent. Per instal·lar la clau pública al servidor SSH remot, necessitareu un compte d'usuari remot amb els permisos i credencials adequats per iniciar sessió al servidor remot.

$ ssh-copy-id [email _server

Hauríeu de poder iniciar sessió automàticament mitjançant SSH al servidor remot mitjançant el mètode d'autenticació de clau pública. No haureu d'afegir la contrasenya de l'usuari remot mentre feu servir l'autenticació de clau pública SSH.

Després d'haver iniciat sessió al servidor remot, podeu començar a executar ordres, com ara l'ordre w per llistar els usuaris ssh connectats a distància, tal com es mostra a la captura de pantalla següent.

Escriviu exit a la consola per tancar la sessió SSH remota.

$ ssh [email _server
$ w
$ exit

Per veure el contingut de la vostra clau SSH pública per instal·lar-la manualment en un servidor SSH remot, emeteu l'ordre següent.

$ cat ~/.ssh/id_rsa.pub

Servidor SSH segur a Ubuntu

Per tal de protegir el dimoni SSH, hauríeu de canviar el número de port SSH predeterminat de 22 a un port aleatori, superior a 1024, i no permetre l'accés SSH remot al compte root mitjançant contrasenya o clau, obrint el fitxer de configuració principal del servidor SSH i fent el canvis següents.

$ sudo vi /etc/ssh/sshd_config

Primer, cerqueu la línia comentada #Port22 i afegiu una nova línia a sota (substituïu el número de port d'escolta en conseqüència):

Port 2345

No tanqueu el fitxer, desplaceu-vos cap avall i cerqueu la línia #PermitRootLogin sí, elimineu el comentari de la línia eliminant el signe # (hashtag) del principi de la línia i modifiqueu la línia perquè sembli com es mostra a l'extracte següent.

PermitRootLogin no

Després, reinicieu el servidor SSH per aplicar la nova configuració i provar la configuració intentant iniciar sessió des d'una màquina remota a aquest servidor amb el compte root mitjançant el nou número de port. L'accés al compte root mitjançant SSH hauria d'estar restringit.

$ sudo systemctl restart sshd

A més, executeu l'ordre grep per mostrar el nou número de port d'escolta per al servidor SSH.

$ sudo ss -tlpn| grep ssh
$ sudo netstat -tlpn| grep ssh

Hi ha situacions en què és possible que vulgueu desconnectar automàticament totes les connexions SSH remotes establertes al vostre servidor després d'un període d'inactivitat.

Per habilitar aquesta funció, executeu l'ordre següent, que afegeix la variable bash TMOUT al fitxer ocult .bashrc del vostre compte i obliga a desconnectar o abandonar totes les connexions SSH fetes amb el nom de l'usuari després de 5 minuts d'inactivitat.

$ echo 'TMOUT=300' >> .bashrc

Executeu l'ordre tail per comprovar si la variable s'ha afegit correctament al final del fitxer .bashrc. Totes les connexions SSH posteriors es tancaran automàticament després de 5 minuts d'inactivitat a partir d'ara.

$ tail .bashrc

A la captura de pantalla següent, la sessió SSH remota de la màquina drupal al servidor Ubuntu mitjançant el compte ubuntu_user s'ha esgotat i s'ha tancat automàticament després de 5 minuts.

Configura l'UFW del tallafoc d'Ubuntu

Cada servidor necessita un tallafoc ben configurat per tal de protegir el sistema a nivell de xarxa. El servidor Ubuntu utilitza l'aplicació UFW per gestionar les regles d'iptables al servidor.

Comproveu l'estat de l'aplicació del tallafoc UFW a Ubuntu emetent les ordres següents.

$ sudo systemctl status ufw
$ sudo ufw status

Normalment, el dimoni del tallafoc UFW està en funcionament al servidor Ubuntu, però les regles no s'apliquen de manera predeterminada. Abans d'habilitar la política de tallafocs UFW al vostre sistema, primer haureu d'afegir una regla nova per permetre que el trànsit SSH passi pel tallafoc a través del port SSH modificat. La regla es pot afegir executant l'ordre següent.

$ sudo ufw allow 2345/tcp

Després d'haver permès el trànsit SSH, podeu habilitar i comprovar l'aplicació del tallafoc UFW amb les ordres següents.

$ sudo ufw enable
$ sudo ufw status

Per afegir regles de tallafoc noves per a altres serveis de xarxa instal·lats posteriorment al vostre servidor, com ara un servidor HTTP, un servidor de correu o altres serveis de xarxa, utilitzeu els exemples d'ordres del tallafoc següents com a guia.

$ sudo ufw allow http  #allow http traffic
$ sudo ufw allow proto tcp from any to any port 25,443  # allow https and smtp traffic

Per llistar totes les regles del tallafoc, executeu l'ordre següent.

$ sudo ufw status verbose

Estableix l'hora del servidor d'Ubuntu

Per controlar o consultar el rellotge del servidor Ubuntu i altres paràmetres de temps relacionats, executeu l'ordre timedatectl sense cap argument.

Per canviar la configuració de la zona horària del vostre servidor, primer executeu l'ordre timedatectl amb l'argument list-timezones per llistar totes les zones horàries disponibles i, a continuació, configureu la zona horària del vostre sistema tal com es mostra a l'extracte següent.

$ sudo timedatectl 
$ sudo timedatectl list-timezones 
$ sudo timedatectl set-timezone Europe/Vienna

El nou client de dimoni systemd-timesyncd systemd es pot utilitzar a Ubuntu per tal de proporcionar una hora precisa per al vostre servidor a través de la xarxa i sincronitzar l'hora amb un servidor igual d'hora superior.

Per aplicar aquesta nova característica de Systemd, modifiqueu el fitxer de configuració del dimoni systemd-timesyncd i afegiu els servidors NTP geogràficament més propers a la línia de declaració NTP, tal com es mostra a l'extracte del fitxer següent:

$ sudo nano /etc/systemd/timesyncd.conf

Afegiu la configuració següent al fitxer timesyncd.conf:

[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org
FallbackNTP=ntp.ubuntu.com

Per afegir els vostres servidors NTP geogràficament més propers, consulteu la llista de servidors de projectes del grup NTP a l'adreça següent: http://www.pool.ntp.org/en/

Després, reinicieu el dimoni Systemd timesync per reflectir els canvis i comproveu l'estat del dimoni executant les ordres següents. Després de reiniciar, el dimoni començarà a sincronitzar l'hora amb el nou peer del servidor ntp.

$ sudo systemctl restart systemd-timesyncd.service 
$ sudo systemctl status systemd-timesyncd.service

Desactiveu i elimineu els serveis innecessaris a Ubuntu

Per obtenir una llista de tots els serveis de xarxa TCP i UDP en funcionament de manera predeterminada al vostre servidor Ubuntu, executeu l'ordre ss o netstat.

$ sudo netstat -tulpn
OR
$ sudo ss -tulpn

A partir de la versió d'Ubuntu 16.10, la resolució de DNS predeterminada ara està controlada pel servei resolt per systemd, tal com revela la sortida de les ordres netstat o ss.

També hauríeu de comprovar l'estat del servei resolt per systemd executant l'ordre següent.

$ sudo systemctl status systemd-resolved.service

El servei resolt per systemd s'enllaça a totes les interfícies de xarxa habilitades i escolta als ports 53 i 5355 TCP i UDP.

Executar el dimoni DNS de la memòria cau resolt pel sistema en un servidor de producció pot ser perillós a causa de la gran quantitat d'atacs DDOS realitzats per pirates informàtics maliciosos contra servidors DNS no segurs.

Per aturar i desactivar aquest servei, executeu les ordres següents.

$ sudo systemctl stop systemd-resolved
$ sudo systemctl disable systemd-resolved

Verifiqueu si el servei s'ha aturat i desactivat emetent l'ordre ss o netstat. Els ports d'escolta resolts per systemd, 53 i 5355 TCP i UDP, no s'han d'enumerar a la sortida de comandaments netstat o ss, tal com es mostra a continuació.

També hauríeu de reiniciar la màquina per desactivar completament tots els serveis de dimoni resolts per systemd i restaurar el fitxer /etc/resolv.conf predeterminat.

$ sudo ss -tulpn
$ sudo netstat -tulpn
$ sudo systemctl reboot

Tot i que heu desactivat alguns serveis de xarxa no desitjats per executar-se al vostre servidor, també hi ha altres serveis instal·lats i en execució al vostre sistema, com ara el procés lxc i el servei snapd. Aquests serveis es poden detectar fàcilment mitjançant ordres top o pstree.

$ sudo ps aux
$ sudo top
$ sudo pstree

En cas que no utilitzeu la virtualització de contenidors LXC al vostre servidor o comenceu a instal·lar programari empaquetat mitjançant el gestor de paquets Snap, hauríeu de desactivar i eliminar completament aquests serveis emetent les ordres següents.

$ sudo apt autoremove --purge lxc-common lxcfs
$ sudo apt autoremove --purge snapd

Això és tot! Ara, el servidor Ubuntu està preparat per instal·lar programari addicional necessari per a serveis o aplicacions de xarxa personalitzades, com ara instal·lar i configurar un servidor web, un servidor de bases de dades, un servei de compartició de fitxers o altres aplicacions específiques.