Protecció del servidor Linux. Què fer primer

Protecció del servidor Linux. Què fer primer
Habib M'henni/Wikimedia Commons, CC BY-SA

Avui en dia, configurar un servidor en un allotjament és qüestió d'un parell de minuts i uns quants clics del ratolí. Però immediatament després del llançament, es troba en un entorn hostil, perquè està obert a tot Internet com una noia innocent en una discoteca rockera. Els escàners el trobaran ràpidament i descobriran milers de bots amb script automàtic que recorren la xarxa a la recerca de vulnerabilitats i configuracions incorrectes. Hi ha algunes coses que hauríeu de fer immediatament després del llançament per garantir una protecció bàsica.

Contingut

Usuari no root

El primer que heu de fer és crear un usuari que no sigui root. La qüestió és que l'usuari root privilegis absoluts al sistema, i si li permeteu l'administració remota, llavors farà la meitat de la feina per al pirata informàtic, deixant-li un nom d'usuari vàlid.

Per tant, heu de crear un altre usuari i desactivar l'administració remota mitjançant SSH per a root.

Es crea un usuari nou amb l'ordre useradd:

useradd [options] <username>

A continuació, s'afegeix una contrasenya amb l'ordre passwd:

passwd <username>

Finalment, aquest usuari s'ha d'afegir a un grup que tingui dret a executar ordres amb privilegis elevats sudo. Depenent de la distribució de Linux, aquests poden ser grups diferents. Per exemple, a CentOS i Red Hat s'afegeix un usuari a un grup wheel:

usermod -aG wheel <username>

A Ubuntu s'afegeix al grup sudo:

usermod -aG sudo <username>

Claus en lloc de contrasenyes SSH

La força bruta o la fuga de contrasenyes és un vector d'atac estàndard, per la qual cosa és millor desactivar l'autenticació de contrasenya a SSH (Secure Shell) i utilitzar l'autenticació de clau.

Hi ha diferents programes per implementar el protocol SSH, com ara lsh и Dropbear, però el més popular és OpenSSH. Instal·lació del client OpenSSH a Ubuntu:

sudo apt install openssh-client

Instal·lació del servidor:

sudo apt install openssh-server

Inici del dimoni SSH (sshd) en un servidor Ubuntu:

sudo systemctl start sshd

Inicieu automàticament el dimoni a cada arrencada:

sudo systemctl enable sshd

Cal tenir en compte que la part del servidor OpenSSH inclou la part del client. És a dir, a través openssh-server pots connectar-te a altres servidors. A més, des de la vostra màquina client podeu llançar un túnel SSH des d'un servidor remot a un amfitrió de tercers, i llavors l'amfitrió de tercers considerarà que el servidor remot és l'origen de les sol·licituds. Una funció molt convenient per emmascarar el vostre sistema. Per a més detalls, consulteu l'article. "Consells pràctics, exemples i túnels SSH".

Normalment no té sentit instal·lar un servidor complet a la màquina client per tal d'evitar la possibilitat de connexió remota a l'ordinador (per motius de seguretat).

Per tant, per al vostre nou usuari, primer heu de generar claus SSH a l'ordinador des del qual accedireu al servidor:

ssh-keygen -t rsa

La clau pública s'emmagatzema en un fitxer .pub i sembla una cadena de caràcters aleatoris que comença per ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

A continuació, com a root, creeu un directori SSH al servidor al directori d'inici de l'usuari i afegiu la clau pública SSH al fitxer authorized_keysutilitzant un editor de text com Vim:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Finalment, configureu els permisos correctes per al fitxer:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

i canvieu la propietat a aquest usuari:

chown -R username:username /home/username/.ssh

Al costat del client, heu d'especificar la ubicació de la clau secreta per a l'autenticació:

ssh-add DIR_PATH/keylocation

Ara podeu iniciar sessió al servidor amb el nom d'usuari amb aquesta clau:

ssh [username]@hostname

Després de l'autorització, podeu utilitzar l'ordre scp per copiar fitxers, la utilitat sshfs per muntar de forma remota un sistema de fitxers o directoris.

És recomanable fer diverses còpies de seguretat de la clau privada, perquè si desactiveu l'autenticació de la contrasenya i la perdeu, no tindreu cap manera d'iniciar sessió al vostre propi servidor.

Com s'ha esmentat anteriorment, a SSH cal desactivar l'autenticació per a root (per aquest motiu hem creat un nou usuari).

A CentOS/Red Hat trobem la línia PermitRootLogin yes al fitxer de configuració /etc/ssh/sshd_config i canviar-ho:

PermitRootLogin no

A Ubuntu afegiu la línia PermitRootLogin no al fitxer de configuració 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Després de verificar que l'usuari nou s'ha autenticat amb la seva clau, podeu desactivar l'autenticació de contrasenya per eliminar el risc de fuga de contrasenya o força bruta. Ara, per accedir al servidor, l'atacant haurà d'obtenir la clau privada.

A CentOS/Red Hat trobem la línia PasswordAuthentication yes al fitxer de configuració /etc/ssh/sshd_config i canvieu-lo de la següent manera:

PasswordAuthentication no

A Ubuntu afegiu la línia PasswordAuthentication no arxivar 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Per obtenir instruccions sobre com habilitar l'autenticació de dos factors mitjançant SSH, vegeu aquí.

