Post

5 Steps per mettere al sicuro Linux

In questo post mostrerò come con 5 piccole procedure poter mettere in sicurezza il tuo ambiente linux (e proteggerlo dagli hacker).

Step 1. Abilitare aggiornamenti automatici (opzionale)

Uno dei fondamenti è quello di avere sempre un ambiente aggiornato periodicamente per essere protetti da gran parte delle possibili falle che possono annidarsi, di solito per eserienza non consiglio di permettere al tuo ambiente di aggiornarsi automaticamente, è sempre buona cosa e giusta sapere cosa viene installato, anche per poter risolvere senza troppo impegno problemi relativi a le varie fix e pacchetti.

I comandi usati in questo caso per procedere all’aggiornamento manuale sono i seguenti:

1
2
apt update
apt dist-upgrade

Se invece non abbiamo troppa voglia e non vogliamo stare troppo tempo a mantenere questo aspetto è possibile automatizzarlo con i seguenti comani:

1
2
apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades

Step 2. Creare Utente con privilegi limitati

Entrare in un server con utente root o con gli stessi privilegi non è assolutamente consigliato, anche se spesso necessitiamo di avere gli stessi privilegi per effettuare determinate attività. In questo caso creiamo una nuova utenza:

1
adduser <nome user>

ti chiederà di definire una password e altri valori per la profilazione.

Dobbiamo aggiungere l’utenza appena creata nel gruppo sudo in modo da permettergli l’utilizzo dei privilegi di root:

1
usermod -aG sudo <nome user>

autenticarsi con quest’ultima nell’ambiente, per poter richiamare i comandi con i privilegi di root dobbiamo aggiungere il sudo davanti ad ogni comando che lo richiede es:

1
sudo adduser

Step 3. Passwords are for Suckers

Le password possono essere violate, anche se sono formate da 30 caratteri e diversi simboli, perfino da degli attacchi di brute force magari, perchè correre questo rischio? quindi cacciamoci questo pensiero creando un authentication key pair.

Nella home della nostra utenza andremo a definire il luogo dove metteremo al sicuro la nostra chiave pubblica (pensatela come ad un lucchetto):

1
mkdir ~/.ssh && chmod 700 ~/.ssh

ora creeremo su Windows le due chiavi, pubblica e privata. Attraverso la powershell digitiamo

1
ssh-keygen -b 4096

Consiglio di generarla con la crittografia ed25519 questo perchè: più veloce da generare e verificare, più sicura e più resistente da possibili attacchi hash-function collision attacks (tipo di attacco dove con dei tentativi si cerca di trovare due o più input diversi che producano lo stesso valore di hash quando vengono elaborati dalla stessa funzione di hash.) le chiavi sono più piccole di grandezza (quindi più facili da trasferire copiare/incollare)

1
ssh-keygen -t ed25519

