5 semplici consigli per proteggere il tuo server Linux

I server Linux sono la spina dorsale dell’Internet moderno. Oggi, quasi ogni sito web e servizio a cui puoi accedere tramite un browser web funziona su una distribuzione Linux. Qui ti mostriamo come puoi proteggere il tuo server Linux.
Indice
- Rimuovere l’accesso SSH per Root
- Utilizzare una coppia di chiavi pubbliche per l’accesso SSH
- Rafforzare il firewall del tuo server Linux
- Creare un nuovo utente per ogni servizio
- Rafforzare il kernel del tuo server
- Domande frequenti
Nota: questo tutorial è stato creato utilizzando un server Ubuntu, ma dovrebbe essere applicabile anche ad altre distribuzioni Linux, incluso il tuo server web locale.
1. Rimuovere l’accesso SSH per Root
Uno dei modi più rapidi per proteggere il tuo server Ubuntu è quello di rendere sicuro il tuo demone SSH disabilitando l’accesso SSH per Root. Per impostazione predefinita, il server OpenSSH consente a qualsiasi connessione in arrivo di accedere come utente root.
Ad esempio, eseguendo il seguente comando su un server non sicuro verrà fornito un prompt di accesso:

Questo può essere un problema, poiché lascia il tuo server aperto e vulnerabile a un attacco di forza bruta per la password. Per risolvere questo problema, accedi al tuo server Linux e aggiorna il file di configurazione del demone SSH.
Una volta all’interno del tuo server Linux, modifica il file di configurazione SSH:
sudonano/etc/ssh/sshd_config
Cerca la variabile PermitRootLogin in GNU Nano premendo Ctrl + W e digitando PermitRootLogin.

Cambia il valore di PermitRootLogin da “yes” a “no”, quindi salva il file premendo Ctrl + o, poi Ctrl + x.
Per applicare la nuova impostazione, ricarica il demone SSH del server tramite systemctl:
sudo systemctl restart ssh
2. Utilizzare una coppia di chiavi pubbliche per l’accesso SSH
Un altro modo rapido per proteggere il tuo server Linux è creare una coppia di chiavi pubbliche tra il tuo account locale e l’account utente SSH. Questo approccio salta il processo di accesso con password e ti autentica automaticamente con il tuo server remoto.
Per creare una coppia di chiavi pubbliche, devi prima eseguire il seguente comando sul tuo computer locale:
ssh-keygenIl programma keygen ti chiederà vari dettagli sulla chiave che desideri creare. Puoi lasciare queste opzioni sui valori predefiniti premendo Invio tre volte.

Esporta la tua nuova coppia di chiavi pubbliche al tuo server remoto utilizzando il programma ssh-copy-id. Questo è un’utilità semplice che prepara sia la macchina locale che quella remota per l’autenticazione con chiave pubblica tramite SSH.
ssh-copy-id [email protected]
Accedi alla tua macchina remota eseguendo il seguente comando:
È anche possibile ulteriormente proteggere il tuo server Linux rimuovendo il prompt di accesso in SSH. Apri il file di configurazione del demone con il seguente comando:
sudonano/etc/ssh/sshd_configTrova la variabile PasswordAuthentication e cambia il suo valore da “yes” a “no”.

Ricarica il tuo demone SSH eseguendo il seguente comando:
sudo systemctl restart sshd3. Rafforzare il firewall del tuo server Linux
Oltre a limitare l’accesso SSH, puoi anche migliorare la sicurezza del tuo server Linux configurando il firewall. Per impostazione predefinita, una nuova macchina Linux accetterà tutte le connessioni in arrivo da qualsiasi porta.
Questo può essere un problema, poiché lascia il tuo server vulnerabile a un attacco di scansione delle porte. Ad esempio, un malintenzionato può scansionare la tua macchina per eventuali porte non sicure e utilizzare questa informazione per trovare un exploit adatto.

Uno dei modi per risolvere questo problema è installare ufw, un semplice client firewall che può controllare le porte e gli indirizzi disponibili al mondo esterno.
Esegui il seguente comando per installare ufw in Ubuntu:
sudo apt install ufw
Imposta le regole predefinite per ufw. Queste sono le politiche che il tuo firewall seguirà per qualsiasi porta che non personalizzi. È buona prassi assicurarsi di bloccare tutte le connessioni in arrivo:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Configura il tuo firewall per i servizi che desideri eseguire nella tua macchina. Ad esempio, eseguendo i seguenti comandi potrai accedere tramite SSH e ospitare un server web:
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443Infine, devi abilitare la tua nuova configurazione del firewall eseguendo sudo ufw enable. Puoi anche controllare se il tuo firewall è attivo eseguendo questo comando:
sudo ufw status
4. Creare un nuovo utente per ogni servizio
Per impostazione predefinita, ogni file e programma in un sistema Linux appartiene a un particolare utente e gruppo. Per modificare il sistema, è necessario avere i permessi giusti per le giuste cartelle.
Un modo per aumentare la sicurezza del tuo server Linux è creare un nuovo account utente per ogni nuovo servizio. Questo approccio ti consente di contenere i privilegi di ogni servizio nel proprio account utente.

