Ricerca nel sito web

25 suggerimenti per rafforzare la sicurezza per i server Linux


Tutti dicono che Linux è sicuro per impostazione predefinita e sono d'accordo in una certa misura (sono argomenti discutibili). Tuttavia, Linux dispone di un modello di sicurezza integrato per impostazione predefinita. È necessario ottimizzarlo e personalizzarlo secondo le proprie esigenze, il che può aiutare a rendere il sistema più sicuro. Linux è più difficile da gestire ma offre maggiore flessibilità e opzioni di configurazione.

Proteggere un sistema in una produzione dalle mani di hacker e cracker è un compito impegnativo per un amministratore di sistema. Questo è il nostro primo articolo relativo a "Come proteggere Linux Box" o "Rafforzare una Linux Box". In questo post spiegheremo 25 suggerimenti e trucchi utili per proteggere il tuo sistema Linux. Spero che i suggerimenti e i trucchi riportati di seguito ti aiuteranno a proteggere il tuo sistema.

1. Sicurezza del sistema fisico

Configura il BIOS per disabilitare l'avvio da CD/DVD, Dispositivi esterni, Unità floppy nel BIOS. Successivamente, abilita la password BIOS e proteggi anche GRUB con una password per limitare l'accesso fisico al tuo sistema.

  1. Imposta la password GRUB per proteggere i server Linux

2. Partizioni del disco

È importante avere partizioni diverse per ottenere una maggiore sicurezza dei dati in caso si verifichi un disastro. Creando diverse partizioni, i dati possono essere separati e raggruppati. Quando si verifica un incidente imprevisto, solo i dati di quella partizione verranno danneggiati, mentre i dati su altre partizioni sopravvivranno. Assicurati di avere le seguenti partizioni separate e che le applicazioni di terze parti siano installate su file system separati in /opt.

/
/boot
/usr
/var
/home
/tmp
/opt

3. Ridurre al minimo i pacchetti per ridurre al minimo la vulnerabilità

Vuoi davvero che siano installati tutti i tipi di servizi?. Si consiglia di evitare di installare pacchetti inutili per evitare vulnerabilità nei pacchetti. Ciò può ridurre al minimo il rischio che la compromissione di un servizio possa portare alla compromissione di altri servizi. Trova e rimuovi o disabilita i servizi indesiderati dal server per ridurre al minimo la vulnerabilità. Utilizza il comando "chkconfig" per scoprire i servizi in esecuzione sul runlevel 3.

/sbin/chkconfig --list |grep '3:on'

Una volta scoperto che sono in esecuzione servizi indesiderati, disabilitali utilizzando il seguente comando.

chkconfig serviceName off

Utilizza il gestore pacchetti RPM come “yum” o “apt-get” per elencare tutti i pacchetti installati su un sistema e rimuoverli utilizzando il seguente comando.

yum -y remove package-name
sudo apt-get remove package-name
  1. 5 esempi di comandi chkconfig
  2. 20 esempi pratici di comandi RPM
  3. 20 comandi Linux YUM per la gestione dei pacchetti Linux
  4. 25 Comandi APT-GET e APT-CACHE per gestire la gestione dei pacchetti

4. Controllare le porte della rete di ascolto

Con l'aiuto del comando di rete "netstat" puoi visualizzare tutte le porte aperte e i programmi associati. Come ho detto sopra, usa il comando "chkconfig" per disabilitare tutti i servizi di rete indesiderati dal sistema.

netstat -tulpn
  1. 20 comandi Netstat per la gestione della rete in Linux

5. Utilizza Secure Shell (SSH)

I protocolli Telnet e rlogin utilizzano testo semplice, non formati crittografati, il che rappresenta una violazione della sicurezza. SSH è un protocollo sicuro che utilizza la tecnologia di crittografia durante la comunicazione con il server.

Non accedere mai direttamente come root a meno che non sia necessario. Utilizza "sudo" per eseguire i comandi. sudo sono specificati nel file /etc/sudoers e possono anche essere modificati con l'utilità “visudo” che si apre nell'editor VI.

Si consiglia inoltre di modificare il numero di porta SSH 22 predefinito con un altro numero di porta di livello superiore. Apri il file di configurazione SSH principale e imposta alcuni parametri seguenti per limitare l'accesso degli utenti.

