GNU/Linux >> Linux Esercitazione >  >> Cent OS

15 passaggi per rafforzare Linux per il server CentOS 7

Il rafforzamento del server è il processo di miglioramento della sicurezza del server attraverso vari metodi. Abbiamo molti passaggi per proteggere un server. Tieni fuori te stesso e la tua azienda proteggendo i tuoi sistemi Linux da hacker, cracker e aggressori! Puoi trasformare una scatola vulnerabile in un server rinforzato tramite i seguenti passaggi. Ti aiuterà a prevenire attacchi esterni. Qui sto descrivendo il rafforzamento del server di CentOS.

Cosa sapere

Questa guida ti guida attraverso i passaggi necessari per rafforzare la sicurezza di CentOS 7. La protezione avanzata di un sistema lo renderà più restrittivo e potresti riscontrare problemi. Ti consiglio di creare una macchina virtuale duplicata che puoi utilizzare per la risoluzione dei problemi. Di seguito troverai un elenco di passaggi di base che puoi e dovresti eseguire per rafforzare i tuoi server subito dopo il provisioning.

1. Accesso remoto sicuro

A volte accediamo al nostro server con metodi remoti e se non è più sicuro, possiamo esporre il nostro server. Le opzioni OpenSSH sono controllate tramite /etc/ssh/sshd_config file.

a. Disabilita il metodo di autenticazione della password SSH e abilita il metodo di autenticazione della chiave pubblica

È importante disabilitare il metodo di accesso remoto con password e abilitare la chiave pubblica di autenticazione

Modifica ChallengeResponseAuthentication e Autenticazione password a no per disattivare il metodo password

PasswordAuthentication no
ChallengeResponseAuthentication no

Autorizza l'autenticazione con chiave pubblica

RSAAuthentication yes
PubkeyAuthentication yes

ora puoi generare una nuova coppia di chiavi

# ssh-keygen -t rsa

b. Disabilita l'accesso root diretto

È una sicurezza di rischio per consentire a root di accedere direttamente al server. Dovresti invece accedere al sistema come tuo account e quindi fare su - per accedere come root. Quindi devi cambiare PermitRootLogin sì a PermitRootLogin no

PermitRootLogin no

c. Cambia la porta di ascolto SSH predefinita (es:8500)

A volte non è consigliabile utilizzare la porta predefinita perché è conosciuta da tutto il mondo ed è un rischio per la sicurezza. È bene personalizzare la porta da utilizzare

port 8500

2. Protezione del Boot Loader con grub password

Proteggendo il caricatore di avvio possiamo impedire l'accesso alla modalità utente singolo che accede automaticamente come root. Questo viene fatto con GRUB impostando una password che è memorizzata in testo normale per impostazione predefinita.

Per il sistema Debian

# grub-mkpasswd-pbkdf2

Per Cento

# grub2-mkpasswd-pbkdf2

3. Porte di rete in ascolto

Dopo aver configurato i servizi di rete, è importante prestare attenzione a quali porte sono effettivamente in ascolto sulle interfacce di rete del sistema. Eventuali porte aperte possono essere la prova di un'intrusione.

# nmap -sT -O localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-07 23:13 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000061s latency).
Other addresses for localhost (not scanned): 127.0.0.1
rDNS record for 127.0.0.1: centos-01
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
2049/tcp open nfs

Per elencare tutte le porte aperte e i programmi associati usa il comando seguente

# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN   

4. Limita le autorizzazioni

Restringi le autorizzazioni per i file e le cartelle di sistema per limitare i rischi.

# chmod 700 /root
# chmod 700 /var/log/audit
# chmod 740 /etc/rc.d/init.d/iptables
# chmod 740 /sbin/iptables
# chmod -R 700 /etc/skel
# chmod 600 /etc/rsyslog.conf
# chmod 640 /etc/security/access.conf
# chmod 600 /etc/sysctl.conf

5. Controllo 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. Per controllare gli account con password vuota, usa il comando qui sotto

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