Per fare ciò, esegui i seguenti comandi:
sudo useradd -s/bin/bash-d/home/new-service -m-Gsudo new-service
sudopasswd new-service- Il flag
-simposta la shell di sistema per il nuovo account utente. Nel mio caso, il mio nuovo account utilizza Bash come shell. - Entrambi i flag
-de-mimpostano la directory utente predefinita per il nuovo account. - Il flag
-G, d’altra parte, aggiunge il nuovo account a qualsiasi gruppo secondario che specifichi. Ad esempio, aggiungere il nuovo account al gruppo sudo gli permetterà di eseguire comandi superuser. - Il comando
passwdti consente di impostare una nuova password per il nuovo account utente.
Una volta fatto, puoi utilizzare il tuo nuovo account utente disconnettendoti dal tuo account attuale o eseguendo su new-service.

5. Rafforzare il kernel del tuo server
Il kernel è una delle parti più importanti di un sistema Linux e rappresenta la connessione tra l’hardware della tua macchina e il tuo software. Ad esempio, compilare il proprio kernel Linux ti consente di attivare il supporto per hardware e funzionalità esotiche.

Oltre a ciò, il kernel funge anche da processo radice del sistema operativo. Proteggere il kernel è uno dei passaggi più vitali per proteggere il tuo server Linux.
Uno dei modi più rapidi per proteggere il tuo kernel è tramite sysctl. Questa è un’utilità integrata che ti consente di modificare le opzioni di runtime del kernel Linux.

Tuttavia, è importante notare che sysctl non coprirà l’intero processo di indurimento del kernel, poiché la protezione del kernel dipenderà in larga misura da ciò di cui hai bisogno.
Sapendo ciò, puoi eseguire i seguenti comandi per impedire al tuo kernel di segnalare qualsiasi informazione diagnostica:
sudo sysctl kernel.kptr_restrict=2
sudo sysctl kernel.dmesg_restrict=1
sudo sysctl kernel.kexec_load_disabled=1
Puoi anche eseguire i seguenti comandi per dire al tuo kernel di ignorare eventuali richieste di connessione false fatte al tuo server:
sudo sysctl net.ipv4.tcp_syncookies=1
sudo sysctl net.ipv4.tcp_rfc1337=1
Questi comandi, d’altra parte, costringeranno il kernel a convalidare ciascuna connessione in arrivo alla macchina:
sudo sysctl net.ipv4.conf.all.rp_filter=1
sudo sysctl net.ipv4.conf.default.rp_filter=1
Infine, il seguente insieme di comandi previene qualsiasi connessione in arrivo dal reindirizzare il traffico di rete a un gateway diverso. Questo impedirà al tuo sistema di cadere vittima di un attacco man-in-the-middle.
sudo sysctl net.ipv4.conf.all.accept_redirects=0
sudo sysctl net.ipv4.conf.default.accept_redirects=0
sudo sysctl net.ipv4.conf.all.secure_redirects=0
sudo sysctl net.ipv4.conf.default.secure_redirects=0
sudo sysctl net.ipv6.conf.all.accept_redirects=0
sudo sysctl net.ipv6.conf.default.accept_redirects=0
sudo sysctl net.ipv4.conf.all.send_redirects=0
sudo sysctl net.ipv4.conf.default.send_redirects=0
Suggerimenti: oltre ai suggerimenti di cui sopra, puoi anche utilizzare questi strumenti open-source per proteggere il tuo server Linux.
Domande frequenti
Ho perso la mia macchina locale. È ancora possibile accedere al mio server Ubuntu tramite SSH?
Per la maggior parte, non dovrebbe essere possibile accedere tramite SSH se stai utilizzando solo l’autenticazione con chiave pubblica. Tuttavia, potrebbe essere comunque possibile accedere al prompt SSH se non hai disabilitato la variabile PasswordAuthentication.
Oltre a questo, potresti accedere fisicamente alla macchina e aggiornare “/etc/ssh/sshd_config” oppure accedere alla console root dal tuo fornitore VPS.
Il mio server ha sia iptables che ufw. Devo configurare entrambi per il mio firewall?
No! Sia iptables che ufw sono software firewall che controllano gli stessi intervalli di indirizzi e porte. Devi solo configurare uno di essi per avere un firewall funzionante nel tuo server Linux.
È possibile rimuovere i privilegi di superuser di un utente che ho creato?
Sì! È possibile rimuovere un utente esistente da un gruppo. Usa l’utilità usermod. Ad esempio, eseguendo usermod -G video new-service rimuoverai l’utente “new-service” dal gruppo “sudo” e lo aggiungerai al gruppo “video”.
Crediti immagine: Unsplash. Tutte le modifiche e le schermate di Ramces Red.