GNU/Linux >> Linux Esercitazione >  >> Linux

I 50 migliori consigli per la sicurezza dell'indurimento di Linux:una lista di controllo completa

Linux alimenta la maggior parte del Web e una notevole quantità di workstation in tutto il mondo. Uno dei motivi principali alla base della popolarità sempre crescente dei sistemi Linux e BSD è la loro solida politica in materia di sicurezza. I sistemi Linux sono intrinsecamente difficili da decifrare a causa dei loro principi di progettazione sottostanti. Tuttavia, nessun sistema è indistruttibile e se non rafforzi la tua workstation o il tuo server Linux alla pari con gli standard più recenti, è probabile che tu cada vittima di vari tipi di attacchi e/o violazione dei dati. Ecco perché abbiamo delineato 50 suggerimenti per rafforzare Linux che ti aiuteranno ad aumentare la sicurezza del tuo server al livello successivo.

Suggerimenti per la protezione avanzata di Linux per i professionisti

La sicurezza è diventata parte integrante del mondo informatico. Di conseguenza, è necessario rafforzare la tua workstation personale, oltre alla sicurezza del server. Quindi continua a leggere e incorpora il più possibile i suggerimenti seguenti per aumentare la sicurezza della tua macchina Linux.

1. Informazioni sull'host del documento

La documentazione delle informazioni sull'host può diventare estremamente vantaggiosa a lungo termine. Se intendi mantenere lo stesso sistema nel corso del tempo, è probabile che le cose diventino disordinate a un certo punto. Tuttavia, se documenti la tua workstation o server fin dal giorno della sua installazione, avrai una solida idea dell'infrastruttura generale del sistema e delle politiche utilizzate.

Includere le seguenti informazioni sul sistema nella documentazione. Sentiti libero di aggiungere alcuni extra in base ai requisiti del tuo server.

  • Nome del sistema
  • Data di installazione
  • Numero asset (valori che codificano gli host negli ambienti aziendali)
  • Indirizzo IP
  • Indirizzo MAC
  • Versione kernel
  • Nome dell'amministratore

2. Proteggi il BIOS e disabilita l'avvio USB

È necessario proteggere il BIOS utilizzando una password appropriata in modo che altri utenti non possano accedere o modificare le impostazioni. Poiché è piuttosto semplice accedere al menu del BIOS nelle moderne schede madri, gli utenti finali possono ignorare le impostazioni esistenti e manipolare configurazioni sensibili.

Inoltre, gli utenti possono anche utilizzare sistemi di avvio per accedere ai dati dell'host. Ciò potrebbe anche rappresentare una minaccia per l'integrità del tuo server. Puoi disabilitare del tutto i dispositivi USB usando il comando seguente.

# echo 'install usb-storage /bin/true' >> /etc/modprobe.d/disable-usb-storage.conf

L'avvio USB può essere disattivato anche dal menu del BIOS. Tuttavia, questo non è obbligatorio se stai utilizzando una workstation personale a cui non possono accedere altri utenti.

- -

3. Crittografa l'archiviazione su disco

La crittografia dell'archiviazione su disco può rivelarsi estremamente vantaggiosa a lungo termine. Preverrà la fuga di dati in caso di furto o intrusione di terzi. Fortunatamente, esiste un'ampia varietà di strumenti di crittografia Linux che rendono questo compito semplice per gli amministratori.

Inoltre, le moderne distribuzioni Linux offrono agli amministratori di crittografare il loro filesystem Linux durante il processo di installazione. Tuttavia, dovresti sapere che la crittografia può influire sul throughput delle prestazioni e probabilmente renderà difficile il ripristino dei dati.

4. Crittografa la comunicazione dei dati

Poiché i dati trasmessi sulla rete possono essere facilmente acquisiti e analizzati utilizzando strumenti di sicurezza open source, la crittografia dei dati dovrebbe essere la tua priorità principale durante il processo di hardening di Linux. Molti strumenti di comunicazione dei dati legacy non utilizzano una crittografia adeguata e quindi potrebbero lasciare i tuoi dati vulnerabili.

Dovresti sempre usare servizi di comunicazione sicuri come ssh, scp, rsync o sftp per il trasferimento dati remoto. Linux consente inoltre agli utenti di montare filesystem remoti utilizzando strumenti speciali come fuse o sshfs. Prova a utilizzare la crittografia GPG per crittografare e firmare i tuoi dati. Altri strumenti Linux che offrono servizi di crittografia dei dati includono OpenVPN, Lighthttpd SSL, Apache SSL e Let's Encrypt.

5. Evita i servizi di comunicazione legacy

Un gran numero di programmi Unix legacy non fornisce la sicurezza essenziale durante la trasmissione dei dati. Questi includono FTP, Telnet, rlogin e rsh. Non importa se stai proteggendo il tuo server Linux o il tuo sistema personale, smetti di usare questi servizi per sempre.

È possibile utilizzare altre alternative per questo tipo di attività di trasferimento dati. Ad esempio, servizi come OpenSSH, SFTP o FTPS assicurano che la trasmissione dei dati avvenga su un canale sicuro. Alcuni di essi utilizzano crittografie SSL o TLS per rafforzare la comunicazione dei dati. Puoi utilizzare i comandi seguenti per rimuovere i servizi legacy come NIS, telnet e rsh dal tuo sistema.