vi /etc/ssh/sshd_config
Disabilita l'accesso root
PermitRootLogin no
Consenti solo utenti specifici
AllowUsers username
Utilizza la versione 2 del protocollo SSH
Protocol 2
  1. 5 migliori pratiche per proteggere e proteggere il server SSH

6. Mantieni aggiornato il sistema

Mantieni sempre il sistema aggiornato con le patch delle versioni più recenti, le correzioni di sicurezza e il kernel quando è disponibile.

yum updates
yum check-update

7. Bloccare i Cronjobs

Cron ha una propria funzionalità integrata, in cui consente di specificare chi può e chi potrebbe non voler eseguire lavori. Questo è controllato dall'uso di file chiamati /etc/cron.allow e /etc/cron.deny. Per bloccare un utente utilizzando cron, aggiungi semplicemente i nomi utente in cron.deny e consenti all'utente di eseguire cron aggiungi nel file cron.allow. Se desideri impedire a tutti gli utenti di utilizzare cron, aggiungi la riga "ALL" al file cron.deny.

echo ALL >>/etc/cron.deny
  1. 11 Esempi di pianificazione Cron in Linux

8. Disattiva la chiavetta USB da rilevare

Molte volte accade che si voglia impedire agli utenti di utilizzare chiavette USB nei sistemi per proteggere e proteggere i dati dal furto. Crea un file "/etc/modprobe.d/no-usb" e aggiungendo la riga seguente non verrà rilevata l'archiviazione USB.

install usb-storage /bin/true

9. Attiva SELinux

Security-Enhanced Linux (SELinux) è un meccanismo di sicurezza obbligatorio per il controllo degli accessi fornito nel kernel. Disabilitare SELinux significa rimuovere il meccanismo di sicurezza dal sistema. Pensaci due volte attentamente prima di rimuoverlo, se il tuo sistema è collegato a Internet e accessibile al pubblico, pensaci ancora un po'.

SELinux fornisce tre modalità operative di base e lo sono.

  1. Applicazione: questa è la modalità predefinita che abilita e applica la politica di sicurezza SELinux sulla macchina.
  2. Permissivo: in questa modalità, SELinux non applicherà la politica di sicurezza sul sistema, ma solo avviserà e registrerà le azioni. Questa modalità è molto utile in termini di risoluzione dei problemi relativi a SELinux.
  3. Disabilitato: SELinux è disattivato.

Puoi visualizzare lo stato corrente della modalità SELinux dalla riga di comando utilizzando 'system-config-selinux', 'getenforce' o ' comandi sestatus'.

sestatus

Se è disabilitato, abilita SELinux utilizzando il seguente comando.

setenforce enforcing

Può anche essere gestito dal file "/etc/selinux/config", dove è possibile abilitarlo o disabilitarlo.

10. Rimuovere i desktop KDE/GNOME

Non è necessario eseguire desktop X Window come KDE o GNOME sul tuo server LAMP dedicato. Puoi rimuoverli o disabilitarli per aumentare la sicurezza del server e le prestazioni. Per disabilitarlo è sufficiente aprire il file "/etc/inittab" e impostare il livello di esecuzione su 3. Se desideri rimuoverlo completamente dal sistema utilizza il comando seguente.

yum groupremove "X Window System"

11. Disattiva IPv6

Se non utilizzi un protocollo IPv6, dovresti disabilitarlo perché la maggior parte delle applicazioni o dei criteri non richiedono il protocollo IPv6 e attualmente non è richiesto sul server . Vai al file di configurazione della rete e aggiungi le righe seguenti per disabilitarlo.

vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no

12. Limitare gli utenti a utilizzare vecchie password

Questo è molto utile se vuoi impedire agli utenti di utilizzare le stesse vecchie password. Il vecchio file della password si trova in /etc/security/opasswd. Ciò può essere ottenuto utilizzando il modulo PAM.

Apri il file "/etc/pam.d/system-auth" in RHEL/CentOS/Fedora.

vi /etc/pam.d/system-auth

Apri il file "/etc/pam.d/common-password" in Ubuntu/Debian/Linux Mint.

vi /etc/pam.d/common-password

Aggiungi la seguente riga alla sezione "auth".

