Ricerca nel sito web

23 Suggerimenti per la sicurezza del rafforzamento del server CentOS - Parte 2


Continuando il tutorial precedente su Come proteggere e rafforzare il server CentOS, in questo articolo discuteremo altri suggerimenti sulla sicurezza che verranno presentati nell'elenco di controllo seguente.

Requisiti

  1. 20 suggerimenti per la sicurezza del rafforzamento del server CentOS - Parte 1

21. Disabilita i comandi SUID e SGID inutili

Se i bit setuid e setgid sono impostati sui programmi binari, questi comandi possono eseguire attività con diritti di altri utenti o gruppi, come i privilegi di root che può esporre a seri problemi di sicurezza.

Spesso, gli attacchi di sovraccarico del buffer possono sfruttare tali file binari eseguibili per eseguire codice non autorizzato con i diritti di un utente esperto root.

find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

Per disattivare il bit setuid eseguire il comando seguente:

chmod u-s /path/to/binary_file

Per disattivare il bit setgid eseguire il comando seguente:

chmod g-s /path/to/binary_file

22. Verifica la presenza di file e directory senza proprietario

I file o le directory non di proprietà di un account valido devono essere eliminati o assegnati con autorizzazioni da un utente e un gruppo.

Emettere il comando find seguente per elencare file o directory senza utente e gruppo.

find / -nouser -o -nogroup -exec ls -l {} \;

23. Elenca i file scrivibili da tutti

Mantenere un file scrivibile da tutti nel sistema può essere pericoloso perché chiunque può modificarlo. Esegui il comando seguente per visualizzare i file scrivibili in parole, ad eccezione dei Link simbolici, che sono sempre scrivibili da tutti.

find / -path /proc -prune -o -perm -2 ! -type l –ls

24. Crea password complesse

Crea una password composta da un minimo di otto caratteri. La password deve contenere cifre, caratteri speciali e lettere maiuscole. Utilizza pwmake per generare una password di 128 bit dal file /dev/urandom.

pwmake 128

25. Applicare una politica di password complessa

Forza il sistema a utilizzare password complesse aggiungendo la riga seguente nel file /etc/pam.d/passwd.

password required pam_pwquality.so retry=3

Aggiungendo la riga precedente, la password inserita non può contenere più di 3 caratteri in sequenza monotona, come abcd, e più di 3 caratteri consecutivi identici, come 1111.

Per forzare gli utenti a utilizzare una password con una lunghezza minima di 8 caratteri, comprese tutte le classi di caratteri, controllare la forza per sequenze di caratteri e caratteri consecutivi aggiungere le seguenti righe a /etc/security /pwquality.conf.

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26. Utilizza la durata della password

Il comando chage può essere utilizzato per l'invecchiamento della password dell'utente. Per impostare la scadenza della password di un utente entro 45 giorni, utilizza il seguente comando:

chage -M 45 username

Per disabilitare la scadenza della password utilizzare il comando:

chage -M -1 username

Forza la scadenza immediata della password (l'utente deve modificare la password all'accesso successivo) eseguendo il comando seguente:

chage -d 0 username

27. Blocca account

Gli account utente possono essere bloccati eseguendo il comando passwd o usermod:

passwd -l username
usermod -L username

Per sbloccare gli account utilizza l'opzione -u per il comando passwd e l'opzione -U per usermod.

28. Impedire l'accesso alla Shell degli account

Per impedire a un account di sistema (account ordinario o di servizio) di accedere a una shell bash, modificare la shell di root in /usr/sbin/nologin o /bin/false in il file /etc/passwd immettendo il comando seguente:

usermod -s /bin/false username

Per cambiare la shell durante la creazione di un nuovo utente, eseguire il seguente comando:

useradd -s /usr/sbin/nologin username

29. Blocca la console utente virtuale con vlock

vlock è un programma utilizzato per bloccare una sessione multipla sulla console Linux. Installa il programma e inizia a bloccare la sessione del terminale eseguendo i comandi seguenti:

yum install vlock
vlock

30. Utilizzare un sistema centralizzato per gestire account e autenticazione

L'utilizzo di un sistema di autenticazione centralizzato può semplificare notevolmente la gestione e il controllo degli account. I servizi che possono offrire questo tipo di gestione degli account sono IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS o Winbind.

Alcuni di questi servizi sono per impostazione predefinita altamente protetti con protocolli crittografici e crittografia a chiave simmetrica, come Kerberos.

31. Forzare il montaggio di sola lettura del supporto USB

Utilizzando l'utilità blockdev puoi forzare il montaggio di tutti i supporti rimovibili in sola lettura. Ad esempio, crea un nuovo file di configurazione udev denominato 80-readonly-usb.rules nella directory /etc/udev/rules.d/ con il seguente contenuto:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

Quindi, applica la regola con il comando seguente:

udevadm control -reload

32. Disabilitare l'accesso root tramite TTY

Per impedire all'account root di eseguire l'accesso al sistema tramite tutti i dispositivi della console (TTY), cancellare il contenuto del file securetty digitando il seguente prompt del terminale di comando come root.

cp /etc/securetty /etc/securetty.bak
cat /dev/null > /etc/securetty

Ricorda che questa regola non si applica alle sessioni di accesso SSH
Per impedire l'accesso root tramite SSH, modifica il file /etc/ssh/sshd_config e aggiungi la riga seguente:

PermitRootLogin no

33. Utilizzare gli ACL POSIX per espandere le autorizzazioni di sistema

Gli elenchi di controllo di accesso possono definire i diritti di accesso per più di un singolo utente o gruppo e possono specificare i diritti per programmi, processi, file e directory. Se imposti l'ACL su una directory, i suoi discendenti erediteranno automaticamente gli stessi diritti.

Per esempio,

setfacl -m u:user:rw file
getfacl file

34. Configura SELinux in modalità Enforce

Il miglioramento SELinux del kernel Linux implementa la politica di controllo degli accessi obbligatori (MAC), consentendo agli utenti di definire una politica di sicurezza che fornisce autorizzazioni granulari per tutti gli utenti, programmi, processi, file e dispositivi.

Le decisioni di controllo degli accessi del kernel si basano su tutto il contesto rilevante per la sicurezza e non sull’identità dell’utente autenticato.

Per ottenere lo stato di Selinux e applicare la politica, esegui i comandi seguenti:

getenforce
setenforce 1
sestatus

35. Installare le utilità aggiuntive di SELinux

Installa il pacchetto policycoreutils-python che fornisce utilità Python aggiuntive per il funzionamento di SELinux: audit2allow, audit2why, chcat e semanage.

Per visualizzare tutti i valori booleani insieme ad una breve descrizione, utilizzare il seguente comando:

semanage boolean -l

Ad esempio, per visualizzare e impostare il valore di httpd_enable_ftp_server, esegui il comando seguente:

getsebool httpd_enable_ftp_server

Per far sì che il valore di un valore booleano persista dopo i riavvii, specifica l'opzione -P su setsebool, come illustrato nell'esempio seguente:

setsebool -P httpd_enable_ftp_server on

36. Utilizzare il server di registro centralizzato

Configura il demone rsyslog per inviare messaggi di registro di utilità sensibili a un server di registro centralizzato. Inoltre, monitora i file di registro con l'aiuto dell'utilità logwatch.

L'invio di messaggi di registro a un server remoto garantisce che una volta che il sistema è stato compromesso, gli utenti malintenzionati non possano nascondere completamente la propria attività, lasciando sempre tracce sui file di registro remoti.

37. Abilita contabilità di processo

Abilita la contabilità del processo installando l'utilità psacct e utilizza il comando lastcomm per visualizzare le informazioni sui comandi eseguiti in precedenza come registrati nel file di contabilità del sistema e sa per riepilogare le informazioni sui comandi eseguiti in precedenza come registrati nel file della contabilità di sistema.