Tallafoc

El tallafoc assegura que només el trànsit dels ports que permeteu directament anirà al servidor. Això protegeix contra l'explotació de ports habilitats accidentalment per altres serveis, la qual cosa redueix molt la superfície d'atac.

Abans d'instal·lar un tallafoc, heu d'assegurar-vos que SSH s'inclou a la llista d'exclusió i que no es bloquejarà. En cas contrari, després d'iniciar el tallafoc, no ens podrem connectar al servidor.

La distribució Ubuntu ve amb un tallafocs sense complicacions (ufw), i amb CentOS/Red Hat - firewalld.

Permetent SSH al tallafoc a Ubuntu:

sudo ufw allow ssh

A CentOS/Red Hat fem servir l'ordre firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Després d'aquest procediment, podeu iniciar el tallafoc.

A CentOS/Red Hat iniciem el servei systemd per a firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

A Ubuntu fem servir la següent comanda:

sudo ufw enable

fail2ban

Servei fail2ban analitza els registres del servidor i compta el nombre d'intents d'accés des de cada adreça IP. La configuració especifica les regles per quants intents d'accés es permeten en un interval determinat, després del qual aquesta adreça IP es bloqueja durant un període de temps determinat. Per exemple, permetem 5 intents d'autenticació sense èxit mitjançant SSH en un període de 2 hores, després dels quals bloquegem aquesta adreça IP durant 12 hores.

Instal·lació de Fail2Ban a CentOS i Red Hat:

sudo yum install fail2ban

Instal·lació a Ubuntu i Debian:

sudo apt install fail2ban

Llançament:

systemctl start fail2ban
systemctl enable fail2ban

El programa té dos fitxers de configuració: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Les restriccions de prohibició s'especifiquen al segon fitxer.

La presó per a SSH està activada per defecte amb la configuració predeterminada (5 intents, interval de 10 minuts, prohibició durant 10 minuts).

[DEFECTE] ignorecommand = temps de ban = 10 m de temps de recerca = 10 m de màxima prova = 5

A més de SSH, Fail2Ban pot protegir altres serveis al servidor web nginx o Apache.

Actualitzacions automàtiques de seguretat

Com sabeu, es troben constantment noves vulnerabilitats en tots els programes. Després de publicar la informació, s'afegeixen exploits als paquets d'explotacions populars, que són àmpliament utilitzats per pirates informàtics i adolescents quan escanegen tots els servidors seguits. Per tant, és molt important instal·lar actualitzacions de seguretat tan aviat com estiguin disponibles.

Els servidors d'Ubuntu tenen actualitzacions automàtiques de seguretat activades de manera predeterminada, de manera que no calen passos addicionals.

A CentOS/Red Hat cal instal·lar l'aplicació dnf-automàtic i enceneu el temporitzador:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Comprovació del temporitzador:

sudo systemctl status dnf-automatic.timer

Canvi de ports predeterminats

SSH es va desenvolupar el 1995 per substituir telnet (port 23) i ftp (port 21), de manera que l'autor del programa és Tatu Iltonen va triar el port 22 per defecte, i va ser aprovat per la IANA.

Naturalment, tots els atacants saben en quin port s'executa SSH i l'escanegen juntament amb altres ports estàndard per esbrinar la versió del programari, per comprovar les contrasenyes d'arrel estàndard, etc.

Canviar els ports estàndard - ofuscament - redueix el volum de trànsit brossa, la mida dels registres i la càrrega al servidor diverses vegades, i també redueix la superfície d'atac. Encara que alguns criticar aquest mètode de "defensa a través de l'obscuritat" (seguretat a través de l'obscuritat). La raó és que aquesta tècnica s'oposa a la fonamental protecció arquitectònica. Per tant, per exemple, l'Institut Nacional d'Estàndards i Tecnologia dels EUA "Guia de seguretat del servidor" indica la necessitat d'una arquitectura de servidor oberta: "La seguretat d'un sistema no hauria de dependre del secret de la implementació dels seus components", diu el document.

En teoria, canviar els ports predeterminats és contrari a les pràctiques d'arquitectura oberta. Però, a la pràctica, el volum de trànsit maliciós disminueix, de manera que aquesta és una mesura senzilla i eficaç.

El número de port es pot configurar canviant la directiva Port 22 al fitxer de configuració / etc / ssh / sshd_config. També s'indica amb el paràmetre -p <port> в sshd. Client i programes SSH sftp també admet el paràmetre -p <port>.

Paràmetre -p <port> es pot utilitzar per especificar el número de port quan es connecta amb l'ordre ssh en Linux. EN sftp и scp s'utilitza el paràmetre -P <port> (P majúscula). Especificar-lo des de la línia d'ordres anul·la qualsevol valor dels fitxers de configuració.

Si hi ha molts servidors, gairebé totes aquestes accions per protegir un servidor Linux es poden automatitzar en un script. Però si només hi ha un servidor, és millor controlar manualment el procés.

Sobre els drets de publicitat

Fes la comanda i comença a treballar de seguida! Creació de VDS qualsevol configuració i amb qualsevol sistema operatiu en un minut. La configuració màxima us permetrà passar-ho bé: 128 nuclis de CPU, 512 GB de RAM, 4000 GB NVMe. Bastant èpica :)

Protecció del servidor Linux. Què fer primer

Font: www.habr.com