# yum erase xinetd ypserv tftp-server telnet-server rsh-server
# apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server

Usa il primo comando per le distribuzioni basate su RPM come RHEL e Centos o qualsiasi sistema che utilizzi il gestore di pacchetti yum. Il secondo comando funziona su sistemi basati su Debian/Ubuntu.

6. Mantieni aggiornati kernel e pacchetti

Per mantenere la sicurezza del tuo server, dovresti sempre applicare gli ultimi aggiornamenti di sicurezza il prima possibile. Ciò può ridurre la superficie di attacco nel caso in cui vengano rilevate vulnerabilità nei pacchetti o nei moduli del kernel precedenti. Per fortuna, l'aggiornamento del sistema è molto semplice e può essere fatto abbastanza velocemente.

# yum update
# apt-get update && apt-get upgrade

Usa il comando yum per aggiornare i tuoi sistemi RHEL/Centos e il comando apt per le distribuzioni basate su Ubuntu/Debian. Inoltre], puoi automatizzare questo processo utilizzando il cron job di Linux. Visita la nostra guida su Linux crontab per saperne di più sui lavori cron.

7. Abilita SELinux

SELinux o Security Enhanced Linux è un meccanismo di sicurezza che implementa vari metodi per il controllo dell'accesso a livello di kernel. SELinux è sviluppato da Red Hat ed è stato aggiunto a molte moderne distribuzioni Linux. Puoi pensarlo come un insieme di modifiche al kernel e strumenti per lo spazio utente. Puoi verificare se SELinux è abilitato nel tuo sistema o meno usando il comando seguente.

# getenforce

Se restituisce enforcing significa che il tuo sistema è protetto da SELinux. Se il risultato dice permissivo significa che il tuo sistema ha SELinux ma non è applicato. Tornerà disabilitato per i sistemi in cui SELinux è completamente disabilitato. Puoi applicare SELinux usando il comando seguente.

# setenforce 1

8. Riduci al minimo i pacchetti di sistema

La riduzione al minimo dei pacchetti di sistema può aumentare notevolmente la sicurezza generale del sistema. Poiché i bug del software sono uno dei principali ostacoli alla sicurezza, avere un minor numero di pacchetti significa che la superficie di vulnerabilità si riduce. Inoltre, i server di solito ottengono un notevole aumento delle prestazioni quando sono privi di bloatware non necessari.

# yum list installed
# yum list <package>
# yum remove <package>

Puoi utilizzare i comandi yum sopra in Linux per elencare il software installato nel tuo sistema e sbarazzarti di quelli che non ti servono effettivamente. Usa i comandi seguenti se stai utilizzando un sistema basato su Debian/Ubuntu.

# dpkg --list
# dpkg --info <package>
# apt-get remove <package>

9. Servizi di rete suddivisi

Se stai utilizzando i tradizionali servizi di rete monolitici sul tuo server, un utente malintenzionato avrà accesso all'intera infrastruttura non appena sfrutterà un singolo servizio. Ad esempio, supponiamo che tu stia eseguendo uno stack LAMP, cosa succede quando un utente malintenzionato sfrutta un bug nel servizio Apache? Alla fine intensificherà altri servizi e probabilmente otterrà il pieno controllo del sistema.

Tuttavia, se dividi i tuoi servizi di rete e utilizzi una rete per servizio, l'attacco avrà meno successo. Questo perché l'intruso dovrà sfruttare ogni rete prima di poter ottenere l'accesso completo al sistema. Puoi seguire i passaggi seguenti per dividere una configurazione stack LAMP tradizionale.

  • Configura un file server NFS
  • Configura un server di database MySQL
  • Configura un server di cache Memcached
  • Configura un server web Apache+php5
  • Configura un server Lighttpd per i dati statici
  • Configura un server Nginx per il proxy inverso

10. Mantenere gli account utente e la politica sulle password

I sistemi Unix di solito hanno più di un account utente. Il tuo sistema è sicuro come gli utenti che lo eseguono. Quindi, assicurati che solo persone fidate possano eseguire un sistema specifico. Puoi utilizzare useradd /modutente comandi per aggiungere e mantenere nuovi account utente sulla tua macchina.

Applica sempre politiche di password complesse. Una password complessa deve essere lunga più di otto caratteri e deve contenere almeno una combinazione di lettere, numeri e caratteri speciali. Tuttavia, gli utenti dovrebbero essere in grado di memorizzare le proprie password. Inoltre, verifica che la tua password non sia suscettibile agli attacchi del dizionario. Puoi usare il modulo PAM Linux chiamato pam_cracklib.so per fare questo.

11. Imposta le date di scadenza della password

Un altro metodo comune di protezione avanzata di Linux consiste nell'abilitare la scadenza della password per tutti gli account utente. Puoi facilmente impostare le date di scadenza per le password degli utenti utilizzando la modifica comando in Linux. Il tuo sistema chiederà agli utenti di impostare una nuova password una volta che quella esistente una volta scaduta.

