Prutezzione di u servitore Linux. Cosa da fà prima

Prutezzione di u servitore Linux. Cosa da fà prima
Habib M'henni/Wikimedia Commons, CC BY-SA

Oghje, crià un servitore in un hosting hè una questione di un paru di minuti è uni pochi clicchi di u mouse. Ma subitu dopu à u lanciu, si trova in un ambiente ostili, perchè hè apertu à tuttu Internet cum'è una ragazza innocente in una discoteca rocker. I scanners truveranu rapidamente è rilevanu millaie di bots scriptati automaticamente chì scorreranu a rete in cerca di vulnerabilità è misconfigurazioni. Ci hè uni pochi di cose chì duvete fà subitu dopu à u lanciu per assicurà a prutezzione di basa.

Cuntenuti

User non-root

U primu passu hè di creà un utilizatore non-root per sè stessu. U puntu hè chì l'utilizatore root privileggi assuluti in u sistema, è s'è vo li permette amministrazione remota, allura vi farà a mità di u travagliu per u pirate, lassannu un nomu d'utilizatore validu per ellu.

Dunque, avete bisognu di creà un altru utilizatore, è disattivà l'amministrazione remota via SSH per root.

Un novu utilizatore hè iniziatu da u cumandimu useradd:

useradd [options] <username>

Allora una password hè aghjuntu per ellu cù u cumandamentu passwd:

passwd <username>

Infine, stu utilizatore deve esse aghjuntu à un gruppu chì hà u dirittu di eseguisce cumandamenti elevati sudo. Sicondu a distribuzione Linux, questi ponu esse gruppi diffirenti. Per esempiu, in CentOS è Red Hat, l'utilizatore hè aghjuntu à u gruppu wheel:

usermod -aG wheel <username>

In Ubuntu hè aghjuntu à u gruppu sudo:

usermod -aG sudo <username>

Chjavi invece di password SSH

A forza bruta o fughe di password sò un vettore di attaccu standard, cusì hè megliu disattivà l'autentificazione di password in SSH (Secure Shell) è utilizate l'autentificazione chjave invece.

Ci sò diversi prugrammi per implementà u protocolu SSH, cum'è lsh и Goccia d'acqua, ma u più pupulare hè OpenSSH. Installazione di u cliente OpenSSH in Ubuntu:

sudo apt install openssh-client

Installazione di u servitore:

sudo apt install openssh-server

Accuminciate u daemon SSH (sshd) nantu à u servitore Ubuntu:

sudo systemctl start sshd

Accumincia automaticamente u daemon in ogni boot:

sudo systemctl enable sshd

Hè da nutà chì a parte di u servitore di OpenSSH include a parte di u cliente. Hè, à traversu openssh-server pudete cunnette cù altri servitori. Inoltre, da a vostra macchina cliente, pudete inizià un tunnel SSH da un servitore remotu à un òspite di terzu, è dopu l'ospite di terzu cunsiderà u servitore remotu cum'è a fonte di e dumande. Una funzione assai utile per maschera u vostru sistema. Vede l'articulu per i dettagli "Consiglii pratichi, Esempii è Tunnel SSH".

In una macchina cliente, di solitu ùn hà micca sensu installà un servitore cumpletu per impedisce a pussibilità di cunnessione remota à un computer (per ragioni di sicurezza).

Dunque, per u vostru novu utilizatore, avete prima bisognu di generà chjave SSH in l'urdinatore da quale accede à u servitore:

ssh-keygen -t rsa

A chjave publica hè guardata in un schedariu .pub è s'assumiglia à una catena di caratteri aleatori chì principia cù ssh-rsa.

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

Allora, da sottu à a radica, crea un cartulare SSH nantu à u servitore in u cartulare di casa di l'utilizatori è aghjunghje a chjave publica SSH à u schedariu. authorized_keys, usendu un editore di testu cum'è Vim:

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

