Dicono che comprare una casa o un'auto usata sia solo comprare i problemi di qualcun altro. Quali riparazioni del nastro adesivo si nascondono all'interno delle pareti o sotto il cofano? Senza conoscere la cronologia della manutenzione, è necessario indagare per evitare imprevisti.
Che ci sia un server canaglia, amministratori che lasciano l'azienda o acquisizioni e fusioni, a un certo punto del tuo viaggio di amministratore di sistema erediterai un server che non hai creato ma di cui sei improvvisamente responsabile. Questo articolo si concentrerà su alcune aree per iniziare a proteggere e acquisire familiarità con il nuovo sistema. L'adozione di un approccio di triage è solo un punto di partenza:la sicurezza fa parte del ciclo di vita continuo della gestione di un sistema.
Tieni presente che questo sistema ospita un'applicazione o un servizio che deve rimanere disponibile. Utilizza tutti i processi di gestione delle modifiche richiesti dalla tua azienda. Inoltre, acquisisci familiarità con le politiche di sicurezza della tua azienda e dove puoi fare riferimento ad esse per le impostazioni appropriate.
Backup
Avere sempre un buon piano di backup... e backup ripristinabili!
Avviare la revisione verificando che il backup del sistema venga eseguito regolarmente e che i backup siano ripristinabili. Non aspettare fino a quando non avrai bisogno del ripristino per scoprire che non funziona. I controlli di backup dovrebbero includere la conferma che anche tutti i file system remoti sono stati sottoposti a backup da qualche parte.
Alcune applicazioni e database richiedono un processo o un agente speciale per ottenere buoni backup, quindi questo è un buon momento per controllare che quei backup aggiuntivi vengano eseguiti correttamente. L'esecuzione di test di ripristino periodici che includono il test dell'applicazione per la funzionalità post-ripristino identifica eventuali lacune e problemi con i backup.
Potresti anche voler eseguire un rapido backup una tantum prima di continuare. Potrebbe non essere necessario un ripristino completo del sistema, ma se le regolazioni vanno terribilmente storte, questo backup fornisce uno stato di lavoro su cui ripiegare. Usa il controllo delle modifiche e documenta il tuo lavoro come un altro metodo per favorire un possibile recupero.
Account
I tuoi prossimi passi includono una revisione di chi ha accesso al sistema e come si autentica. Qualsiasi privilegio elevato, ad esempio tramite sudo
, anche da controllare. Conoscere le politiche di sicurezza dell'azienda come la scadenza delle password e le regole di complessità per verificare che vengano applicate. Questo articolo della Knowledge Base illustra i dettagli su come configurare i criteri per le password.
Nota: Assicurati di controllare se il sistema utilizza origini di identità come IDM, AD o LDAP. Al contrario, anche se il sistema utilizza un account esterno, gli account locali dovrebbero comunque essere rivisti.
Diamo un'occhiata a esempi specifici di problemi che devi considerare e come gestirli.
L'account dell'amministratore precedente
Poiché questo sistema è stato ereditato, valuta se l'amministratore precedente ha ancora bisogno di un account. In caso contrario, evita di eliminare il loro account. Bloccalo, invece. In questo modo si conservano le informazioni sull'account e si aiuta a prevenire il riutilizzo involontario dell'UID. Il usermod
comando può essere utilizzato per bloccare l'account:
$ sudo user mod -L <username>
Account ad accesso privilegiato
Esamina i sudoer per includere entrambi i sudoers
file (/etc/sudoers
) e la directory include (/etc/sudoers.d
). Verifica la presenza di eventuali incarichi in particolare che includono ALL
. Questo compito in genere include il gruppo wheel
. Per rimuovere utenti dai gruppi, utilizza groupmems
comando in questo modo:
$ sudo groupmems -g wheel -d <username>
Puoi anche elencare tutti i comandi consentiti sudo per qualsiasi utente come questo:
$ sudo -l -U <username>
Altri account
Se sono presenti account condivisi da più utenti, valuta la possibilità di forzare la modifica della password come parte di questo passaggio di consegne. Un approccio migliore agli account condivisi sarebbe sfruttare gruppi e ACL per le autorizzazioni dei file.
Gli account di servizio non dovrebbero avere accesso all'accesso come procedura consigliata. Questi account sono in genere bloccati o non hanno password e hanno una shell come /usr/sbin/nologin
. Se un account di servizio necessita di una shell interattiva, considera di concedere all'amministratore sudo su <accountname>
invece dell'accesso diretto.
Altri comandi che possono essere utili durante la revisione degli account sono chage
e last
. La chage
Il comando fornisce opzioni per visualizzare e regolare le impostazioni di scadenza dell'account. L'last
comando mostra le informazioni sugli accessi recenti.
Per visualizzare le informazioni sulla scadenza di un account:
$ sudo chage -l <username>
Per visualizzare gli ultimi cinque accessi per un account:
$ last <username> -5
Porti e servizi
La revisione dei servizi e delle porte in esecuzione consente di identificare quelli non necessari e che possono essere disabilitati. L'interruzione di questi servizi extra li rimuove anche come vettori di attacco.
Un modo rapido per mostrare cosa sta ascoltando è con il ss
comando. Questo esempio utilizza le opzioni per mostrare i socket in ascolto di TCP e UDP e include anche i dettagli del processo:
$ sudo ss -tulnp
L'esecuzione di questo comando su un server Web di esempio fornisce ciò che vedi qui:
Questo output mostra che sono presenti httpd
processi in ascolto sulle porte 80
, 443
, 8080
e 8443
. Altri processi di ascolto includono mariadb
(mysqld
) sulla porta 3306
, xvnc
sulla porta 5901
e vsftpd
sulla porta21
. Questi ultimi tre processi potrebbero sollevare alcune preoccupazioni.
Tutto ciò che non è necessario per il funzionamento dell'app o del sistema deve essere disabilitato. Se è necessario risalire a un PID a systemd
servizio, esegui systemctl status
:
$ systemctl status <PID>
Configurazioni di ricerca per i restanti servizi. Alcune applicazioni possono supportare ACL per aggiungere un altro livello di protezione. Sui sistemi multihomed, controlla se un servizio è necessario solo su un segmento di rete. L'Local Address:Port
la colonna mostra se il servizio è in ascolto su un IP specifico o su tutte le reti (*
, 0.0.0.0
o ::
).
Diamo un'occhiata ad altre cose che puoi fare per proteggere le tue porte e i tuoi servizi.
Porte
Scansione delle porte con uno strumento come nmap
mostra quali porte sono raggiungibili da un altro sistema. Questo strumento può essere utilizzato anche per verificare che i firewall funzionino come previsto. Hai diverse opzioni con nmap
, ma per una scansione rapida e semplice, devi solo fornire il nome host o l'indirizzo IP:
$ nmap <host-to-scan>
Servizi
Accedi ai tuoi servizi per vedere cosa è in esecuzione e necessario, poiché non tutti i servizi hanno un listener di rete attivo. Puoi ottenere un elenco dei servizi in esecuzione utilizzando --state
opzione con systemctl
, in questo modo:
$ systemctl --state=running -t s
Arrestare e disabilitare i servizi è semplice con systemctl
:
$ sudo systemctl stop <service name>
$ sudo systemctl disable <service name>
Inoltre, controlla eventuali servizi che non hanno funzionato e necessitano di manutenzione:
$ systemctl --state=failed
Oppure, se un servizio non è affatto necessario, disabilitalo con systemctl disable
.
SELinux
SELinux dovrebbe essere abilitato e impostato per applicare. Questo stato può essere verificato utilizzando sestatus
:
$ sestatus -v
Se necessario, puoi modificare SELinux in enforcing con il comando:
$ sudo setenforce Enforcing
Mantieni la modifica persistente andando su /etc/selinux/config
cercando SELINUX=disable
o SELINUX=permissive
, quindi cambia la riga in:
SELINUX=enforcing
La risoluzione dei problemi di SELinux va oltre questa guida, ma un buon riferimento di partenza è questo articolo della knowledge base.
Patch
La manutenzione e la protezione di un sistema include gli aggiornamenti. Per il server ereditato, iniziare controllando che il sistema sia sottoscritto e configurato per ricevere gli aggiornamenti. Su Red Hat Enterprise Linux (RHEL), utilizzare questo comando per mostrare le informazioni sul servizio di gestione delle sottoscrizioni:
$ sudo subscription-manager config --list
Il baseurl
elencati in [rhsm
] fornisce informazioni su ciò a cui è abbonato questo sistema. Se cdn.redhat.com
è elencato, il sistema è abbonato direttamente al Red Hat Content Delivery Network.
Questo esempio mostra un sistema sottoscritto direttamente a Red Hat. Se il baseurl
è un server satellite, controlla i repository sincronizzati lì per assicurarti che il contenuto sincronizzato sia aggiornato.
Conferma quali repository sono abilitati per il sistema con questo comando:
$ yum repolist --all
Questo output mostra i repository configurati e il loro stato. Se un repository è disabilitato, non verrà verificata la presenza di patch quando il sistema viene aggiornato.
Nota: A partire da RHEL 8, CentOS 8 e Fedora 22, yum
è stato sostituito con dnf
. Il yum
le opzioni sono quasi tutte le stesse di dnf
e yum
di per sé è solo un collegamento simbolico a dnf
.
Esecuzione di yum check-update
elencherà i pacchetti e le versioni disponibili per l'aggiornamento. La procedura consigliata si applica a tutte le patch disponibili, ma in alcuni casi potrebbero essere desiderate solo correzioni relative alla sicurezza. È possibile farlo utilizzando il --security
opzione.
Questa opzione può essere combinata con il check-update
per restituire un elenco di patch che forniscono sollievo da una vulnerabilità di sicurezza, ma salteranno qualsiasi altra cosa. Può anche essere incluso con l'update
comando.
$ yum check-update
Aggiungi il --security
opzione per limitare questo output agli aggiornamenti relativi alla sicurezza.
Per i sistemi Red Hat Enterprise Linux, puoi esaminare la criticità di ogni aggiornamento da Red Hat Satellite o dal portale del cliente. Ogni errata di sicurezza ha un rating (Critico, Importante, Moderato o Basso) in base al rischio potenziale. La valutazione ti aiuta a determinare quanto tempo è necessario pianificare eventuali aggiornamenti al sistema.
Quando sei pronto per applicare la patch, esegui yum update
comando:
$ sudo yum update
Rivedi l'output e premi Y quando richiesto.
Nota: Gli aggiornamenti del kernel richiedono un riavvio e questo articolo elenca quali altri pacchetti richiedono un riavvio per i sistemi RHEL. Il yum-utils
il pacchetto include anche un needs-restarting
utility che controlla se è necessario un riavvio.
Passaggi successivi
Le scansioni delle vulnerabilità e i controlli di conformità devono essere pianificati ed eseguiti quando il tempo lo consente. Due strumenti per esplorare questo argomento sono OpenVAS e OpenSCAP. Questi strumenti forniscono un'analisi più approfondita del sistema, segnalando eventuali vulnerabilità esistenti e lacune nella conformità. Se non hai mai utilizzato questi strumenti in precedenza, potrebbero volerci un po' di tempo per la configurazione e per familiarizzare con loro, ma dovrebbero diventare i tuoi strumenti di riferimento per proteggere tutti i sistemi che gestisci.
Chiuderlo
Essere incaricati di gestire un sistema costruito da qualcun altro può certamente intimidire. Durante questa revisione del tuo sistema ereditato, dovresti avere più familiarità con esso e avrai migliorato la sua sicurezza. Continua con le revisioni periodiche della sicurezza per tutti i tuoi sistemi come parte del ciclo di vita del sistema.
Assicurati di controllare gli articoli futuri mentre approfondiamo la scansione delle vulnerabilità e i processi STIG.
[Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente.]