Comando Semanage con esempi
SELinux aggiunge ulteriori miglioramenti alla sicurezza attraverso una serie di modifiche al kernel e strumenti per lo spazio utente. Questo è spesso utile per i server Web e i sistemi più esposti.
Come modifichi e modifichi le impostazioni di SELinux sul tuo sistema? In questo tutorial impariamo a conoscere il comando semanage in Linux con esempi utili.
Ordine di gestione
Semanage è uno strumento utilizzato per configurare alcuni elementi della politica SELinux senza modificare o ricompilare le fonti della politica. Può aiutare a regolare i contesti delle porte, i valori booleani e i contesti dei file, ecc.
Le configurazioni comunemente utilizzate includono la mappatura degli utenti Linux alle identità degli utenti SELinux e le mappature del contesto di sicurezza per le porte di rete, le interfacce, gli host e la mappatura del contesto dei file.
Sintassi
semanage {user|port|fcontext|boolean|permissive...} -l [-n]
Dove,
port – Gestisce le definizioni del tipo di interfaccia di rete.
fcontext – Gestisce le definizioni di mappatura del contesto dei file.
boolean – Gestisce i booleani per abilitare selettivamente la funzionalità.
permissive – Per come applicare il tipo di processo
Utente – Gestisci ruoli e livelli per gli utenti.
Installa SeManage
Semanage non è preinstallato sulla maggior parte delle distribuzioni Linux e devi installare questo strumento manualmente. Fa parte di policycoreutils-python (nelle distribuzioni Linux precedenti) e policycoreutils-python-utils (distribuzioni successive). Questi pacchetti contengono utilità di policy di SELinux di base.
Se semanage non è già installato sul tuo computer Linux, potresti ricevere il seguente errore semanage: comando non trovato.
RHEL 7 e versioni precedenti, digitare:
yum install policycoreutils-python
RHEL 8 e versioni successive, digitare:
yum install policycoreutils-python-utils
cappello
dnf install policycoreutils-python-utils
Ubuntu/Debian
sudo apt install policycoreutils-python-utils
Per confermare se semanage è installato, digitare:
semanage -h