vim /home/user_name/.ssh/authorized_keys

Infine, stabilisce i permessi curretti per u schedariu:

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

è cambia a pruprietà à questu utilizatore:

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

Da u latu di u cliente, avete bisognu di specificà u locu di a chjave secreta per l'autentificazione:

ssh-add DIR_PATH/keylocation

Avà pudete accede à u servitore sottu u nome d'utilizatore cù sta chjave:

ssh [username]@hostname

Dopu l'autorizazione, pudete aduprà u cumandimu scp per copià i schedari, l'utilità sshfs per muntà remotamente un sistema di fugliale o cartulari.

Hè cunsigliatu di fà parechje copie di salvezza di a chjave privata, perchè se disattiveghjanu l'autentificazione di password è a perde, ùn avete micca manera di log in u vostru servitore.

Cumu l'esitatu sopra, in SSH avete bisognu di disattivà l'autentificazione per root (questu hè u mutivu chì avemu principiatu un novu utilizatore).

In CentOS / Red Hat truvamu a linea PermitRootLogin yes in u schedariu di cunfigurazione /etc/ssh/sshd_config è cambia:

PermitRootLogin no

In Ubuntu aghjunghje a linea PermitRootLogin no à u schedariu di cunfigurazione 10-my-sshd-settings.conf:

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

Dopu avè verificatu chì u novu utilizatore hè autentificatu cù a so chjave, pudete disattivà l'autentificazione di password per eliminà u risicu di fuga di password o forza bruta. Avà, per accede à u servitore, un attaccu hà bisognu di ottene una chjave privata.

In CentOS / Red Hat truvamu a linea PasswordAuthentication yes in u schedariu di cunfigurazione /etc/ssh/sshd_config è cambià cusì:

PasswordAuthentication no

In Ubuntu aghjunghje a linea PasswordAuthentication no à schedariu 10-my-sshd-settings.conf:

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

Per struzzioni nantu à attivà l'autentificazione à dui fattori via SSH, vede ccà.

firewall

U firewall assicura chì solu u trafficu nantu à i porti chì permettenu direttamente andà à u servitore. Questu prutege contr'à u sfruttamentu di i porti chì sò accidentalmente attivati ​​cù altri servizii, chì riduce assai a superficia di attaccu.

Prima di installà un firewall, avete bisognu di assicurà chì SSH hè inclusu in a lista di esclusione è ùn serà micca bluccatu. Altrimenti, dopu avè principiatu u firewall, ùn pudemu micca cunnette à u servitore.

A distribuzione Ubuntu vene cun Firewall Uncomplicated (ufw), è cù CentOS / Red Hat - firewalld.

Permette SSH in u firewall in Ubuntu:

sudo ufw allow ssh

In CentOS / Red Hat utilizate u cumandamentu firewall-cmd:

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

Dopu à sta prucedura, pudete inizià u firewall.

Nant'à CentOS / Red Hat, inizià u serviziu systemd per firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

In Ubuntu usemu u cumandimu seguente:

sudo ufw enable

Fail2Ban

sirvizziu Fail2Ban analizà i logs nantu à u servitore è cunta u numeru di tentativi di accessu da ogni indirizzu IP. I paràmetri specificanu e regule per quanti tentativi d'accessu sò permessi per un certu intervalu - dopu chì questu indirizzu IP hè bluccatu per un periudu di tempu. Per esempiu, permettemu 5 tentativi di autentificazione SSH falluti in 2 ore, dopu bluccà l'indirizzu IP datu per 12 ore.

Installazione di Fail2Ban nantu à CentOS è Red Hat:

sudo yum install fail2ban

Installazione nantu à Ubuntu è Debian:

sudo apt install fail2ban

Lanciamentu:

systemctl start fail2ban
systemctl enable fail2ban

U prugramma hà dui schedarii di cunfigurazione: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. E restrizioni di Ban sò specificate in u secondu schedariu.

