GNU/Linux >> Linux Esercitazione >  >> Linux

Protezione di un sistema Linux ereditato

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.]


Linux
  1. Esempi di comandi resize2fs in Linux

  2. cronologia del tempo di attività di Linux

  3. Disabilitare le chiamate vssys in Linux

  4. Alternativa a `memory.size()` di R in Linux?

  5. Sistema di accodamento Linux

Comando Fsck in Linux

Linux è un sistema operativo o un kernel?

Introduzione di un amministratore di sistema Linux a cgroups

Documentare il tempo di attività del sistema in Linux

Ottimizzatore e monitoraggio del sistema Stacer Linux

Come elencare i servizi su Linux