verrà richiesto il path dove verranno create (es. C:\Users\utente.ssh\id_rsa (se in rsa o id_ed25519) e la definizione di una frase d’accesso (una password) per poter utilizzare la chiave e accederci

Desktop View

una volta che le nostre due chiavi sono state create, copiamo il nostro lucchetto nella directory precedentemente creata sulla macchina che vogliamo proteggere

1
scp $env:USERPROFILE/.ssh/id_rsa.pub <nomeutente>@<ipdellamacchina>:~/.ssh/authorized_keys

o

1
ssh-copy-id -i ~/.ssh/id_ed25519.pub [nomeutente]@[ipdellamacchina]

Step 4. Irrobustire la Login SSH

Per poter abilitare esclusivamente il login con queste chiavi (e non più autenticarsi attraverso la password) dobbiamo andare a modificare dei parametri presenti in questo file:

/etc/ssh/sshd_config

oltre ad abilitare l’autenticazione da chiave pubblica andremo a modificare dei parametri che è consigliato cambiare, in primis la porta che utilizziamo per l’accesso al server:

1
Port 22

dato che è un numero di porta standard e tutti la conoscono! cambiatelo con un numero più alto es. 700 cercando di non utlizzare una possibile porta in uso (è consigliato non scegliere una porta superiore a 1024, l’SSH su una porta non-privilegiata (quindi qualsiasi porta >= 1024) comporta un rischio di sicurezza. Questo perchè ogni utente non-root è capace di aprire porte dalla 1024 in su)

L’altro parametro da modificare è poco sotto:

1
AddressFamily inet

da cambiare da any a inet, questo farà sì che l’accesso sarà limitato soltanto al protocollo ip ipv4 (per adesso ancora non utilizzeremo il protocollo ipv6)

Altro parametro cruciale è levare il permesso di login con root

1
PermitRootLogin no

Ora è arrivato il turno di disabilitare l’accesso attraverso la password

1
PasswordAuthentication no

non rimane altro che salvare le modifiche appena approntate e riavviare il servizio sshd sulla macchina:

1
sudo systemctl restart sshd

in questo modo quando andremo ad autenticarci (ricordate che avete cambiato la porta ssh standard dobbiamo specificarlo aggiungendo un semplice parametro)

1
ssh [nome utente]@[ip del server] -p [porta ssh definita]

ci verrà chiesto per entrare di inserire la passphrase (se durante la creazione della chiave ne avete definita una).

Step 5. FIREWALL

Ci rimane solo di costruire una bella cinta muraria a protezione del nostro insediamento ehm.. al nostro server… prima controlliamo le porte che i nostri servizi esporranno

1
sudo ss -tupln

(è probabile che come output avrete una lista con diverse porte, controllate/cercate su internet per avere maggiori informazioni sulle porte che visualizzerete e a che servizio possano essere collegate)

andremo ad installare un firewall per gestire le iptables in maniera semplificata chiamato ufw: Uncomplicated Firewall

1
sudo apt install ufw

con il comando

1
sudo ufw status

verificheremo che i nostri cancelli siano aperti e prima di tirare su le difese definiamo correttamente almeno la regola per poter accedere alla macchina in modo di non rimanere bloccati fuori dall’ambiente:

di seguito inserirò dei comandi utili per definire diverse possibilità di definizione della regole su la nostra porta definita per l’accesso ssh o su un possibile servizio erogato dalle due porte http e https:

1
2
3
sudo ufw allow 700
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

o

1
sudo ufw allow from <ip/subnet mask> to <ip> port 700

con la regola del deny andremo a fare l’opposto della regola di allow , impediremo il traffico

più sarà definita con maggiore precisione e più sarà “controllato” e limitato l’accesso per la porta/ip specificato

vi ricordo di dichiarare le regole con delle priorità e con un ordine, se dovete bloccare con il deny indirizzi specifici è corretto metterlo in cima alle regole precedentemente dichiarate

1
sudo ufw insert 1 deny from 192.168.1.0

per vedere le regole a quali numeri fanno riferimento

1
sudo ufw status numbered

per poter limitare anche una determinata porta (es. la porta scelta per l’ssh in modo da proteggerci da possibili attacchi brute force) possiamo usare la seguente regola:

1
sudo ufw limit 700

cosi facendo avremo la possibilità di autenticarci 6 volte nei 30 secondi a disposizione, la settima volta verremo bloccati.

una volta definite correttamente tutte le regole non rimane che tirare su le nostre difese:

1
sudo ufw enable

sicuramente c’è tanto da dire sulla definizione delle regole firewall cercherò di ampliare l’argomento prossimamente.

Questo post è sotto licenza CC BY 4.0 a nome dell'autore.

DISCLAIMER: Questo blog non rappresenta una testata giornalistica in quanto viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge N°62 del 07/03/2001. Leggi di più

© Cybertome. Alcuni diritti riservati.

Servizio offerto da Jekyll con tema Chirpy