Jail for SSH hè attivatu per difettu cù paràmetri predeterminati (5 tentativi, intervallu 10 minuti, ban per 10 minuti).

[DEFAULT] ignorecommand=bantime=10m findtime=10m maxretry=5

In più di SSH, Fail2Ban pò prutege altri servizii nantu à u servitore web nginx o Apache.

Aghjurnamenti automatichi di sicurità

Comu sapete, i novi vulnerabili sò constantemente truvati in tutti i prugrammi. Dopu chì l'infurmazione hè publicata, i sfruttamenti sò aghjuntu à i pacchetti di sfruttamentu populari, chì sò massivamente utilizati da i pirate è l'adulescenti quandu scannanu tutti i servitori in una fila. Per quessa, hè assai impurtante per stallà l'aghjurnamenti di sicurità appena apparsu.

Nant'à u servitore Ubuntu, l'aghjurnamenti automatichi di sicurezza sò attivati ​​per automaticamente, per quessa, ùn hè micca necessariu più azione.

In CentOS / Red Hat avete bisognu di stallà l'applicazione dnf-automaticu è accende u timer:

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

Verificazione di u timer:

sudo systemctl status dnf-automatic.timer

Cambia i porti predeterminati

SSH hè statu sviluppatu in u 1995 per rimpiazzà telnet (port 23) è ftp (port 21), cusì l'autore di u prugramma, Tatu Iltonen U portu sceltu 22 per difettu, è hè statu appruvatu da IANA.

Naturalmente, tutti l'attaccanti sò cunuscenti di quale portu SSH hè in esecuzione - è scansanu cù u restu di i porti standard per scopre a versione di u software, per verificà e password di root standard, è cusì.

Cambià i porti standard - offuscazione - parechji volte reduce a quantità di trafficu di basura, a dimensione di i logs è a carica nantu à u servitore, è ancu riduce a superficia di l'attaccu. Ancu se certi criticà stu metudu di "prutezzione attraversu l'oscurità" (sicurezza attraversu l'oscurità). U mutivu hè chì sta tecnica hè opposta à u funnamintali prutezzione architetturale. Dunque, per esempiu, l'Istitutu Naziunale di Standards è Tecnulugia di i Stati Uniti in "Guida di Sicurezza di u Servitore" indica a necessità di una architettura di u servitore apertu: "A sicurità di un sistema ùn deve micca invià à u sicretu di l'implementazione di i so cumpunenti", dice u documentu.

In teoria, cambià i porti predeterminati hè contru à a pratica di l'architettura aperta. Ma in pratica, a quantità di trafficu maliziusu hè in realtà ridutta, cusì hè una misura simplice è efficace.

U numeru di u portu pò esse cunfiguratu cambiendu a direttiva Port 22 in u schedariu di cunfigurazione / etc / ssh / sshd_config. Hè ancu indicatu da u paràmetru -p <port> в ssh. Cliente SSH è prugrammi sftp sustene ancu l'opzione -p <port>.

Parameter -p <port> pò esse usatu per specificà u numeru di portu quandu cunnette cù u cumandamentu ssh in linux. IN sftp и scp u paràmetru hè utilizatu -P <port> (P majuscule). L'istruzzioni di linea di cumanda annullanu qualsiasi valore in i schedarii di cunfigurazione.

Se ci sò parechji servitori, quasi tutte queste azzioni per prutege u servitore Linux pò esse automatizatu in un script. Ma s'ellu ci hè solu un servitore, allora hè megliu cuntrullà manualmente u prucessu.

I diritti di publicità

Ordine è cuminciate subitu! Creazione di VDS ogni cunfigurazione è cù qualsiasi sistema operatore in un minutu. A cunfigurazione massima vi permetterà di esce à u massimu - 128 core CPU, 512 GB RAM, 4000 GB NVMe. Epica 🙂

Prutezzione di u servitore Linux. Cosa da fà prima

Source: www.habr.com