Questo manuale ti introdurrà alla sicurezza di base del server Linux. Sebbene si concentri su Debian/Ubuntu, puoi applicare tutto ciò che viene presentato qui ad altre distribuzioni Linux. Ti incoraggio anche a ricercare questo materiale e ad estenderlo ove applicabile.
1. Aggiorna il tuo server
La prima cosa da fare per proteggere il server è aggiornare i repository locali e aggiornare il sistema operativo e le applicazioni installate applicando le patch più recenti.
Su Ubuntu e Debian:
$ sudo apt update && sudo apt upgrade -y
Su Fedora, CentOS o RHEL:
$ sudo dnf upgrade
2. Crea un nuovo account utente privilegiato
Quindi, crea un nuovo account utente. Non dovresti mai accedere al tuo server come root . Crea invece il tuo account ("
Inizia creando un nuovo utente:
$ adduser <username>
Assegna al tuo nuovo account utente sudo diritti aggiungendo (-a ) il sudo gruppo (-G ) all'appartenenza al gruppo dell'utente:
$ usermod -a -G sudo <username>
3. Carica la tua chiave SSH
Ti consigliamo di utilizzare una chiave SSH per accedere al tuo nuovo server. Puoi caricare la tua chiave SSH pregenerata sul tuo nuovo server utilizzando ssh-copy-id comando:
$ ssh-copy-id <username>@ip_address
Ora puoi accedere al tuo nuovo server senza dover digitare una password.
4. SSH sicuro
Quindi, apporta queste tre modifiche:
- Disabilita l'autenticazione della password SSH
- Limita root dall'accesso remoto
- Limita l'accesso a IPv4 o IPv6
Apri /etc/ssh/sshd_config utilizzando il tuo editor di testo preferito e assicurati queste righe:
PasswordAuthentication yes
PermitRootLogin yes
assomiglia a questo:
PasswordAuthentication no
PermitRootLogin no
Successivamente, limita il servizio SSH a IPv4 o IPv6 modificando AddressFamily opzione. Per cambiarlo per utilizzare solo IPv4 (che dovrebbe andare bene per la maggior parte delle persone) apporta questa modifica:
AddressFamily inet
Riavvia il servizio SSH per abilitare le modifiche. Nota che è una buona idea avere due connessioni attive al tuo server prima di riavviare il server SSH. Avere quella connessione extra ti consente di riparare qualsiasi cosa se il riavvio dovesse andare storto.
Su Ubuntu:
$ sudo service sshd restart
Su Fedora o CentOS o qualsiasi altra cosa che usi Systemd:
$ sudo systemctl restart sshd
5. Abilita un firewall
Ora devi installare un firewall, abilitarlo e configurarlo solo per consentire il traffico di rete che hai designato. Uncomplicated Firewall (UFW) è un'interfaccia facile da usare per iptables che semplifica notevolmente il processo di configurazione di un firewall.
Puoi installare UFW con:
$ sudo apt install ufw
Per impostazione predefinita, UFW nega tutte le connessioni in entrata e consente tutte le connessioni in uscita. Ciò significa che qualsiasi applicazione sul tuo server può raggiungere Internet, ma qualsiasi cosa che tenti di raggiungere il tuo server non può connettersi.
Innanzitutto, assicurati di poter accedere abilitando l'accesso a SSH, HTTP e HTTPS:
$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow https
Quindi abilita UFW:
$ sudo ufw enable
Puoi vedere quali servizi sono consentiti e negati con:
$ sudo ufw status
Se vuoi disabilitare UFW, puoi farlo digitando:
$ sudo ufw disable
Puoi anche usare firewall-cmd, che è già installato e integrato in alcune distribuzioni.
6. Installa Fail2ban
Fail2ban è un'applicazione che esamina i log del server alla ricerca di attacchi ripetuti o automatizzati. Se ne vengono trovati, modificherà il firewall per bloccare l'indirizzo IP dell'attaccante in modo permanente o per un determinato periodo di tempo.
Puoi installare Fail2ban digitando:
$ sudo apt install fail2ban -y
Quindi copia il file di configurazione incluso:
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
E riavvia Fail2ban:
$ sudo service fail2ban restart
Questo è tutto ciò che c'è da fare. Il software esaminerà continuamente i file di registro alla ricerca di attacchi. Dopo un po', l'app creerà un bel elenco di indirizzi IP vietati. Puoi visualizzare questo elenco richiedendo lo stato corrente del servizio SSH con:
$ sudo fail2ban-client status ssh
7. Rimuovi i servizi di connessione alla rete inutilizzati
Quasi tutti i sistemi operativi per server Linux sono dotati di alcuni servizi di rete abilitati. Ti consigliamo di tenerne la maggior parte. Tuttavia, ce ne sono alcuni che potresti voler rimuovere. Puoi vedere tutti i servizi di rete in esecuzione utilizzando il ss comando:
$ sudo ss -atpu
L'output di ss differirà a seconda del tuo sistema operativo. Questo è un esempio di ciò che potresti vedere. Mostra che i servizi SSH (sshd) e Ngnix (nginx) sono in ascolto e pronti per la connessione:
tcp LISTEN 0 128 *:http *:* users:(("nginx",pid=22563,fd=7))
tcp LISTEN 0 128 *:ssh *:* users:(("sshd",pid=685,fd=3))
Come rimuovere un servizio inutilizzato ("
Per rimuovere un servizio inutilizzato su Debian/Ubuntu:
$ sudo apt purge <service_name>
Per rimuovere un servizio inutilizzato su Red Hat/CentOS:
$ sudo yum remove <service_name>
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Esegui ss -atup di nuovo per verificare che i servizi inutilizzati non siano più installati e funzionanti.
Pensieri finali
Questo tutorial presenta il minimo indispensabile per rafforzare un server Linux. Ulteriori livelli di sicurezza possono e devono essere abilitati a seconda di come viene utilizzato un server. Questi livelli possono includere elementi come le configurazioni delle singole applicazioni, il software di rilevamento delle intrusioni e l'abilitazione dei controlli di accesso, ad esempio l'autenticazione a due fattori.