# chage -l mary
# chage -M 30 mary
# chage -E "2020-04-30"

Il primo comando elenca la data di scadenza della password corrente per l'utente mary. Il secondo comando imposta la data di scadenza dopo 30 giorni. Puoi anche impostare questa data utilizzando un formato AAAA-MM-GG utilizzando il terzo comando.

12. Applica il modulo PAM Linux

Puoi aumentare la sicurezza della password assicurandoti che gli utenti non possano impostare o utilizzare password deboli. I cracker di password possono facilmente forzarli e ottenere accessi non autorizzati. Inoltre, limita il riutilizzo delle password aggiungendo la seguente riga rispettivamente a Ubuntu/Debian e RHEL/Centos.

# echo 'password sufficient pam_unix.so use_authtok md5 shadow remember=12' >> /etc/pam.d/common-password
# echo 'password sufficient pam_unix.so use_authtok md5 shadow remember=12' >> /etc/pam.d/system-auth

Ora i tuoi utenti non potranno riutilizzare le password utilizzate nelle ultime 12 settimane. Inoltre, utilizza i suggerimenti di seguito per vietare del tutto le passphrase deboli.

# apt-get install libpam-cracklib       # install cracklib support on Ubuntu/Debian

Aggiungi la riga –

# echo 'password required pam_cracklib.so retry=2 minlen=10 difok=6' >> /etc/pam.d/system-auth

Non è necessario installare cracklib in RHEL/Centos. Basta aggiungere la seguente riga.

# echo 'password required /lib/security/pam_cracklib.so retry=2 minlen=10 difok=6' >> /etc/pam.d/system-auth

13. Blocca i tentativi di accesso dopo il fallimento

Gli amministratori dovrebbero assicurarsi che gli utenti non possano accedere al proprio server dopo un certo numero di tentativi falliti. Ciò aumenta la sicurezza generale del sistema mitigando gli attacchi alle password. Puoi usare il comando Linux faillog per vedere i tentativi di accesso non riusciti.

# faillog
# faillog -m 3
# faillog -l 1800

Il primo comando visualizzerà i tentativi di accesso non riusciti per gli utenti dal database /var/log/faillog. Il secondo comando imposta il numero massimo di tentativi di accesso non riusciti consentiti a 3. Il terzo imposta un blocco di 1800 secondi o 30 minuti dopo il numero consentito di tentativi di accesso non riusciti.

# faillog -r -u <username>

Usa questo comando per sbloccare un utente una volta che gli è stato proibito di accedere. Il numero massimo di tentativi di accesso non riusciti per l'utente root dovrebbe essere alto, altrimenti gli attacchi di forza bruta potrebbero lasciarti bloccato.

14. Verifica la presenza di password vuote

Gli utenti sono l'anello più debole nella sicurezza generale di un sistema. Gli amministratori devono assicurarsi che nessun utente sul sistema abbia passphrase vuote. Questo è un passaggio obbligatorio per un corretto rafforzamento di Linux. Usa il seguente comando awk in Linux per verificarlo.

# awk -F: '($2 == "") {print}' /etc/shadow

Verrà visualizzato se ci sono account utente che hanno una password vuota nel tuo server. Per aumentare la protezione avanzata del server Linux, blocca tutti gli utenti che utilizzano passphrase vuote. Puoi usare il comando seguente per farlo dal tuo terminale Linux.

# passwd -l <username>

15. Disabilita l'accesso come super utente

Gli amministratori non dovrebbero accedere frequentemente come root per mantenere la sicurezza del server. Invece, puoi usare sudo esegui comandi del terminale Linux che richiedono privilegi di basso livello. Il comando seguente mostra come creare un nuovo utente con privilegi sudo.

# adduser <username> sudo

Puoi anche concedere i privilegi sudo agli utenti esistenti utilizzando il comando seguente.

# usermod -a -G sudo <username>

16. Imposta le notifiche e-mail per gli utenti sudo

Puoi impostare le notifiche e-mail in modo che ogni volta che un utente utilizza sudo, l'amministratore del server riceve una notifica tramite un'e-mail. Modifica il file /etc/sudoers e aggiungi le seguenti righe usando il tuo editor di testo Linux preferito.

# nano /etc/sudoers
mailto "[email protected]"
mail_always on

Sostituisci l'e-mail con la tua o quella del personale di controllo. Ora, ogni volta che qualcuno esegue un'attività a livello di sistema, vieni informato.

17. Bootloader GRUB sicuro

Ci sono diversi bootloader Linux disponibili oggi. Tuttavia, GRUB rimane la scelta migliore per la maggior parte degli amministratori grazie al suo set di funzionalità diversificato. Inoltre, è il bootloader predefinito in molte moderne distribuzioni Linux. Gli amministratori che prendono sul serio i loro passaggi di protezione avanzata di Linux dovrebbero impostare una password complessa per il loro menu di GRUB.

# grub-md5-crypt

Inseriscilo nel tuo terminale e grub ti chiederà la password. Inserisci la password che desideri impostare e verrà generato un hash crittografato utilizzando la tua password. Ora dovrai inserire questo hash nel menu di configurazione di grub.