38. Rafforzamento di /etc/sysctl.conf

Utilizzare le seguenti regole dei parametri del kernel per proteggere il sistema:

Disabilitazione del routing di origine

net.ipv4.conf.all.accept_source_route=0

Disabilita l'inoltro IPv4

ipv4.conf.all.forwarding=0

Disabilita IPv6

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Disabilitare l'accettazione e l'invio di pacchetti reindirizzati ICMP a meno che non sia specificamente richiesto.

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0

Disabilita l'inoltro del percorso inverso

net.ipv4.conf.all.rp_filter=2

Ignora tutte le richieste eco ICMP (impostare su 1 per abilitare)

net.ipv4.icmp_echo_ignore_all = 0

39. Utilizza i servizi VPN per accedere ai tuoi locali su reti pubbliche non protette

Utilizza sempre i servizi VPN per gli operatori per accedere in remoto ai locali della LAN su Internet. Tali tipi di servizi possono essere configurati utilizzando una soluzione open source gratuita, come OpenVPN, o utilizzando una soluzione proprietaria, come Cisco VPN (installa l'utilità della riga di comando vpnc fornita da Epel Repositories).

40. Eseguire la scansione del sistema esterno

Valuta la sicurezza del tuo sistema per individuare eventuali vulnerabilità eseguendo la scansione del sistema da punti remoti sulla tua LAN utilizzando strumenti specifici come:

  1. Nmap – scanner di rete 29 Esempi di comando Nmap
  2. Nessus: scanner di sicurezza
  3. OpenVAS: utilizzato per la scansione delle vulnerabilità e per la gestione completa delle vulnerabilità.
  4. Nikto: un eccellente scanner di script CGI (Common Gateway Interface) Scansione delle vulnerabilità Web in Linux

41. Proteggi il sistema internamente

Utilizzare la protezione interna del sistema contro virus, rootkit, malware e, come buona pratica, installare sistemi di rilevamento delle intrusioni in grado di rilevare attività non autorizzate (attacchi DDOS, scansioni delle porte), come:

  1. AIDE – Ambiente avanzato di rilevamento delle intrusioni – http://aide.sourceforge.net/
  2. ClamAV – Scanner antivirus https://www.clamav.net
  3. Rkhunter – Scanner rootkit
  4. Lynis – Strumento di controllo e scansione della sicurezza per Linux
  5. Tripwire – Sicurezza e integrità dei dati http://www.tripwire.com/
  6. Fail2Ban: prevenzione delle intrusioni nella rete
  7. OSSEC – (HIDS) Sistema di rilevamento delle intrusioni basato su host http://ossec.github.io/
  8. Mod_Security: proteggi gli attacchi di forza bruta o DDoS

42. Modifica variabili di ambiente utente

Aggiungi il formato data e ora per memorizzare l'esecuzione dei comandi emettendo il comando seguente:

echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

Forza la registrazione istantanea di HISTFILE ogni volta che viene digitato un comando (invece del logout):

echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

Limita il timeout della sessione di accesso. Elimina automaticamente il guscio quando non viene eseguita alcuna attività durante un periodo di inattività. Molto utile per disconnettere automaticamente le sessioni SSH.

echo ‘TMOUT=120’ >> .bashrc

Applicare tutte le regole eseguendo:

source .bashrc

43. Backup dei dati

Utilizza utilità di backup, come tar, cat, rsync, scp, snapshot LVM, ecc. per archiviare una copia del tuo sistema, preferibilmente fuori sede, in caso di guasto del sistema.

Se il sistema viene compromesso è possibile eseguire il ripristino dei dati dai backup precedenti.

Infine, non dimenticare che, indipendentemente da quante misure di sicurezza e contromisure prendi per mantenere il tuo sistema sicuro, non sarai mai completamente sicuro al 100% finché la tua macchina è collegata e accesa.