Per sicurezza, è bene bloccare tutti gli account password vuoti:

# passwd -l paul
Locking password for user paul.
passwd: Success

6. Regola i parametri del kernel

Sysctl è un'interfaccia per esaminare e modificare dinamicamente i parametri nel sistema operativo Linux. Modifica /etc/sysctl.conf file per ottimizzare i parametri del kernel

Sysctl è il comando utilizzato per modificare i parametri del kernel in fase di esecuzione.

# sysctl -a
# sysctl -A
# sysctl net.ipv4.conf.all.rp_filter
To load settings, enter: 
# sysctl -p

Copia e incolla il seguente contenuto in /etc/sysctl.conf

# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1

# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1

# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0

# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1

# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# Disable ICMP routing redirects
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv6.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv6.conf.all.send_redirects=0

# Disables the magic-sysrq key
kernel.sysrq = 0

# Turn off the tcp_sack
net.ipv4.tcp_sack = 0

# Turn off the tcp_timestamps
net.ipv4.tcp_timestamps = 0

# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1

# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1

7. Disattiva i servizi indesiderati

È necessario rimuovere tutti i servizi e i daemon indesiderati (servizi eseguiti in background) dall'avvio del sistema che vengono avviati all'avvio in livello di esecuzione 3 .

# chkconfig --list | grep '3:on'

Per disabilitare il servizio, inserisci:

# service serviceName stop
# chkconfig serviceName off

8. Richiedi l'autenticazione per la modalità utente singolo

Si consiglia di richiedere la password di root quando si accede alla modalità utente singolo. Apri /etc/sysconfig/init file e aggiungi la riga:

SINGLE=/sbin/sulogin

9. Security Enhanced Linux (SELinux)

SELinux è un insieme di regole di sicurezza che determinano quale processo può accedere a quale file, directory, porte, ecc. Ogni file, processo, directory e porta ha un'etichetta di sicurezza speciale chiamata contesti SELinux. Un contesto è semplicemente un nome utilizzato dalla politica di SELinux per determinare se un processo può accedere o meno a un file, una directory o una porta. Per impostazione predefinita, la politica non consente alcuna interazione, quindi regole esplicite garantiscono l'accesso. Se non esiste una regola di autorizzazione, non è consentito l'accesso.

getenforce comando ci dice in quale modalità si trova SELinux.

Possiamo cambiare la modalità SELinux in enforcing cambiando SELINUX=enforcing in /etc/sysconfig/selinux

Ci sono tre direttive in questo file come spiegato di seguito.

  • Applicazione: La politica di sicurezza di SELinux viene applicata.
  • Permissivo: SELinux stampa avvisi invece di imporre.
  • Disabilitato: SELinux è completamente disabilitato.

Puoi controllare lo stato di SELinux con il comando

# sestatus
SELinux status: disabled

Vedi che è disabilitato. Per abilitarlo, puoi usare

# setenforce enforcing

10. Imposta il firewall con iptables

iptables è un programma applicativo dello spazio utente che consente a un amministratore di sistema di configurare le tabelle fornite da Linux Kernel Firewall e le catene e le regole che memorizza.

a. Chiudi tutte le porte indesiderate

iptables -A INPUT -p tcp --dport PORT_NUMBER -j DROP

b. Blocca IP non validi

iptables -A INPUT -s IP_ADDRESS -j DROP

c. Blocca le connessioni a un'interfaccia di rete

Per bloccare le connessioni da uno specifico indirizzo IP a una specifica interfaccia di rete, usa il comando

# iptables -A INPUT -i ens0 -s 6.6.6.6 -j DROP

d. Elenca le regole di iptables

Puoi vedere tutte le regole di iptables con il comando

iptables -L -n -v

11. Verifica del file system

Tutti i file abilitati per i bit SUID/SGID possono essere utilizzati per attività dannose, quando l'eseguibile SUID/SGID presenta un problema di sicurezza. Tutti gli utenti locali o remoti possono utilizzare tale file.