# nano /boot/grub/menu.lst
or
# nano /boot/grub/grub.conf

Aggiungi l'hash calcolato aggiungendo la riga sottostante tra le righe che impostano il timeout e l'immagine splash.

password –md5 <calculated-hash>

18. Convalida l'UID degli utenti non root

Un UID o User-ID è un numero non negativo assegnato agli utenti di un sistema dal kernel. L'UID 0 è l'UID del superutente o root. È importante assicurarsi che nessun utente diverso da root abbia questo valore UID. Altrimenti, possono mascherare l'intero sistema da root.

# awk -F: '($3 == "0") {print}' /etc/passwd

Puoi scoprire quali utenti hanno questo valore UID eseguendo questo programma awk. L'output dovrebbe contenere solo una singola voce, che corrisponde a root.

19. Disattiva i servizi non necessari

Molti servizi e demoni vengono avviati durante l'avvio del sistema. Disabilitare quelli che non sono obbligatori può aiutare a rafforzare Linux e migliorare il tempo di avvio. Poiché la maggior parte delle moderne distribuzioni utilizza systemd invece di init script, puoi usare systemctl per trovare questi servizi.

# systemctl list-unit-files --type=service
# systemctl list-dependencies graphical.target

Questi comandi visualizzeranno tale servizio e demoni. Puoi disabilitare un servizio specifico utilizzando il comando seguente.

# systemctl disable service
# systemctl disable httpd.service

20. Rimuovi i sistemi X Window (x11)

X Window Systems o x11 è l'interfaccia grafica de facto per i sistemi Linux. Se stai usando Linux per alimentare il tuo server invece del tuo sistema personale, puoi eliminarlo completamente. Aiuterà ad aumentare la sicurezza del tuo server rimuovendo molti pacchetti non necessari.

# yum groupremove "X Window System"

Questo comando yum eliminerà x11 dai sistemi RHEL o Centos. Se invece stai usando Debian/Ubuntu, usa il seguente comando.

# apt-get remove xserver-xorg-core

21. Disabilita i sistemi X Window (x11)

Se non desideri eliminare x11 in modo permanente, puoi disabilitare questo servizio. In questo modo, il tuo sistema si avvierà in modalità testo anziché in GUI. Modifica il file /etc/default/grub usando il tuo editor di testo Linux preferito.

# nano /etc/default/grub

Trova la riga sottostante –

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Ora, cambialo in –

GRUB_CMDLINE_LINUX_DEFAULT="text"

Infine, aggiorna il file GRUB utilizzando –

# update-grub

L'ultimo passaggio è dire a systemd di non caricare il sistema GUI. Puoi farlo eseguendo i comandi seguenti.

# systemctl enable multi-user.target --force
# systemctl set-default multi-user.target

22. Verifica le porte di ascolto

Gli attacchi di rete sono estremamente comuni sui server. Se vuoi mantenere un server sicuro, dovresti convalidare le porte di rete in ascolto ogni tanto. Questo ti fornirà le informazioni essenziali sulla tua rete.

# netstat -tulpn
# ss -tulpn
# nmap -sT -O localhost
# nmap -sT -O server.example.com

È possibile utilizzare uno qualsiasi dei comandi precedenti per vedere quali porte sono in ascolto per le richieste in arrivo. Abbiamo una guida precedente che fornisce una discussione dettagliata dei comandi nmap essenziali in Linux.

23. Esamina gli indirizzi IP

Se trovi un IP sospetto nella tua rete, puoi esaminarlo utilizzando i comandi Linux standard. Il comando seguente usa netstat e awk per visualizzare un riepilogo dei protocolli in esecuzione.

# netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n

Utilizza il comando seguente per trovare ulteriori informazioni su un IP specifico.

# netstat -nat |grep <IP_ADDR> | awk '{print $6}' | sort | uniq -c | sort -n

Per vedere tutti gli indirizzi IP univoci, usa il comando seguente.

# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq

Invia il comando precedente a wc per ottenere il numero totale di indirizzi IP univoci.

# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq | wc -l

Visita la nostra guida sui vari comandi di rete Linux se vuoi approfondire la sicurezza della rete.

24. Configura IPtables e Firewall

Linux offre eccellenti protezioni integrate contro richieste di rete indesiderate sotto forma di iptables. È un'interfaccia al meccanismo Netfilter fornito dal kernel Linux. Puoi facilmente bloccare indirizzi IP specifici o un intervallo di essi utilizzando iptables.

# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

È possibile utilizzare il comando precedente per bloccare tutte le richieste di rete per un determinato indirizzo IP. Fare riferimento al nostro manuale su iptables Linux per saperne di più su questo strumento. Puoi anche installare e utilizzare altri potenti firewall.

25. Configura i parametri del kernel

Il kernel Linux ha molti parametri di runtime. Puoi facilmente modificarne alcuni per migliorare l'indurimento di Linux. Il comando sysctl consente agli amministratori di configurare questi parametri del kernel. Puoi anche modificare il file /etc/sysctl.conf per modificare il kernel e aumentare la sicurezza.

