Come proteggere un server Linux
Il server più sicuro al mondo è quello spento e disconnesso da Internet. Ma se vogliamo utilizzare il server per le operazioni IT, dobbiamo assicurarci che il server sia protetto correttamente prima di metterlo online.
Server Hardening è il processo per rendere sicuro il sistema. Il rafforzamento del server aiuta ad affrontare i modi migliori per ridurre al minimo i punti di vulnerabilità.
In questo articolo, spiegherò alcune delle migliori pratiche per proteggere i server Linux.
Il rafforzamento del server può essere eseguito in vari livelli del sistema:
- Livello macchina: protezione del BIOS/crittografia dell’unità
- Livello di sistema: criteri password
- Livello di rete: configurazione firewall/porta
- Livello di registrazione e controllo: avvisi/registri/audit
Elenco dei controlli per la protezione avanzata del server
Ora, diamo un’occhiata ad alcune delle pratiche comuni e migliori che possiamo adottare per proteggere il sistema:
Aggiornamento regolare del sistema
Questo è uno dei passaggi cruciali nel rafforzamento del sistema perché la maggior parte dei difetti nei sistemi sono dovuti ad alcuni difetti nella definizione del software stesso. Un corretto aggiornamento del sistema aiuta a ridurre i rischi ad esso correlati.
A seconda della distribuzione GNU/Linux che utilizziamo, possiamo aggiornare il sistema con l’aiuto dei seguenti comandi:
sudo apt update -y && sudo apt upgrade -y // For Ubuntu
sudo yum update -y && sudo yum upgrade -y // For RHEL/CentOS
Bloccare l’accesso di root da SSH
Poiché l’utente root del sistema dispone dell’accesso amministrativo, non dovrebbe essere consentito l’accesso SSH da desktop remoti.
Per disabilitare l’accesso root, apportare le modifiche necessarie al file di configurazione SSH nella directory /etc/ssh.
cd /etc/ssh/
sudo vi sshd_config
Modifica il file e cerca la riga:
#PermitRootLogin yes
È necessario decommentare la riga e modificare il valore su no per bloccare l’accesso root SSH.
PermitRootLogin no
Ora riavvia il servizio SSH per riflettere le modifiche:
sudo systemctl restart sshd.service
Applica una password complessa per root
Assicurati di impostare una password complessa per l’utente root. È meglio generare un hash per una password di testo normale e utilizzare l’hash generato per la password.
Ciò garantisce maggiore sicurezza e affidabilità del sistema.
Smetti di usare le porte predefinite
Le porte predefinite sono porte standard per qualsiasi servizio o applicazione. Sono conosciuti in tutto il mondo e chiunque può entrare nel sistema attraverso la porta se è pubblicamente accessibile.
Pertanto, dobbiamo impostare la porta casuale per ogni servizio che utilizziamo.
Per esempio:
Invece di usare la porta 22 per SSH, possiamo usare qualsiasi porta casuale che desideriamo.
Ecco come possiamo cambiare la porta SSH predefinita “22” in qualsiasi altra porta casuale. Le porte SSH sono ben note al mondo e quindi è molto importante impostarlo su un numero casuale.
Accedi come utente root e modifica il file di configurazione ssh come:
sudo -i
cd /etc/ssh/
vi sshd_config
Trova il parametro ‘PORT 22’ sulla riga 17 del file (solitamente 17).
PORT 22
Modificare il valore nel numero di porta che si desidera impostare per SSH e salvare il file.
Riavvia il servizio SSH con l’aiuto del seguente comando e sei a posto.
systemctl restart sshd.service
La porta per SSH è stata modificata correttamente.
Tuttavia, se il server Linux è in esecuzione su cloud, è necessario aggiungere la nuova porta nelle Regole in entrata per l’istanza anche nel suo gruppo di sicurezza.
Porte aperte inutilizzate chiuse
Le porte aperte aprono la superficie di attacco per gli hacker. Pertanto, non dobbiamo mantenere alcun servizio o applicazione non necessaria. E se ne troviamo uno, dobbiamo disabilitare la porta o rimuovere completamente l’applicazione.
Per verificare quali porte sono aperte nel server, possiamo usare il comando:
netstat -tulpn
Mantieni le cose pulite e ordinate
Non dovremmo mai dimenticare che Meno pacchetti = Meno vulnerabilità
Rimuovere qualsiasi pacchetto non necessario installato e non installare mai alcun pacchetto non necessario. I pacchetti dell’applicazione possono contenere vulnerabilità che possono causare seri danni al sistema.
Per rimuovere qualsiasi pacchetto installato, possiamo usare il comando:
sudo apt-get remove <nome-pacchetto> --purge // Ubuntu
yum -y remove <nome-pacchetto> // RHEL/CentOS
Assicurati anche di ripulire tutte le vecchie directory e file che non sono più in uso.
Rafforzamento del kernel Linux – /etc/sysctl.conf
Per apportare una modifica permanente, è necessario configurare il file sysctl.conf che si trova all’interno della directory /etc/
Accedi come utente root e modifica il file:
sudo -i
vi /etc/sysctl.conf
Può essere utilizzato per configurare vari parametri di sicurezza e ottimizzazione delle prestazioni come:
Controllo dell’inoltro dei pacchetti IP:
I server che fungono da router o gateway devono inoltrare i pacchetti e quindi questa funzione deve essere abilitata in questi casi. Tuttavia, in tutti gli altri server non è necessario e può essere disabilitato aggiungendo le seguenti righe in sysctl.conf.
net.ipv4.ip_forward = 0
Verifica dell’indirizzo IP di origine
Aiuta a controllare gli attacchi di spoofing. Aggiungi le seguenti righe a sysctl.conf per abilitare la verifica dell’indirizzo IP di origine.
net.ipv4.conf.all.rp_filter = 1
Protezione Exec Shield
Exec Shield è una patch di sicurezza del kernel Linux per evitare worm e altri problemi. Aggiungi le seguenti righe a sysctl.conf per abilitare la protezione Exec Shield.
kernel.exec-shield = 1
kernel.randomize_va_space = 1
Prevenzione dagli Smurf attack
L’attacco Smurf si riferisce allo sfruttamento dell’indirizzo IP broadcast per creare un attacco DoS/DDoS tramite pacchetti di messaggi ICMP.
Possiamo fermare l’attacco Smurf disabilitando l’indirizzo di trasmissione come:
net.ipv4.icmp_echo_ignore_broadcasts = 1
Protezione contro SYN flood
Nell’attacco SYN Flood, il sistema viene inondato da una serie di pacchetti SYN.
Quindi, il sistema emette una risposta SYN+ACK e attende l’ACK (handshake a 3 vie).
Poiché l’attaccante non restituisce mai l’ACK, l’intera risorsa del sistema viene riempita, nota come coda di backlog. E una volta che la coda è piena, ignora le ulteriori richieste da parte di utenti legittimi per vari servizi come http/mail ecc.
Per impedire al sistema di essere attaccato con un SYN Flood, è necessario abilitare i cookie SYN nel file sysctl.conf aggiungendo quanto segue:
net.ipv4.tcp_syncookies = 1
Imposta banner di accesso
L’impostazione di un banner non contribuisce a proteggere il sistema.
Tuttavia, i banner possono essere utilizzati per mostrare alcuni messaggi o avvisi quando qualcuno sta stabilendo una connessione SSH al server.
Per abilitare il banner in SSH, prima di tutto dobbiamo creare un file banner in /etc/mybanner.
Questo sarà un nuovo file e riempilo con il messaggio desiderato e salva ed esci dal file.
sudo vi /etc/mybanner
Ora, dobbiamo puntare questo file banner impostando il percorso del file sul file di configurazione SSH. Cerca il pattern ‘Banner‘ e decommentalo e imposta il valore sul percorso del file del tuo banner come:
Banner /etc/mybanner
Riavvia il servizio SSH:
sudo service sshd restart
Riavviando il servizio, se ha funzionato, il banner viene visualizzato sopra il messaggio di benvenuto.
Fonte: https://divband.com/2022/11/04/linux-server-hardening/
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.