a. Identifica i binari SUID e SGID indesiderati

find / \( -perm -4000 -o -perm -2000 \) -print
find / -path -prune -o -type f -perm +6000 -ls

b. Identifica i file scrivibili in tutto il mondo

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

c. Identifica file e cartelle orfani

find /dir -xdev \( -nouser -o -nogroup \) -print

12. Mantieni /boot in sola lettura

Il kernel Linux e i relativi file si trovano nella directory /boot che per impostazione predefinita è di lettura-scrittura. La modifica in sola lettura riduce il rischio di modifiche non autorizzate dei file di avvio critici. Dobbiamo modificare /etc/fstab file e inserisci la riga sottostante<

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

13. Nega tutti i wrapper TCP

I wrapper TCP possono fornire un metodo semplice e veloce per controllare l'accesso alle applicazioni ad essi collegate. Pertanto si consiglia di bloccare tutte le applicazioni non utilizzate e quindi di autorizzare solo le applicazioni che verranno utilizzate.

Ad esempio, bloccheremo tutte le applicazioni ma solo ssh autorizzato

echo "ALL:ALL" >> /etc/hosts.deny 
echo "sshd:ALL" >> /etc/hosts.allow

14. Blocca i cronjob per utenti non autorizzati

Cron viene utilizzato per automatizzare i lavori in un determinato momento. È possibile specificare chi può e chi non può essere in grado di 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 per consentire a un utente di eseguire cron add nel file cron.allow.

# echo ALL >>/etc/cron.deny

15. Proteggi il server dall'overflow del buffer

Un buffer overflow si verifica quando un programma o un processo tenta di scrivere più dati in un blocco di memoria di lunghezza fissa, o buffer, di quanti il ​​buffer sia allocato per contenere. È importante proteggere nuovamente il tuo server da questo attacco

a. Abilita ExecShield

Aiuta a prevenire la rottura dello stack. In genere, un exploit di overflow del buffer sovrascrive un indirizzo di ritorno in modo che una funzione torni a un indirizzo scelto dall'attaccante. Devi abilitare sul kernel corrente

sysctl -w kernel.exec-shield=1

Puoi anche aggiungere la riga seguente a /etc/sysctl.conf

kernel.exec-shield = 1

b. Verifica/Abilita ASLR

La randomizzazione del layout dello spazio degli indirizzi è una funzionalità di difesa per rendere più difficili gli overflow del buffer. ASLR rende difficile per l'attaccante trovare un indirizzo a cui saltare. Devi abilitare il posizionamento randomizzato della regione della memoria virtuale impostando il runtime per kernel.randomize_va_space

sysctl -q -n -w kernel.randomize_va_space=2

Aggiungi la riga sottostante a /etc/sysctl.conf se non esiste già

kernel.randomize_va_space = 2

Conclusione

Queste sono alcune delle considerazioni di base per i nuovi utenti che tentano di eseguire i propri server. Tieni presente che i cracker sono sempre un passo avanti; continuano a cercare eventuali buchi da hackerare nel tuo server. È importante riconoscere che, anche se è meglio tardi che mai, le misure di sicurezza diminuiscono di efficacia quanto più si attende per implementarle


Cent OS
  1. 7 passaggi per proteggere il tuo server Linux

  2. I 7 migliori consigli per rafforzare la sicurezza per CentOS 8 / RHEL 8 Server

  3. Primi passi dopo aver ottenuto un VPS CentOS

  4. Passaggi di sicurezza avanzati per Linux

  5. Comando Linux per attendere che un server SSH sia attivo

Rafforzamento del server Linux:migliori pratiche

Server FreeIPA su Alma Linux 8/CentOS 8

Come configurare la replica FreeIPA su Rocky Linux/Alma Linux/Centos 8

Passaggi per installare Spotify in Rocky Linux o CentOS 8

Come installare memcaed su CentOS 8 Linux

Graylog Monitoring Server su Ubuntu Linux per Monitoring Server/Services