Ad esempio, aggiungi la riga seguente alla fine della configurazione di sysctl per consentire il riavvio del sistema dopo 10 secondi di panico del kernel.

# vim /etc/sysctl.conf
kernel.panic=10

Aggiungi la riga seguente per randomizzare gli indirizzi per le pagine mmap base, heap, stack e VDSO.

kernel.randomize_va_space=2

La riga successiva farà in modo che il kernel ignori gli errori ICMP.

net.ipv4.icmp_ignore_bogus_error_responses=1

Puoi aggiungere tonnellate di tali regole e personalizzarle per adattarle ai requisiti del tuo kernel.

26. Disattiva l'autorizzazione SUID e SGID

SUID e SGID sono tipi speciali di autorizzazione file nel file system Linux. Avere l'autorizzazione SUID consente agli altri utenti di eseguire file eseguibili come se fossero i proprietari di tali file. Allo stesso modo, l'autorizzazione SGID fornisce diritti di directory simili al proprietario, ma conferisce anche la proprietà di tutti i file secondari in una directory.

Questi sono negativi poiché non vuoi che nessun utente diverso da te abbia quei permessi su un server sicuro. Dovresti trovare qualsiasi file con SUID e SGID abilitati e disabilitarli. I seguenti comandi elencheranno rispettivamente tutti i file che hanno i permessi SUID e SGID abilitati.

# find / -perm /4000
# find / -perm /2000

Esamina correttamente questi file e verifica se queste autorizzazioni sono obbligatorie o meno. In caso contrario, rimuovere i privilegi SUID/SGID. I comandi seguenti rimuoveranno rispettivamente SUID/SGID.

# chmod 0755 /path/to/file
# chmod 0664 /path/to/dir

27. Dividi le partizioni del disco

Il filesystem Linux divide tutto in più parti in base al loro caso d'uso. È possibile separare le parti critiche del filesystem in diverse partizioni della memoria su disco. Ad esempio, i seguenti filesystem dovrebbero essere suddivisi in partizioni diverse.

  • /usr
  • /casa
  • /var &/var/tmp
  • /tmp

Dovresti anche creare partizioni separate per servizi diversi come per le radici dei server Apache e FTP. Questo aiuta a isolare le parti sensibili del tuo sistema. Pertanto, anche se un utente malintenzionato ottiene l'accesso a una parte del sistema, non può spostarsi liberamente nell'intero sistema.

28. Partizioni di sistema sicure

Quando si eseguono attività di rafforzamento del server Linux, gli amministratori dovrebbero prestare maggiore attenzione alle partizioni di sistema sottostanti. Gli utenti malintenzionati possono sfruttare partizioni come /tmp, /var/tmp e /dev/shm per archiviare ed eseguire programmi indesiderati. Fortunatamente, puoi implementare passaggi per proteggere le tue partizioni aggiungendo alcuni parametri al tuo file /etc/fstab. Apri questo file usando un editor di testo Linux.

# vim /etc/fstab

Trova la riga che contiene la posizione /tmp. Ora aggiungi i parametri nosuid, nodev, noexec e ro come un elenco separato da virgole dopo i valori predefiniti.

Offrono le seguenti funzionalità –

  • nosuid – vieta l'autorizzazione SUID su questa partizione
  • nodev -disable dispositivi speciali su questa partizione
  • noexec:disabilita il permesso di esecuzione per i binari su questa partizione
  • ro – di sola lettura

29. Abilita le quote disco

Le quote disco sono semplicemente limiti impostati dall'amministratore di sistema che limitano l'utilizzo del filesystem Linux per altri utenti. Se stai rafforzando la tua sicurezza Linux, l'implementazione delle quote disco è obbligatoria per il tuo server.

# vim /etc/fstab
LABEL=/home /home ext2 defaults,usrquota,grpquota 1 2

Aggiungi la riga precedente a /etc/fstab per abilitare la quota del disco per il filesystem /home. Se hai già una linea /home, modificala di conseguenza.

# quotacheck -avug

Questo comando visualizzerà tutte le informazioni sulle quote e creerà i file aquota.user e aquota.group in /home.

# edquota <user>

Questo comando aprirà le impostazioni della quota di in un editor in cui è possibile assegnare i limiti della quota. È possibile impostare limiti soft e hard per la dimensione della quota del disco e il numero di inode. Utilizza il comando seguente per visualizzare un rapporto sull'utilizzo della quota del disco.

# repquota /home

30. Disabilita la connettività IPv6

IPv6 o Internet Protocol versione 6 è l'ultima versione del protocollo TCP/IP. Viene fornito con un elenco di funzionalità esteso e molti vantaggi di usabilità. Tuttavia, IPv4 è ancora lo scambio preferito per la maggior parte dei server. Quindi, è probabile che tu non stia affatto utilizzando IPv6. In questi casi, dovresti disattivarlo del tutto.

Rimuovendo la connettività di rete non necessaria, la sicurezza del tuo server sarà più solida. Pertanto, la disattivazione di IPv6 offre ragionevoli effetti di protezione di Linux. Aggiungi le righe seguenti a /etc/sysctl.conf per disabilitare la connettività IPv6 dal livello del kernel.

