GNU/Linux >> Linux Esercitazione >  >> Linux

Quattro comandi di semanage per mantenere SELinux in modalità enforcing

Per anni, SELinux ha aiutato a prevenire danni ai sistemi causati da exploit zero-day. Questo strumento è utile anche per l'isolamento della macchina virtuale ed è necessario per l'isolamento del contenitore. Eppure SELinux è ancora comunemente disabilitato o messo in modalità permissiva.

targeted di SELinux la politica è progettata per isolare vari domini di processo pur consentendo l'interazione tra i servizi secondo necessità. Sono necessari solo pochi comandi affinché un amministratore configuri un sistema per utilizzare questa politica con le proprie applicazioni personalizzate, mantenendo SELinux in modalità di applicazione.

[Ulteriori informazioni sull'utilizzo della documentazione della politica di SELinux qui.]

Il semanage Il comando viene utilizzato per regolare i contesti dei file, i contesti delle porte e i valori booleani. Se c'è ancora un conflitto con un particolare processo, quel dominio può essere messo in modalità permissiva fino al completamento di ulteriori indagini. Ciò lascia il resto del sistema protetto in modalità di esecuzione.

Con solo i quattro semanage comandi seguenti, la maggior parte dei sistemi può essere configurata in modo che le applicazioni personalizzate vengano eseguite con SELinux in modalità di applicazione.

Il semanage boolean comando

Il targeted la politica include molti booleani per abilitare e disabilitare insiemi di allow regole, partendo dal presupposto che i servizi abbiano più casi d'uso e vengano eseguiti in modo diverso in ciascun ambiente. L'uso dei booleani consente diversi set di regole per diversi casi d'uso:un server Web in un ambiente accademico potrebbe dover consentire agli studenti di pubblicare contenuti dalle loro directory home, mentre un sito aziendale rivolto al pubblico potrebbe dover rifiutare l'accesso a qualsiasi home utente directory, limitare gli eseguibili SSI e visualizzare i dati archiviati su una condivisione NFS.

Il httpd_selinux la pagina man descrive l'uso di tutti i booleani forniti per httpd dominio e un esempio setsebool comandi per abilitare in modo persistente ogni booleano. Un modo alternativo (e più recente) per vedere e modificare questi booleani è con il semanage boolean comando.

Il -l opzione elenca tutti i booleani nella politica caricata. Puoi quindi filtrare per una parola chiave:

$ sudo semanage boolean -l | grep httpd
httpd_anon_write               (off  ,  off)  Allow httpd to anon write
httpd_builtin_scripting        (on   ,   on)  Allow httpd to builtin scripting
httpd_can_check_spam           (off  ,  off)  Allow httpd to can check spam
httpd_can_connect_ftp          (off  ,  off)  Allow httpd to can connect ftp
httpd_can_connect_ldap         (off  ,  off)  Allow httpd to can connect ldap

Questo output include il nome del booleano, lo stato corrente e persistente del booleano e una breve descrizione di come viene utilizzato il booleano.

Per cambiare il booleano con semanage usa:

$ sudo semanage boolean -m --off httpd_ssi_exec 

Puoi anche elencare i booleani personalizzati localmente aggiungendo il -C opzione:

$ sudo semanage boolean -l -C
SELinux boolean                State  Default Description

httpd_ssi_exec                 (off  ,  off)  Allow httpd to ssi exec
virt_sandbox_use_all_caps      (on   ,   on)  Allow virt to sandbox use all caps
virt_use_nfs                   (on   ,   on)  Allow virt to use nfs

Le pagine man per ogni dominio SELinux hanno le descrizioni di tutti i booleani forniti per quei domini. Per ulteriori opzioni durante la modifica dei booleani di SELinux con semanage , vedi il semanage-boolean pagina man.

Puoi automatizzare questi semanage comandi con i relativi moduli e ruoli Ansible. Il modulo Ansible per semanage boolean è seboolean . Questo, e i relativi moduli descritti di seguito, vengono utilizzati dai ruoli forniti da linux-system-roles pacchetto in Fedora o rhel-system-roles pacchetto in Red Hat Enterprise Linux. Il pacchetto Red Hat è disponibile a partire da Red Hat Enterprise Linux 7.4 e può essere trovato nel repository "Extras".

Il semanage fcontext comando

Il targeted fornisce informazioni sul contesto dei file per i file dell'applicazione, inclusi i file di dati, di registro e di runtime, le posizioni alternative comuni e predefinite. Queste definizioni di contesto sono le mapping che il restorecon comando utilizzato per verificare o modificare il contesto del file.

Il semanage fcontext Il comando può essere utilizzato per elencare le definizioni del contesto del file e aggiungerne altre. Il -l l'opzione mostra tutti i contesti nella politica caricata. Puoi quindi filtrare per una parola chiave:

$ sudo semanage fcontext -l | grep sshd
/etc/rc\.d/init\.d/sshd                            regular file       system_u:object_r:sshd_initrc_exec_t:s0 
/etc/ssh/primes                                    regular file       system_u:object_r:sshd_key_t:s0 
/etc/ssh/ssh_host.*_key                            regular file       system_u:object_r:sshd_key_t:s0 
/etc/ssh/ssh_host.*_key\.pub                       regular file       system_u:object_r:sshd_key_t:s0 
/usr/lib/systemd/system/sshd-keygen.*              regular file       system_u:object_r:sshd_keygen_unit_file_t:s0 

Questo output include il modello di espressione regolare per i nomi file di destinazione, il tipo di file e il contesto file da assegnare al nome file corrispondente.

La relativa pagina man, in questo caso man sshd_selinux , include un elenco di file gestiti e una descrizione di ogni contesto di file disponibile per il dominio. Esistono anche comandi di esempio per specificare e applicare etichette alternative.

Ad esempio, se desideri memorizzare il sshd host keys in una sottodirectory separata, è possibile eseguire i seguenti due comandi:

$ sudo semanage fcontext -a -t sshd_key_t '/etc/ssh/keys(/.*)?'
$ sudo restorecon -r /etc/ssh/keys

In questo esempio, l'espressione regolare corrisponderà alla directory /etc/ssh/keys così come tutte le sottodirectory e i file trovati in /etc/ssh/keys directory.

Proprio come i booleani, puoi visualizzare qualsiasi contesto di file personalizzato localmente aggiungendo il -C opzione:

$ sudo semanage fcontext -l -C
SELinux fcontext                                   type               Context

/usr/share/dnfdaemon/dnfdaemon-system              all files          system_u:object_r:rpm_exec_t:s0 

Per ulteriori opzioni durante la modifica dei contesti dei file SELinux, vedere semanage-fcontext pagina man.

Puoi automatizzare il semanage fcontext comando con il sefcontext di Ansible modulo. Il restorecon il comando dovrà comunque essere eseguito con un modulo di comando separato. Vedi ansible-doc sefcontext per esempio. Il selinux  il ruolo di sistema include entrambe le attività.

La semanage port comando

Oltre ai contesti dei file, il targeted la politica definisce anche i contesti portuali. Proprio come con i booleani e i contesti di file, le pagine man specifiche del dominio elencano i tipi definiti e possono anche mostrare i comandi di esempio necessari per eseguire un servizio su una porta diversa.

Visualizza i contesti delle porte con:

$ sudo semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

Quando si esegue un servizio su una porta personalizzata, è necessario modificare il file di configurazione per il servizio e aggiungere anche una definizione di porta SELinux. Senza la definizione della porta, il servizio non si avvierà e registrerà un errore simile a "impossibile eseguire il binding alla porta".

Aggiungi una definizione di porta con:

$ sudo semanage port -a -t http_cache_port_t -p tcp 8010

Quando si specifica la porta, è necessario includere sia il protocollo che il numero di porta. Inoltre, è possibile definire un solo tipo per ogni protocollo e numero di porta. Per ulteriori opzioni durante la modifica dei contesti delle porte di SELinux, vedere semanage-port pagina man.

Puoi automatizzare la semanage-port comando con il seport Modulo Ansible.

Il semanage permissive comando

Invece di spostare l'intero sistema in modalità permissiva o, peggio, disabilitare completamente SELinux, è possibile mettere un singolo dominio in modalità permissiva. Un dominio in modalità permissiva consente tutte le azioni pur registrando eventuali rifiuti. Gli altri domini sul sistema rimangono in modalità di esecuzione, che registra e nega le azioni che non sono specificamente consentite.

Le pagine man per i domini comuni elencano i tipi di SELinux che possono essere messi in modalità permissiva.

Per elencare tutti i domini attualmente in modalità permissiva usa:

$ sudo semanage permissive -l 

All'installazione iniziale, è improbabile che ci siano domini in modalità permissiva.

Per mettere un dominio in modalità permissiva usa:

$ sudo semanage permissive -a squid_t

Il -d l'opzione elimina un dominio permissivo, abilitando così la modalità di applicazione per quel dominio.

Per ulteriori opzioni quando si impostano i domini in modalità permissiva, vedere il semanage-permissive pagina man.

Il selinux_permissive di Ansible può essere utilizzato per mettere un dominio in modalità permissiva. Vedi ansible-doc selinux_permissive per esempi.

I file

Tutto il semanage i comandi che aggiungono o modificano la configurazione dei criteri di destinazione memorizzano le informazioni in *local file sotto il /etc/selinux/targeted albero di directory. Questi file hanno tutti avvisi che non devono essere modificati direttamente ma vengono utilizzati per preservare la personalizzazione. Quando SELinux e i pacchetti delle politiche vengono aggiornati, questi file di personalizzazione locali vengono lasciati in posizione e applicati alla politica aggiornata.


Linux
  1. Oltre 10 comandi VI Linux con esempi

  2. Imposta la modalità di applicazione di SELinux con Ansible

  3. Come disabilitare o impostare SELinux in modalità permissiva

  4. Comandi dell'editor vi[m] del terminale Mac

  5. SElinux:come passare alla modalità permissiva senza riavviare?

Come disabilitare o disattivare SELinux su Rocky Linux 8

Comandi Vim di base che ogni utente Linux deve conoscere [cheat sheet gratuito incluso]

Tutti i comandi di base di SELINUX che devi conoscere

Modalità di salvataggio

Quattro comandi Linux completamente inutili

Comandi di base di vim (cheat sheet)