Porto di Semenage
Per impostazione predefinita, SELinux consente solo ai servizi noti di collegarsi a porte note. Se vogliamo modificare un servizio per utilizzare una porta non predefinita, dovremo modificare il tipo di porta con il comando semanage port.
È possibile utilizzare questi comandi per elencare le porte esistenti, aggiungere una nuova porta, un intervallo di porte ed eliminare le porte esistenti.
Elenco dei porti
Per elencare tutte le porte sul tuo computer Linux, digita:
sudo semanage port -l
SELinux Port Type Proto Port Number
afs3_callback_port_t tcp 7001
afs3_callback_port_t udp 7001
afs_bos_port_t udp 7007
afs_fs_port_t tcp 2040
afs_fs_port_t udp 7000, 7005
afs_ka_port_t udp 7004
…
Creazione/aggiunta di porte
Per creare una nuova porta, specificare il protocollo e il numero di porta:
sudo semanage port -a -t http_port_t -p udp 7956
Per assegnare un intervallo di porte a una porta di rete specifica, digitare:
sudo semanage port -a -t http_port_t -p tcp 7957-7959
Output
sudo semanage port -lC
SELinux Port Type Proto Port Number
http_port_t tcp 7956, 7957-7959
Personalizza elenco
Utilizzare l’opzione -lC per elencare solo le personalizzazioni e verificare che la porta sia stata creata correttamente:
sudo semanage port -lC
SELinux Port Type Proto Port Number
http_port_t udp 7956
Ignora il porto
Utilizzare l’opzione -m per sostituire una porta esistente, altrimenti non è possibile utilizzare lo stesso numero di porta:
sudo semanage port -m -t unreserved_port_t -p tcp 7956
Elimina la porta
Utilizzare l’opzione -d per eliminare un record di porta:
sudo semanage port -d -t unreserved_port_t -p tcp 7956
Puoi anche utilizzare lo stesso comando per eliminare un intervallo di porte:
sudo semanage port -d -t unreserved_port_t -p tcp 7957-7959
Semanage Fcontext
Il comando Semanage Fcontext viene utilizzato per regolare il contesto SELinux dei file. Le modifiche vengono scritte nei file sotto /etc/selinux/targeted/contexts/files/
direttore. Comunemente utilizzato per aggiornare ed eliminare il contesto del file. I campi del contenuto di SELinux (etichetta SELinux) sono utente, ruolo, tipo e livello di sicurezza.
Devi correre restorecon -v file-name|directory-name
per attivare le modifiche.
Esempi:
1. Per elencare tutte le definizioni di mappatura del contesto del file sshd, digitare:
sudo semanage fcontext -l | grep sshd
/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
/run/sshd(/.*)? all files system_u:object_r:sshd_runtime_t:s0
/run/sshd.init.pid regular file system_u:object_r:sshd_runtime_t:s0
2. Aggiungere una nuova definizione di mappatura del contesto file per un file esistente, digitare:
sudo semanage fcontext -a -t samba_share_t /tmp/docs.txt
Dove l’opzione -a aggiunge un nuovo record e l’opzione -t definisce il tipo.
Questo aggiunge una nuova voce al file /etc/selinux/targeted/contexts/files/file_contexts.local.
Per modificare il tipo, digitare
restorecon -v /tmp/docs.txt
Per elencare le informazioni, eseguire:
ls -Z /tmp/docs.txt
3. Per modificare la directory e i relativi file, digitare il contesto:
sudo semanage fcontext -a -t httpd_sys_content_t "/site(/.*)?"
Qui cambiamo la directory e i file /site in httpd_sys_content_t.
4. Per eliminare il contesto utilizzare l’opzione -d.
Esempio
semanage fcontext -d "/site(/.*)?"
Per ripristinare l’impostazione predefinita di SELinux, eseguire il comando restorecon come utente root di Linux.
Semina permissiva
Il comando permissivo Semanage viene utilizzato per inserire un singolo dominio in modalità permissiva. Consente di aggiungere o eliminare moduli permissivi della policy SELinux.
Esempi
1. Utilizzare l’opzione -l per elencare tutti i moduli permissivi esistenti:
sudo semanage permissive -l
Builtin Permissive Types
Customized Permissive Types
httpd_t
sshd_t
2. Utilizzare l’opzione -a per spostare un dominio specifico in modalità permissiva:
sudo semanage permissive -a sshd_t
3. Utilizzare l’opzione -d per eliminare la modalità permissiva appena creata:
sudo semanage permissive -d sshd_t
libsemanage.semanage_direct_remove_key: Removing last permissive_sshd_t module (no other permissive_sshd_t module exists at another priority).
Sequenza booleana
Il comando semanage boolean viene utilizzato per regolare elementi specifici delle politiche di SELinux. Comunemente utilizzato per modificare parti della politica SELinux in fase di esecuzione.
Esempi
1. Utilizzare l’opzione -l per elencare tutti i valori booleani nella policy SELinux corrente:
sudo semanage boolean -l | grep httpd
allow_httpd_anon_write (off , off) Determine whether httpd can
modify public files used for public file transfer services. Directories/Files must be labeled public_content_rw_t.
allow_httpd_apcupsd_cgi_script_anon_write (off , off) Determine whether the script domain can modify public files used for public file transfer services. Directories/Files must be labeled public_content_rw_t.
allow_httpd_awstats_script_anon_write (off , off) Determine whether the script domain can modify public files used for public file transfer services. Directories/Files must be labeled public_content_rw_t.
2. Utilizzare l’opzione -m per modificare il valore booleano:
sudo semanage boolean -m --off sshd
3. Utilizzare l’opzione -lC per elencare tutti i valori booleani personalizzati localmente:
sudo semanage boolean -lC
Conclusione
In questo tutorial, abbiamo imparato come utilizzare il comando semanage su distribuzioni Linux basate su RPM. L’impostazione predefinita di SELinux è deny. Quindi, è necessario gestire le politiche di sicurezza per un uso raffinato del software.
Grazie per aver letto, per favore lascia i tuoi suggerimenti e feedback nella sezione commenti qui sotto.
Sfoglia il sito all-in-one di Comandi Linux per più apprendimento.