# vim /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Infine, esegui il comando seguente per caricare le modifiche nel tuo server.

# sysctl -p

31. Mantieni file scrivibili in Word

I file scrivibili in Word sono file in cui chiunque può scrivere. Questo può essere molto pericoloso poiché consente in modo efficace agli utenti di eseguire eseguibili. Inoltre, il tuo rafforzamento di Linux non è infallibile a meno che tu non abbia impostato i bit appiccicosi appropriati. Un bit permanente è un singolo bit che, se impostato, impedisce agli utenti di eliminare le directory di qualcun altro.

Pertanto, se hai file scrivibili da tutto il mondo con bit permanenti impostati, chiunque può eliminare questi file, anche se non sono di loro proprietà. Questo è un altro problema serio e spesso causerà scompiglio nella sicurezza del server. Fortunatamente, puoi trovare tutti questi file usando il comando seguente.

# find /path/to/dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Sostituisci l'argomento del percorso con le directory che possono contenere tali file. Puoi anche iniziare dalla radice '/' del tuo filesystem, ma l'esecuzione richiederà molto tempo. Una volta elencati, esamina a fondo i file e modifica i loro permessi come richiesto.

32. Mantieni i file Noowner

I file Noowner sono file a cui non è associato alcun proprietario o gruppo. Questi possono rappresentare una serie di minacce alla sicurezza indesiderate. Pertanto, gli amministratori dovrebbero adottare le misure necessarie per identificarli. Possono assegnarli agli utenti appropriati o eliminarli del tutto.

È possibile utilizzare il comando find seguente per elencare i file noowner presenti in una directory. Consulta questa guida per saperne di più sul comando find in Linux.

# find /path/to/dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Esamina accuratamente i risultati per assicurarti che non ci siano file noowner indesiderati nel tuo server.

33. Verifica i registri del server

La maggior parte dei sistemi Unix utilizza lo standard Syslog per registrare informazioni utili riguardanti il ​​kernel, la rete, gli errori di sistema e molti altri. Puoi trovare questi log nella posizione /var/log. Possono essere visualizzati utilizzando diversi comandi del server terminal in Linux. Ad esempio, il comando seguente mostra le voci di registro recenti sul kernel.

# tail /var/log/kern.log

Allo stesso modo, puoi consultare /var/log/auth.log per informazioni sull'autenticazione.

# less /var/log/auth.log

Il file /var/log/boot.log fornisce informazioni sul processo di avvio del sistema.

# less /var/log/boot.log

Puoi anche controllare le informazioni sull'hardware e sul dispositivo da /var/log/dmesg.

# less /var/log/dmesg

Il file /var/log/syslog contiene informazioni di registro su qualsiasi cosa nel tuo sistema tranne i registri di autenticazione. Dovresti ispezionarlo per avere un'ampia panoramica del tuo server.

# less /var/log/syslog

Infine, puoi usare journalctl per ispezionare il diario di sistema. Produrrà un sacco di registri utili.

34. Usa il pacchetto logrotate

I sistemi Linux raccolgono i registri e li archiviano per gli amministratori. Nel tempo, questi registri aumenteranno di dimensioni e potrebbero persino causare una significativa carenza di spazio su disco. Il pacchetto logrotate è estremamente utile in questo caso poiché può ruotare, comprimere e inviare per posta i log di sistema. Sebbene tu possa mettere in dubbio il suo ruolo quando si tratta di rafforzare Linux, offre vantaggi indiscutibili.

È possibile trovare i file di configurazione di logrotate specifici del servizio nella directory /etc/logrotate.d. La configurazione globale di logrotate viene eseguita tramite /etc/logrotate.conf. Puoi impostare vari parametri qui come il numero di giorni per conservare i registri, se comprimerli o meno e così via.

35. Installa Logwatch/Logcheck

I file di registro di solito contengono molte informazioni, molte delle quali sono irrilevanti in termini di protezione avanzata di Linux. Per fortuna, gli amministratori possono utilizzare pacchetti come Logwatch e Logcheck per monitorare facilmente i log sospetti. Filtrano le voci comuni che sono previste nei tuoi registri e attirano la tua attenzione solo su voci insolite.

Logwatch è un analizzatore di log estremamente potente che può semplificare notevolmente la gestione dei log. È adatto per gli amministratori che cercano soluzioni all-in-one poiché fornisce un rapporto unificato di tutte le attività sui loro server.

# sudo apt-get install logwatch
# yum install -y logwatch

È possibile utilizzare i comandi precedenti per installarlo rispettivamente sui sistemi Ubuntu/Debian e RHEL/Centos. Logcheck è notevolmente più semplice rispetto a logwatch. Invia agli amministratori non appena si verificano registri sospetti. Puoi installarlo da –

# sudo apt-get install logcheck
# yum install -y logcheck

36. Installa le soluzioni IDS

