Oggi più che mai, viviamo in un mondo in cui le organizzazioni sono costantemente bombardate da violazioni della sicurezza motivate dall’acquisizione di dati altamente sensibili e confidenziali, che sono molto preziosi e promettono un enorme ricompensa finanziaria.
È piuttosto sorprendente che nonostante il rischio elevato di subire un potenziale devastante attacco informatico, la maggior parte delle aziende non è ben preparata o semplicemente trascura i segnali d’allarme, spesso con conseguenze devastanti.
Nel 2016, Equifax ha subito una catastrofica violazione dei dati in cui milioni di record altamente confidenziali dei clienti sono stati rubati a seguito di una serie di negligenze nella sicurezza. Un dettagliato rapporto ha indicato che la violazione poteva essere evitata se le giuste misure di sicurezza fossero state implementate dal team di sicurezza di Equifax.
In realtà, mesi prima della violazione, Equifax era stata avvertita di una potenziale vulnerabilità nel loro portale web che avrebbe compromesso la loro sicurezza, ma purtroppo l’avvertimento è stato ignorato con gravi conseguenze. Molte altre grandi aziende sono cadute vittime di attacchi, che continuano a crescere in complessità ad ogni istante che passa.
Non possiamo sottolineare abbastanza quanto sia cruciale la sicurezza del tuo sistema Linux. Potresti non essere un’istituzione finanziaria di alto profilo che è un potenziale bersaglio per le violazioni, ma ciò non significa che tu debba abbassare la guardia.
La sicurezza dovrebbe essere la tua massima priorità quando configuri il tuo server Linux, specialmente se sarà connesso a Internet e accessibile in remoto. Avere competenze di sicurezza di base è essenziale per proteggere il tuo server Linux.
In questa guida, ci concentriamo su alcune misure di sicurezza di base che puoi adottare per proteggere il tuo sistema dagli intrusi.
Vettori di Attacco Informatico
Gli intrusi sfrutteranno una varietà di tecniche di attacco per accedere al tuo server Linux. Prima di esaminare alcune delle misure che puoi adottare per proteggere il tuo sistema, esploriamo alcuni dei comuni vettori di attacco che un hacker può utilizzare per infiltrare i sistemi.
1. Attacchi a Forza Bruta
A brute-force attack is an attack where the hacker uses trial and error to guess the login credentials of the user. Usually, the intruder will use automated scripts to continuously gain entry until the right combination of the username and password is obtained. This kind of attack is most effective where weak & easily guessable passwords are used.
2. Credenziali Deboli
Come accennato in precedenza, le credenziali deboli come le password corte e facilmente individuabili come password1234 rappresentano un potenziale rischio per il tuo sistema. Più corta e meno complessa è una password, maggiori sono le probabilità che il tuo sistema venga compromesso.
3. Phishing
Phishing è una tecnica di ingegneria sociale in cui l’attaccante invia alla vittima un’email che sembra provenire da una istituzione legittima o da qualcuno che conosci o con cui fai affari.
Di solito, l’email contiene istruzioni che inducono la vittima a divulgare informazioni sensibili o può contenere un collegamento che la indirizza a un sito falso che si spaccia per il sito della società. Una volta che la vittima tenta di accedere, le sue credenziali vengono catturate dall’attaccante.
4. Malware
Malware è l’abbreviazione di software dannoso. Si tratta di una vasta gamma di applicazioni malevole come virus, trojan, worm e ransomware che sono progettati per diffondersi rapidamente e tenere in ostaggio il sistema della vittima in cambio di un riscatto.
Attacchi di questo tipo possono essere paralizzanti e possono paralizzare l’attività di un’organizzazione. Alcuni malware possono essere inseriti in documenti come immagini, video, word o documenti PowerPoint e inseriti in un’email di phishing.
5. Attacchi di Negazione del Servizio (DoS)
A DoS attack is an attack that limits or impacts the availability of a server or computer system. The hacker floods the server with traffic or ping packets that render the server inaccessible to users for prolonged durations.
A DDoS (Distributed Denial of Service) attack is a kind of DoS that employs multiple systems that flood a target with traffic rendered it unavailable.
6. Attacco di Iniezione SQL
Un acronimo per Structured Query Language, SQL è un linguaggio utilizzato per comunicare con i database. Consente agli utenti di creare, eliminare e aggiornare record nel database. Molti server memorizzano dati in database relazionali che utilizzano SQL per interagire con il database.
Un attacco di iniezione SQL sfrutta una vulnerabilità SQL nota che fa divulgare al server informazioni sensibili del database che altrimenti non lo farebbe inserendo codice SQL malevolo. Questo rappresenta un enorme rischio se il database memorizza informazioni personali identificabili come numeri di carta di credito, numeri di previdenza sociale e password.
7. Attacco Man-in-the-Middle
Comunemente abbreviato come MITM, l’attacco man-in-the-middle coinvolge un attaccante che intercetta informazioni tra due punti con l’obiettivo di intercettare o modificare il traffico tra le due parti. L’obiettivo è spiare la vittima, corrompere i dati o rubare informazioni sensibili.
Suggerimenti di base per proteggere il tuo server Linux
Dopo aver esaminato i possibili varchi che un attaccante può utilizzare per violare il tuo sistema, esaminiamo alcune delle misure fondamentali che puoi adottare per proteggere il tuo sistema.
1. Sicurezza fisica
Non viene dato molta importanza al luogo fisico e alla sicurezza del tuo server, tuttavia, se hai intenzione di avere il tuo server in un ambiente on-premise, questo è di solito dove inizi.
È importante garantire che il tuo server sia saldamente protetto in un data center con alimentazione di backup, connettività Internet ridondante e sufficiente raffreddamento. L’accesso al data center dovrebbe essere limitato solo al personale autorizzato.
2. Aggiorna i repository del sistema e i pacchetti
Una volta configurato il server, il primo passo da intraprendere è aggiornare i repository e i pacchetti software applicativi come segue. L’aggiornamento dei pacchetti risolve eventuali lacune che potrebbero essere presenti nelle versioni esistenti delle applicazioni.
Per le distribuzioni Ubuntu / Debian:
$ sudo apt update -y $ sudo apt upgrade -y
Per le distribuzioni RHEL / CentOS:
$ sudo yum upgrade -y
3. Abilita un firewall
A firewall is an application that filters incoming and outgoing traffic. You need to install a robust firewall such as the UFW firewall and enable it to only allow the required services and their corresponding ports.
Ad esempio, puoi installarlo su Ubuntu utilizzando il comando:
$ sudo apt install ufw
Una volta installato, attivalo come segue:
$ sudo ufw enable
Per consentire un servizio come HTTPS, esegui il comando;
$ sudo ufw allow https
In alternativa, puoi consentire la porta corrispondente che è 443.
$ sudo ufw allow 443/tcp
Quindi ricarica per rendere effettive le modifiche.
$ sudo ufw reload
Per verificare lo stato del tuo firewall, compresi i servizi consentiti e le porte aperte, esegui
$ sudo ufw status
4. Disattiva Servizi/Porte Inutili
Inoltre, considera di disattivare eventuali servizi e porte inutilizzati o non necessari sul firewall. Avere molteplici porte che non vengono utilizzate aumenta solo la superficie di attacco.
5. Proteggi il Protocollo SSH
Le impostazioni SSH predefinite non sono sicure e quindi sono necessarie alcune modifiche. Assicurati di applicare le seguenti impostazioni:
- Disabilita l’utente root dal login remoto.
- Abilita l’autenticazione SSH senza password utilizzando le chiavi pubbliche/private SSH.
Per il primo punto, modifica il file /etc/ssh/sshd_config e modifica i seguenti parametri in modo che appaiano come mostrato.
PermitRootLogin no
Una volta che disattivi l’utente root dal login remoto, crea un utente normale e assegna i privilegi di sudo. Ad esempio.
$ sudo adduser user $ sudo usermod -aG sudo user
Per abilitare l’autenticazione senza password, prima accedi a un’altra macchina Linux – preferibilmente il tuo PC e genera un paio di chiavi SSH.
$ ssh-keygen
Quindi copia la chiave pubblica sul tuo server
$ ssh-copy-id user@server-IP
Una volta effettuato l’accesso, assicurati di disabilitare l’autenticazione tramite password modificando il file /etc/ssh/sshd_config e modificando il parametro mostrato.
PasswordAuthentication no
Fai attenzione a non perdere la tua chiave privata SSH poiché è l’unica via che puoi utilizzare per accedere. Mantenila al sicuro e, preferibilmente, fa’ un backup su cloud.
Infine, riavvia SSH per applicare le modifiche
$ sudo systemctl restart sshd
Riassunto
In un mondo con minacce cibernetiche in evoluzione, la sicurezza dovrebbe essere una priorità elevata mentre inizi a configurare il tuo server Linux. In questa guida, abbiamo evidenziato alcune delle misure di sicurezza di base che puoi prendere per rinforzare il tuo server. Nel prossimo argomento, approfondiremo e vedremo ulteriori passaggi che puoi intraprendere per irrobustire il tuo server.