auth        sufficient    pam_unix.so likeauth nullok

Aggiungi la seguente riga alla sezione "password" per impedire a un utente di riutilizzare le ultime 5 password della sua.

password   sufficient    pam_unix.so nullok use_authtok md5 shadow remember=5

Solo le ultime 5 password vengono ricordate dal server. Se hai provato a utilizzare una delle ultime 5 vecchie password, riceverai un errore simile.

Password has been already used. Choose another.

13. Come verificare la scadenza della password dell'utente

In Linux, le password dell'utente vengono archiviate nel file "/etc/shadow" in formato crittografato. Per verificare la scadenza della password dell'utente, è necessario utilizzare il comando "chage". Visualizza le informazioni sui dettagli della scadenza della password insieme alla data dell'ultima modifica della password. Questi dettagli vengono utilizzati dal sistema per decidere quando un utente deve modificare la propria password.

Per visualizzare le informazioni sull'invecchiamento di qualsiasi utente esistente come la data di scadenza e l'ora, utilizza il comando seguente.

#chage -l username

Per modificare l'invecchiamento della password di qualsiasi utente, utilizzare il comando seguente.

#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName
Parametri
  1. -M Imposta il numero massimo di giorni
  2. -m Imposta il numero minimo di giorni
  3. -W Imposta il numero di giorni di avviso

14. Blocca e sblocca l'account manualmente

Le funzionalità di blocco e sblocco sono molto utili, invece di rimuovere un account dal sistema, puoi bloccarlo per una settimana o un mese. Per bloccare un utente specifico, puoi utilizzare il comando follow.

passwd -l accountName

Nota: l'utente bloccato è ancora disponibile solo per l'utente root. Il blocco viene eseguito sostituendo la password crittografata con una stringa (!). Se qualcuno tenta di accedere al sistema utilizzando questo account, riceverà un errore simile a quello riportato di seguito.

su - accountName
This account is currently not available.

Per sbloccare o abilitare l'accesso a un account bloccato, utilizzare il comando as. Ciò rimuoverà la stringa (!) con password crittografata.

passwd -u accountName

15. Applicazione di password più efficaci

Numerosi utenti utilizzano password soft o deboli e la loro password potrebbe essere violata con attacchi basati su dizionario o di forza bruta. Il modulo "pam_cracklib" è disponibile nello stack di moduli PAM (Pluggable Authentication Modules) che costringerà l'utente a impostare password complesse. Apri il seguente file con un editor.

Leggi anche:

vi /etc/pam.d/system-auth

E aggiungi la riga utilizzando i parametri di credito come (lcredit, ucredit, dcredit e/o ocredit rispettivamente minuscolo , maiuscolo, cifra e altro)

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

16. Abilita Iptables (Firewall)

Ti consigliamo vivamente di abilitare il firewall Linux per proteggere l'accesso non autorizzato ai tuoi server. Applica le regole in iptables per filtrare i pacchetti in entrata, in uscita e inoltrati. Possiamo specificare l'indirizzo di origine e di destinazione da consentire e negare in un numero di porta udp/tcp specifico.

  1. Guida e suggerimenti di base su IPtables

17. Disabilita Ctrl+Alt+Canc in Inittab

Nella maggior parte delle distribuzioni Linux, premendo "CTRL-ALT-DELETE" il sistema verrà riavviato. Quindi non è una buona idea avere questa opzione abilitata almeno sui server di produzione, se qualcuno lo fa per errore.

Questo è definito nel file "/etc/inittab", se guardi attentamente in quel file vedrai una riga simile alla seguente. Per impostazione predefinita, la riga non è commentata. Dobbiamo commentarlo. Questa particolare segnalazione di sequenza di tasti spegnerà un sistema.

Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. Controllo degli account per password vuote

Qualsiasi account con una password vuota significa che è aperto per l'accesso non autorizzato a chiunque sul Web e fa parte della sicurezza all'interno di un server Linux. Pertanto, devi assicurarti che tutti gli account abbiano password complesse e che nessuno abbia accesso autorizzato. Gli account con password vuota rappresentano rischi per la sicurezza e possono essere facilmente hackerabili. Per verificare se erano presenti account con password vuota, utilizzare il comando seguente.

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

19. Visualizza il banner SSH prima dell'accesso