Uno dei migliori metodi di protezione avanzata di Linux per i server è l'utilizzo di un IDS (Intrusion Detection Software). I nostri redattori consigliano vivamente l'ambiente di rilevamento avanzato delle intrusioni (AIDE) per questo scopo. È un IDS basato su host che offre molte funzionalità robuste, inclusi diversi algoritmi di digest dei messaggi, attributi di file, supporto per espressioni regolari, supporto per la compressione e così via.

# apt-get install aide
# yum install -y aide

Puoi installarlo su Ubuntu/Debian e RHEL/Centos usando i comandi sopra. Inoltre, dovresti anche installare i correttori di rootkit se desideri mantenere la sicurezza di Linux. I rootkit sono programmi dannosi progettati per assumere il controllo di un sistema. Alcuni strumenti popolari per il rilevamento di rootkit sono Chkrootkit e rkhunter.

37. Disabilita i dispositivi Firewire/Thunderbolt

È sempre una buona idea disabilitare il maggior numero possibile di periferiche. Ciò rende il tuo server sicuro contro gli aggressori che hanno ottenuto l'accesso diretto all'infrastruttura. In precedenza, abbiamo mostrato come disabilitare i dispositivi USB. Tuttavia, gli utenti malintenzionati possono comunque collegare moduli firewire o thunderbolt.

Firewire è il nome generico dell'interfaccia hardware IEEE 1394. Viene utilizzato per collegare dispositivi digitali come videocamere. Disabilitalo usando il comando seguente.

# echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf

Allo stesso modo, l'interfaccia Thunderbolt fornisce connessioni tra il sistema e le periferiche ad alta velocità come archivi su disco rigido, array RAID, interfacce di rete e così via. Puoi disabilitarlo usando il comando seguente.

# echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf

38. Installa le soluzioni IPS

Un IPS o un software di prevenzione delle intrusioni protegge i server di rete dagli attacchi di forza bruta. Poiché un numero considerevole di utenti e bot dannosi sta cercando di accedere al tuo server remoto, la configurazione di un IPS adeguato ti aiuterà a lungo termine.

Fail2Ban è una delle soluzioni IPS più popolari per sistemi simili a Unix. It is written using Python and is available on all POSIX-compliant platforms. It will look for obtrusive network requests all the time and block them as soon as possible. Install Fail2Ban using the below command.

# apt-get install -y fail2ban
# yum install -y fail2ban

DenyHosts is another popular IPS solution for Linux hardening. It will protect your ssh servers from intrusive brute force attempts. Use the following commands to install in on your Debian or Centos servers.

# apt-get install -y denyhosts
# yum install -y denyhosts

39. Harden the OpenSSH Server

OpenSSH is a software suite consisting of networking utilities that provide secure communication over public networks. The OpenSSH server has become the de-facto application for facilitating ssh connections. However, the bad guys also know this and they frequently target OpenSSH implementations. So, hardening this application should be a top concern for all Linux sysadmin.

For example- always use keys over password when initiating a new session, disable superuser login, disable empty passwords, limit user access, set up firewalls on port 22, set idle timeouts, use TCP wrappers, limit incoming requests, disable host-based authentication, and so on. You may also employ advanced Linux hardening methods like chrooting OpenSSH.

40. Utilize Kerberos

Kerberos is a computer network authentication protocol that allows access to computerized infrastructures based on tickets. It uses very hard to break cryptographic logic which makes systems supported by Kerberos very secure. Admins can protect their system from eavesdropping attacks and similar passive networking attacks very easily if they use the Kerberos protocol.

Kerberos is being developed by MIT and provides several stable releases. You can download the application from their website. Consult the documentation to see how it works and how you can set it up for your usage.

41. Harden Host Network

Admins should employ strong network policies in order to protect their secure servers against malicious hackers. We have already outlined the necessity of using intrusion detection systems and intrusion prevention systems. However, you can harden your host network further by doing the following tasks.

# vim /etc/sysctl.conf
net.ipv4.ip_forward=0
# disbale IP forwarding

net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
# disable send packet redirects

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
# disable ICMP redirects

net.ipv4.icmp_ignore_bogus_error_responses
# enable bad error message protection

We’ve added comments using the hash symbol to outline the purpose of these network parameters.

42. Utilize AppArmor

AppArmor is a Mandatory Access Control (MAC) mechanism that makes it possible to restrict the usage of system resources based on programs. It allows admins to mandate policies on a program-level rather than users. You can simply create profiles that control the access to network, sockets, file permissions, and so on for your host applications.

Recent Debian/Ubuntu systems come with AppArmor pre-installed. The pre-existing AppArmor profiles are stored in the /etc/apparmor.d directory. You can modify these policies or even add your own policies during the Linux hardening process. Use the below command to view the AppArmor status in your system.

# apparmor_status

43. Secure Web Server

Linux servers are widely used for powering web applications. If you’re using your server for this purpose, you need to harden your server components appropriately. Some of these the PHP runtime, Apache HTTP server, and the Nginx reverse proxy server. Secure your Apache server by adding the below lines in the configuration file.

# vim /etc/httpd/conf/httpd.conf
ServerTokens Prod
ServerSignature Off
TraceEnable Off
Options all -Indexes
Header always unset X-Powered-By
# systemctl restart httpd.service

We’ve prepared a standalone guide on the Nginx server a while ago. Follow the suggestions in that guide to secure your Nginx server. Head over to this documentation for learning the best PHP security practices.

44. Configure TCP Wrappers

TCP wrappers are a host-based network filtering system that allows or denies access to your host services based on pre-set policies. However, for it to work, your host service must be compiled against the libwrap.a biblioteca. Some common TCP wrapperd Unix daemons include sshd, vsftpd, and xinetd.

# ldd /sbin/sshd | grep libwrap

This command will notify if a service is supported by TCP wrappers or not. The TCP wrappers system enforces access control using two configuration files, the /etc/hosts.allow and /etc/hosts.deny. For example, add the following lines to /etc/hosts.allow for allowing all incoming requests to the ssh daemon.

# vi /etc/hosts.allow
sshd : ALL

Add the following to /etc/hosts.deny for rejecting all incoming requests to the FTP daemon.

# vi /etc/hosts.deny
vsftpd : ALL

To see more information about the configuration options, consult the tcpd man page, or visit this documentation from FreeBSD.

45. Maintain Cron Access

Linux provides robust automation support by means of cron jobs. In short, you can specify routine tasks using the cron scheduler. Visit our earlier guide on cron and crontab to learn how cron works. Nevertheless, admins must make sure that ordinary users are unable to access or put entries in the crontab. Simply put their usernames in the /etc/cron.deny file to do this.

# echo ALL >>/etc/cron.deny

This command will disable cron for all users in your server except root. To allow access for a specific user, add his username to the /etc/cron.allow file.

46. Disable Ctrl+Alt+Delete

The Ctrl+Alt+Delete key combinations allow users to force reboot many Linux distributions. This can be particularly problematic if you’re managing a secure server. Admins should disable this hotkey in order to maintain proper Linux hardening. You can run the following command to disable this in systemd-based systems.

# systemctl mask ctrl-alt-del.target

If you’re on legacy systems that use init V instead of systemd, edit the /etc/inittab file and comment out the following line by appending a hash before it.

# vim /etc/inittab
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

47. Enable NIC Bonding

NIC or Network Interface Card bonding is a form of link aggregation in Linux. Multiple network interfaces are joined in this method for gaining better resource availability and throughput. If you’re maintaining busy Linux servers, you can use this method for reducing the workload on a single interface and distribute them across multiple interfaces.

The whole process of NIC bonding differs between Debian and RHEL/Centos systems. We will cover them in a standalone guide soon. For now, simply remember that you can achieve better reliability by enabling network bonding.

48. Restrict Core Dumps

Core dumps are memory snapshots that contain crash information of executables. These are created when binaries stop working or crash in simple terms. They contain too much sensitive information about the host system and may threaten your Linux security if fallen into the wrong hands. Thus, it is always a good idea to restrict core dumps on production servers.

# echo 'hard core 0' >> /etc/security/limits.conf
# echo 'fs.suid_dumpable = 0' >> /etc/sysctl.conf
# sysctl -p
# echo 'ulimit -S -c 0 > /dev/null 2>&1' >> /etc/profile

Run the above commands to restrict cor dumps on your server and increase Linux hardening.

49. Enable Exec Shield

The Exec Shield project was developed by Red Hat for protecting Linux systems against automated remote attacks. It performs particularly well against various buffer overflow-based exploits. You can enable exec shield for your Linux server by running the below commands.

# echo 'kernel.exec-shield = 1' >> /etc/sysctl.conf
# echo 'kernel.randomize_va_space = 1' >> /etc/sysctl.conf

This method will work on both Debian and RHEL systems.

50. Create Regular Backups

No matter how many Linux hardening methods you apply, you need to be always prepared for unforeseen problems. Backing up your workstation or server can prove extremely beneficial in the long run. Thankfully, a large number of backup utility for Linux exists to make system backups easier.

Moreover, you must automate the backup process and store your system data safely. Employing disaster management and recovery solutions can be also useful when it comes to data management.

Ending Thoughts

Although Linux is much more secure when compared to home operating systems, admins still need to maintain a set of Linux hardening policies. We have compiled this guide with many of the best practices used by Linux security experts. You should try to employ as many of them as possible. However, do not apply these without understanding their effect on your system. You need to have a foolproof plan as well as a good understanding of server security to keep your system safe from malicious users. Hopefully, we provided you the essential tips you were looking for.


Linux
  1. 8 suggerimenti per la riga di comando di Linux

  2. Le 10 migliori app di messaggistica istantanea per Linux

  3. Hyper:la migliore app terminale per Linux

  4. Qual è il miglior VPS:Windows o Linux?

  5. I migliori server Web Linux

I 20 migliori strumenti di sicurezza per Linux:la scelta dell'esperto di Linux

I 15 migliori strumenti di recupero dati Linux:la scelta dei professionisti

I 15 migliori software econometrico e statistico per sistemi Linux

I 20 migliori software di data mining per desktop Linux

Come proteggere correttamente sysctl in Linux:suggerimenti per rafforzare la sicurezza

Gli 8 migliori telefoni sicuri Linux per la privacy e la sicurezza