È sempre una buona idea avere un banner legale o banner di sicurezza con alcuni avvisi di sicurezza prima dell’autenticazione SSH. Per impostare tali banner leggere il seguente articolo.

  1. Visualizza il messaggio di avviso SSH agli utenti

20. Monitorare le attività degli utenti

Se hai a che fare con molti utenti, è importante raccogliere le informazioni sulle attività di ciascun utente e sui processi da lui utilizzati e analizzarli in un secondo momento o in caso di qualsiasi tipo di prestazioni o problemi di sicurezza. Ma come possiamo monitorare e raccogliere informazioni sulle attività degli utenti.

Esistono due strumenti utili chiamati "psacct" e "acct" utilizzati per monitorare le attività e i processi dell'utente su un sistema. Questi strumenti vengono eseguiti in background del sistema e tengono traccia continuamente dell'attività di ogni utente su un sistema e delle risorse consumate da servizi come Apache, MySQL, SSH, FTP, ecc. Per ulteriori informazioni su installazione, configurazione e utilizzo, visitare l'URL seguente.

  1. Monitora l'attività dell'utente con i comandi psacct o acct

21. Esaminare regolarmente i registri

Spostare i registri nel server di registro dedicato, ciò potrebbe impedire agli intrusi di modificare facilmente i registri locali. Di seguito sono riportati i nomi dei file di registro predefiniti comuni di Linux e il loro utilizzo:

  1. /var/log/message: dove sono disponibili i registri dell'intero sistema o i registri delle attività correnti.
  2. /var/log/auth.log – Registri di autenticazione.
  3. /var/log/kern.log – Registri del kernel.
  4. /var/log/cron.log – Registri Crond (cron job).
  5. /var/log/maillog – Registri del server di posta.
  6. /var/log/boot.log – Registro di avvio del sistema.
  7. /var/log/mysqld.log: file di registro del server database MySQL.
  8. /var/log/secure – Registro di autenticazione.
  9. /var/log/utmp o /var/log/wtmp: file dei record di accesso.
  10. /var/log/yum.log: file di registro Yum.

22. Backup di file importanti

In un sistema di produzione, è necessario eseguire il backup di file importanti e conservarli in un deposito di sicurezza, in un sito remoto o fuori sede per il ripristino di emergenza.

23. Legame NIC

Esistono due tipi di modalità nel bonding NIC, è necessario menzionarli nell'interfaccia di bonding.

  1. mode=0 – Girone all'italiana
  2. mode=1 – Attivo e Backup

Il NIC Bonding ci aiuta a evitare singoli punti di guasto. Nel collegamento NIC, colleghiamo insieme due o più schede Ethernet di rete e creiamo un'unica interfaccia virtuale in cui possiamo assegnare un indirizzo IP per parlare con altri server. La nostra rete sarà disponibile nel caso in cui una scheda NIC sia inattiva o non disponibile per qualsiasi motivo.

Leggi anche: Creazione del collegamento dei canali NIC in Linux

24. Mantieni /boot in sola lettura

Il kernel Linux e i file correlati si trovano nella directory /boot che per impostazione predefinita è lettura-scrittura. Cambiarlo in sola lettura riduce il rischio di modifiche non autorizzate dei file di avvio critici. Per fare ciò, apri il file "/etc/fstab".

vi /etc/fstab

Aggiungi la seguente riga in basso, salvala e chiudila.

LABEL=/boot     /boot     ext2     defaults,ro     1 2

Tieni presente che dovrai reimpostare la modifica in lettura-scrittura se in futuro avrai bisogno di aggiornare il kernel.

25. Ignora ICMP o richiesta di trasmissione

Aggiungi la riga seguente nel file "/etc/sysctl.conf" per ignorare la richiesta ping o broadcast.

Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1

Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1

Carica nuove impostazioni o modifiche eseguendo il comando seguente

#sysctl -p

Se ti sei perso qualche suggerimento importante sulla sicurezza o sul rafforzamento nell'elenco precedente o hai qualsiasi altro suggerimento che deve essere incluso nell'elenco. Per favore lascia i tuoi commenti nella nostra casella dei commenti. TecMint è sempre interessato a ricevere commenti, suggerimenti e discussioni per il miglioramento.