Logo AdamantioAdamantio.netlogotoplogoright
Get Firefox!
logobottom
 Registrati
 Forum
Ricerche Downloads Profilo Utente Argomenti
    
Sommario
Utenti e Visitatori

Server Date/Time
Date: 10 Mar 2010
Time: 08:26:06
GMT: +0100

 Hits:
Today: 472
Overall: 8454655

Iscritti:
Ultimo: aleire-balenciaga
Iscritti oggi: 0
Iscritti ieri: 0
Complessivi: 455

Persone Online:
Visitatori: 12
Iscritti: 0
Totale: 12
Effemeridi
In questo giorno...
1628
Nasce il fisiologo italiano Marcello Malpighi.
1940
Nasce Chuck Norris, atleta, karateka, attore.
Cerca sul sito


Fedora Core 3 SELinux FAQ

Fedora Core 3 SELinux FAQ

Karsten Wade

Sono garatiti i permessi di copiare, distribuire, e/o modificare questo documento sotto i termini della GNU Free Documentation License, Versione 1.2 o qualsiasi successiva versione pubblicata dalla Free Software Foundation; con nessuna Invariant Sections, nessuna Front-Cover Texts, e nessuna Back-Cover Texts.  Una copia della licenza è disponibile su http://www.gnu.org/licenses/fdl.html.

Questo documento può essere copiato e distribuito in qualsiasi media, sia commerciale che non commerciale, premettendo che la GNU Free Documentation License (FDL), le note sul copyright, e le note di licenza che dicono che la GNU FDL che si applicano al documento sono riprodotte in tutte le copie, e che tu non abbia aggiunto nessun altra condizione di sorta a quelle della GNU FDL.

Garrett LeSage hanno creato le grafiche di ammonizione (note, tip, important, caution, e warning). Tommy Reynolds ha creato la grafica di callout. Tutte queste possono essere liberamente distribuite con la documentazione prodotta per il Fedora Project.

selinux-faq-1.3-8 (2005-01-20-T16:20-0800)

Red Hat ed il logo Red Hat "Shadow Man" sono marchi registrati di Red Hat, Inc. negli Stati United ed in altri paesi.

Tutti gli altri marchi e copyrights a cui si fa riferimento sono proprietà dei rispettivi proprietari.


1. SELinux Note e FAQ

Le informazioni in questa FAQ sono pregevoli per coloro che sono nuovi a SELinux. Il loro valore è apprezzabile anche se siete nuovi alle ultime implementazioni di SELinux in Fedora Core, poichè alcuni comportamenti potrebbero essere differenti da come sapete.

[Nota] Questa FAQ è specifica per Fedora Core 3

Se state cercando le FAQ per Fedora Core 2, fate riferimento a http://fedora.redhat.com/docs/selinux-faq-fc2/.

Per maggiori informazioni su come funziona SELinux, come usare SELinux su distribuzioni Linux generiche e specifiche, e come scrivere policy, queste sono risorse utili:

Lista Link Esterni

[Suggerimento] Fare cambiamenti/aggiunte alla Fedora SELinux FAQ

Questa FAQ è disponibile su http://fedora.redhat.com/docs/selinux-faq-fc3/.

Per modifiche o aggiunte alle Fedora SELinux FAQ, usate questo bugzilla template, che precompila la maggior parte del rapporto d'errore. Le patches dovranno essere un diff -u rispetto all'XML, disponibile dal CVS (fate riferimento a http://fedora.redhat.com/projects/docs/ per dettagli su come ottenere il modulo fedora-docs/selinux-faq via CVS anonimo; puoi avere solo il modulo fedors-docs/selinux-faq se non vuoi l'intero albero fedora-dcs.) Altrimenti, semplice testo che mostri prima e dopo è sufficiente.

Per avere una lista di tutti i rapporti d'errore inerenti questa FAQ, fate riferimento a https://bugzilla.redhat.com/bugzilla/showdependencytree.cgi?id=118757.

1.1.  Comprendere SELinux
D: Cos'è SELinux?
D: Cos'è una policy SELinux?
D: Cos'è la policy targeted di SELinux?
D: Che demoni sono protetti dalla targeted policy?
D: Che demoni aggiungerete alla targeted policy? Che ne dite di Sendmail, Postfix, MySQL, o PostgreSQL?
D: E la policy strict? Funzionerà comunque?
D: Cosa sono i file contexts?
D: Come posso vedere il contesto di sicurezza di un file, un utente, o un processo?
D: Che differenza c'è fra un dominio ed un tipo?
1.2.  Controllare SELinux
D: Come installo o non installo SELinux?
D: Come cambio la policy che sto usando?
D: Come eseguo il back up dei files da un file system SELinux?
D: Come posso installare la policy strict per default con il kickstart?
D: Come abilito/disabilito la protezione SELinux per uno specifico demone sotto la policy targeted?
D: Come faccio funzionare una directory utente public_html sotto SELinux?
D: Come disabilito SELinux all'avvio?
D: Come pongo l'enforcing on/off all'avvio?
D: Come disabilito temporaneamente la modalità di enforcing senza dover riavviare?
D: Come pongo l'auditing alle system-call on/off all'avvio?
D: Come disabilito temporaneamente l'auditing alle system-call senza dover riavviare?
D: Come ottengo informazioni sullo status della mia installazione SELinux?
1.3.  Risoluzione dei problemi
D: La mia applicazione non funziona come mi aspettavo e sto vedendo dei messaggi avc: denied, come risolvo?
D: Ho installato Fedora Core su un sistema con una partizione /home già esistente, ed ora non posso fare il log in.
D: Dopo aver rietichettato la mia /home usando setfiles o fixfiles, sarò ancora in grado di leggere /home con un sistema con SELinux non abilitato?
D: Come posso condividere directories usando NFS tra Fedora Core e sistemi non-SELinux
D: Come posso creare un nuovo account utente Linux con la home directory utente avente il contesto appropriato?
D: Tutte le altre documentazioni su SELinux affermano che il comando su cambierà solamente l'identità Linux e non il ruolo di sicurezza.
D: Sto avendo alcune difficoltà con errori avc che riempiono i miei logs per un programma in particolare. Come scelgo escluderne l'audit d'accesso?
D: Anche avviando in modalità permissive, ho un gran numero di messaggi avc denied.
D: Ho un particolare diniego di premesso solo quando SELinux è in modalità enforcing, ma non vedo nessun messaggio di audit in /var/log/messages. Come posso identificare la causa di questi dinieghi silenziosi?
D: Perchè non vedo l'output quando eseguo certi demoni in modalità debug o interattiva?
D: Quando eseguo un upgrade del pacchetto delle policy (per esempio, usando yum), cosa succede con la policy; è automaticamente aggiornata?
D: Se la policy rilasciata con il pacchetto di un applicazione cambia in modo da richiedere la rietichettatura, potrà RPM gestire la rietichettatura dei files posseduti dal pacchetto?
D: Che relazioni intercorrono fra il pacchetto policy e policy source?
D: Perchè i files /etc/selinux/policyname/policy/policy.<version> e /etc/selinux/policyname/src/policy/policy.<version> sono differenti (sizes, md5sums, dates)?
D: I nuovi pacchetti policy potranno disabilitare il mio sistema?
D: Come posso aiutare a scrivere una policy?
D: La mia console è inondata da messaggi, come li fermo?
D: Posso provare la policy predefinita senza installare il pacchetto di sorgenti della policy?
D: Sto avendo difficoltà nel far funzionare un applicazione KDE sotto SELinux.
D: Perchè SELINUX=disabled non funziona per me?
1.4.  Implementare SELinux
D: Che file systems posso usare per SELinux?
D: Come incide SELinux sulle prestazioni del sistema?
D: Di che tipo di implementazioni/applicazioni/sistemi, etc. dovrò tener conto per l'uso con SELinux?
D: Che effetto ha SELinux sulle applicazioni di terze parti?

1.1. Comprendere SELinux

D: Cos'è SELinux?
D: Cos'è una policy SELinux?
D: Cos'è la policy targeted di SELinux?
D: Che demoni sono protetti dalla targeted policy?
D: Che demoni aggiungerete alla targeted policy? Che ne dite di Sendmail, Postfix, MySQL, o PostgreSQL?
D: E la policy strict? Funzionerà comunque?
D: Cosa sono i file contexts?
D: Come posso vedere il contesto di sicurezza di un file, un utente, o un processo?
D: Che differenza c'è fra un dominio ed un tipo?
D:

Cos'è SELinux?

R:

SELinux (Security-Enhanced Linux) in Fedora Core è un implementazione del mandatory access control nel kernel di Linux che usa il Linux Security Modules (LSM) framework. La sicurezza standard di Linux è basata su un modello definito come discretionary access control.

  • Discretionary access control (DAC) - questo è il modello base della sicurezza di Linux, e non fornisce protezione da software corrotto o malevolo eseguito come utente normale o root. Gli utenti possono assegnare rischiosi livelli di accesso ai files che possiedono.

  • Mandatory access control (MAC) - pieno controllo su tutte le iterazioni del software. Policy definite amministrativamente controllano da vicino le iterazioni fra utenti e processi con il sistema, e forniscono protezione da software corrotto o malevolo eseguito sotto qualsiasi utente.

In un modello DAC, i file e le risorse decisionali sono basate solamente sull'identità utente e il proprietario degli oggetti.  Ogni utente e programma eseguito da quell'utente ha completa discrezione sugli oggetti dell'utente. Software malizioso o difettoso può fare qualsiasi cosa con i files e le risorse controllate attraverso l'utente che ha avviato i processi. Se l'utente è il super-user o l'applicazione è setuid o setgid root, il processo può avere un livello di controllo root sull'intero file system.

Un sistema MAC non soffre di questi problemi.  Primo, puoi definire-amministrativamente una policy di sicurezza su tutti i processi ed oggetti.  Secondo, puoi controllare tutti i processi e gli oggetti, nel caso di SELinux mediante il kernel.  Terzo, le decisioni sono basate su tutte le informazioni di sicurezza rilevanti disponibili, e non solo sulla identità utente autenticata.

Il MAC sotto SELinux permette di fornire permessi granulari per tutti i soggetti (utenti, programmi, processi) ed oggetti (files, devices). In pratica, pensa ai soggetti come processi, ed gli oggetti come lo scopo di un operazione di un processo. Puoi garantire con sicurezza ad un processo solo i permessi che gli occorrono per eseguire la sua funzione, e niente di più.

L'implementazione di SELinux usa un role-based access control (RBAC), che fornisce un astrazione di controllo a livello-utente basata su ruoli, e sui Type Enforcement® (TE). TE usa una tabella (matrice) per manipolare i controlli di accesso, applicando le regole della policy basate sui tipi di processi ed oggetti.  I tipi di processo sono chiamati domini, ed un riferimento incrociato sulla matrice dei domini dei processi e del tipo degli oggetti definisce la loro interazione. Questo può fornire un controllo estremamente granulare per gli attori in un sistema Linux.

D:

Cos'è una policy SELinux?

R:

La policy SELinux descrive i permessi di accesso per tutti i soggetti e gli oggetti, esempio, l'intero sistema degli utenti, programmi, e processi ed i files ed i devices su cui agiscono. La policy di Fedora Core è contenuta in un pacchetto, con una pacchetto sorgente associato. Attualmente i pacchetti che contengono le policy sono:

  • selinux-policy-strict-<version-arch>.rpm and selinux-policy-strict-sources-<version-arch>.rpm

  • selinux-policy-targeted-<version-arch>.rpm and selinux-policy-targeted-sources-<version-arch>.rpm

I sorgenti delle policy risiedono in /etc/selinux/policyname/src/policy, quando sono installati, ed i files binari delle policy in /etc/selinux/policyname/policy. Il sorgente delle policy non è necessario per le installazioni ultra-minimali. La policy per i tipi ed i domini è configurata separatamente dal contesto di sicurezza per i soggetti e gli oggetti.

D:

Cos'è la policy targeted di SELinux?

R:

Inizialmente, quando SELinux fu incluso in Fedora Core, la policy strict di NSA fu applicata. A scopo di prova, ciò aiutò a trovare centinaia di problemi nella strict policy. In seguito, è divenne ovvio che applicare una singola strict policy ai molti ambienti degli utenti Fedora non era fattibile. Amministrare una singola strict policy per qualsiasi cosa diversa dall'installazione standard avrebbe richiesto un esperienza locale superiore.

A questo punto, gli sviluppatori SELinux rividero le loro scelte, e decisero di adottare una strategia differente. Fu deciso di creare una policy che puntasse a bloccare specifici demoni, specialmente quelli più vulnerabili agli attacchi o più devastanti per il sistema se corrotti o compromessi. Al resto del sistema è consentita l'esecuzione come fosse sotto la sicurezza standard di Linux, esempio, funzionare lo stesso se SELinux è abilitato o meno.

Sotto la policy targeted, molti processi sono eseguiti nel dominio unconfined_t. Come implica il nome, questi processi non sono per lo più confinati dalla policy SELinux. Questi sono comunque ancora governati dalla sicurezza standard di Linux/UNIX.

Specifici demoni di rete hanno policy scritte per loro, e la policy unconfined_t transita su queste policies quando l'applicazione viene avviata. Per esempio, al boot del sistema, init viene eseguito sotto la policy unconfined_t, ma quando viene avviato named, è transitato sotto il dominio named_t ed è bloccato dalla policy appropriata.

Per maggiori informazioni sull'abilitazione e disabilitazione delle policy targeted per ogni demone specifico, fate riferimento a How to use system-config-securitylevel.

D:

Che demoni sono protetti dalla targeted policy?

R:

Attualmente, la lista dei demoni è dhcpd, httpd (apache.te), named, nscd, ntpd, portmap, snmpd, squid, and syslogd. I files di policy per questi demoni si trovano in /etc/selinux/targeted/src/policy/domains/program.

In futuro, molti demoni saranno aggiunti alla policy di protezione targeted.

D:

Che demoni aggiungerete alla targeted policy? Che ne dite di Sendmail, Postfix, MySQL, o PostgreSQL?

R:

Gli sviluppatori di SELinux vorrebbero aggiungere eventualmente ftp e gli agenti di posta elettronica alla targeted policy. Ad esempio, vsftpd potrebbe funzionare in modo simile a login: dopo il log-in, un nuovo processo è eseguito sotto il contesto dell'utente (contesto utente reale o anonimo).

Un problema con gli agenti di posta elettronica è che hanno spesso hanno bisogno di manipolare files nelle home directory utente. Un obbiettivo della targeted policy è quello di evitare problemi di etichettatura nelle home directory degli utenti. Ci si sta ancora lavorando su.

D:

E la policy strict? Funzionerà comunque?

R:

La policy strict su Fedora Core funziona. La sfida è con gli ambienti unici di utenti differenti. Per farla funzionare nel tuo ambiente, avrai bisogno di aggiustare sia la policy che i tuoi sistemi.

Per aiutare a rendere semplice l'uso della strict policy, gli sviluppatori di SELinux hanno lavorato sul rendere il cambiamento da un policy all'altra semplice. Per esempio, system-config-securitylevel fa una rietichettatura negli scripts di avvio.

D:

Cosa sono i file contexts?

R:

I file contexts sono usati dal comando setfiles per rendere persistenti le etichette che descrivono il contesto di sicurezza per un file o una directory.

Fedora Core è rilasciato con lo script fixfiles che supporta tre opzioni: check, restore, e relabel. Questo permette agli utenti di rietichettare il file system senza aver installato il pacchetto selinux-policy-targeted-sources. L'uso della linea di comando è molto più amichevole rispetto al comando setfiles standard.

D:

Come posso vedere il contesto di sicurezza di un file, un utente, o un processo?

R:

La nuova opzione -Z è il metodo più immediato per mostrare il contesto di un soggetto o di un oggetto:

ls -alZ file.foo 
id -Z 
ps -eZ
D:

Che differenza c'è fra un dominio ed un tipo?

R:

Non c'è differenza fra un dominio ed un tipo, comunque il dominio è qualche volta usato per riferirsi al tipo di un processo. L'uso del dominio in questo modo discende dal tradizionale modello TE, dove i domini ed i tipi sono separati.

1.2. Controllare SELinux

D: Come installo o non installo SELinux?
D: Come cambio la policy che sto usando?
D: Come eseguo il back up dei files da un file system SELinux?
D: Come posso installare la policy strict per default con il kickstart?
D: Come abilito/disabilito la protezione SELinux per uno specifico demone sotto la policy targeted?
D: Come faccio funzionare una directory utente public_html sotto SELinux?
D: Come disabilito SELinux all'avvio?
D: Come pongo l'enforcing on/off all'avvio?
D: Come disabilito temporaneamente la modalità di enforcing senza dover riavviare?
D: Come pongo l'auditing alle system-call on/off all'avvio?
D: Come disabilito temporaneamente l'auditing alle system-call senza dover riavviare?
D: Come ottengo informazioni sullo status della mia installazione SELinux?
D:

Come installo o non installo SELinux?

R:

Il programma di installazione si comporta basandosi sulle scelte che fai nella schermata di Configurazione del Firewall. Di base la policy applicata è la targeted, che per scelta predefinita è attiva.

D:

Come cambio la policy che sto usando?

R:
[Attenzione] Cambiare policy non è una cosa da prendere alla leggera.

A meno che tu non stia provando una nuova policy su una macchina test a scopo di ricerca, dovresti seriamente considerare la situazione prima di cambiare policy su un sistema in produzione.

Il modo di cambiare policy è semplice. Questo è un metodo abbastanza sicuro, ma deve prima essere provato su un sistema test.

Un metodo è quello di usare system-config-securitylevel per cambiare la policy e impostare il filesystem da rietichettare.

La seguente è la procedura manuale:

  1. Edita /etc/selinux/config e cambia il tipo di policy in SELINUXTYPE=policyname.

  2. Per essere sicuri che tu possa avere un sistema funzionante dopo un reboot, setta il modo a SELINUX=permissive. In questo modo SELinux sarà eseguito sotto la corretta policy, ma ti permetterà di fare il login se c'è qualche problema, tipo il contesto di un file non correttamente etichettato.

  3. Di agli init scripts di rietichettare il sistema al riavvio con il comando touch /.autorelabel.

  4. Riavvia il sistema.  Un riavvio pulito sotto la nuova policy permetterà a tutti i processi del sistema di avviarsi nel contesto appropriato, e rivelare qualsiasi problema nel cambiamento di policy.

  5. Conferma che i tuoi cambiamenti abbiano effetto con il comando sestatus -v.  Con il nuovo sistema avviato in modalità permissive, controlla /var/log/messages per i messaggi avc: denied.  Questi possono indicare un problema che deve essere risolto affinchè il sistema possa funzionare senza difficoltà sotto la nuova policy.

  6. Quando sei soddisfatto che il sistema sia stabile sotto la nuova policy, abilita l'enforcing cambiando SELINUX=enforcing.  Puoi sia riavviare che eseguire setenforce 1 per passare in enforcing in tempo reale.

D:

Come eseguo il back up dei files da un file system SELinux?

R:

Puoi usare l'utilità star, che supporta gli attributi estesi che contengono le etichette dei contesti di sicurezza. Specifica il formato -xattr e exustar quando creai gli archivi.

ls -Z /var/log/maillog
-rw-------  root   root    system_u:object_r:var_log_t   /var/log/maillog
cd /var/log
star -xattr -H=exustar -c -f maillog.star ./maillog*
[Attenzione] I percorsi assoluti possono sovrascrivere i dati esistenti

Se usi un percorso assoluto, come /var/log/maillog, quando decompatti l'archivio con star -c -f, i files verranno ripristinati nello stesso percorso in cui erano stati archiviati.  Il file maillog tenterà di scriverli in /var/log/maillog.  Potresti ricevere un avviso da star se i files che stanno per essere sovrascritti hanno una data più recente, ma non potrai contare su questo comportamento.

Considera attentamente come costruire gli argomenti d'archiviazione.

D:

Come posso installare la policy strict per default con il kickstart?

R:
  1. Sotto la sezione %packages, aggiungete selinux-policy-strict.

  2. Sotto la sezione %post, aggiungete quanto segue:

    lokkit -q --selinuxtype=strict
    touch /.autorelabel
    
D:

Come abilito/disabilito la protezione SELinux per uno specifico demone sotto la policy targeted?

R:

Usa system-config-securitylevel per controllare i valori Booleani di specifici demoni. Per esempio, se ritieni di aver bisogno di disabilitare SELinux per Apache per eseguirlo correttamente nel tuo ambiente, puoi disabilitare il valore in system-config-securitylevel. Questo disattiva la transizione della policy definita in apache.te, lasciando rimanere httpd sotto la regolare sicurezza Linux.

D:

Come faccio funzionare una directory utente public_html sotto SELinux?

R:

Questo processo presume che hai abilitato le directories HTML pubbliche per gli utenti nella configurazione HTTP di Apache (/etc/httpd/conf/httpd.conf).  Questo processo copre solo il servizio di contenuti Web statici.  Per maggiori informazioni su Apache HTTP e SELinux, riferitevi a http://fedora.redhat.com/docs/selinux-apache-fc3/.

  1. Se non l'hai già, avrai necessità di creare la directory public_html e popolarla con i files e le cartelle che dovranno essere servite.

    cd ~
    mkdir public_html
    cp /path/to/content ~/public_html
    
  2. A questo punto, httpd è configurato per servire i contenuti, ma tu continuerai a ricevere un errore 403 forbidden.  Questo poichè ad httpd non è consentito di leggere i tipi di sicurezza per le directory ed i files che vengono creati nelle directory home degli utenti.  Per risolvere questo, cambiate i contesti di sicurezza della cartella e dei suoi contenuti ricorsivamente usando l'opzione -R:

    ls -Z -d public_html/
    drwxrwxr-x  auser    auser    user_u:object_r:user_home_t      public_html
    chcon -R -t httpd_user_content_t public_html/
    ls -Z -d public_html/
    drwxrwxr-x  auser    auser    user_u:object_r:httpd_user_content_t public_html/
    ls -Z public_html/
    -rw-rw-r--  auser    auser    user_u:object_r:httpd_user_content_t bar.html
    -rw-rw-r--  auser    auser    user_u:object_r:httpd_user_content_t baz.html
    -rw-rw-r--  auser    auser    user_u:object_r:httpd_user_content_t foo.html
    

    Potrai notare qualche tempo dopo che il campo user, impostato a user_u, è cambiato in system_u.  Ciò non avrà effetto su come funziona la policy targeted; il campo che conta è il campo tipo.

  3. Adesso sarai in grado di servire pagine web statiche. Se continuerai ad avere errori, controlla di vedere che la Booleana che abilita le home directories utente sia abilitata.  Questo può essere impostato usando system-config-securitylevel, sotto il tab SELinux all'interno dell'area Modifica la Policy SELinux, abilitando Permetti ad HTTPD di leggere le home directories.  I cambiamenti avranno effetto immediato.

D:

Come disabilito SELinux all'avvio?

R:

Aggiungi selinux=0 alla linea di comando del tuo kernel.

[Attenzione] Sta attento quando disabiliti SELinux

Sta veramente attento nell'usare questa opzione.  Se esegui l'avvio con selinux=0, ogni file che hai creato mentre SELinux è disabilitato non avrà le informazioni di contesto SELinux. Dovrai come minimo rietichettare il file system, ed è possibile che non sarai in grado di avviare il sistema con selinux=1, necessitando un avvio in modalità single-user per il ripristino.

Come alternativa a selinux=0, prova ad usare SELINUX=disabled in /etc/selinux/config.

D:

Come pongo l'enforcing on/off all'avvio?

R:

Puoi specificare la modalità SELinux usando il file di configurazione /etc/sysconfig/selinux.

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

Impostando il valore su enforcing è uguale ad aggiungere enforcing=1 alla linea di comando quando avvii il kernel per attivare l'enforcing, mentre impostando il valore su permissive è come aggiungere enforcing=0 per disattivare l'enforcing. Nota che il parametro della linea di comando del kernel prevarica il file di configurazione.

Comunque, impostare il valore su disabled non è lo stesso di selinux=0 nel parametro di avvio del kernel.  Invece di disabilitare pienamente SELinux nel kernel, l'impostazione disabled disabilita l'enforcing e salta il caricamento della policy.

D:

Come disabilito temporaneamente la modalità di enforcing senza dover riavviare?

R:

Questa situazione solitamente insorge quando non puoi eseguire un operazione che viene prevenuta dalla policy.  Esegui il comando setenforce 0 per disabilitare la modalità di enforcing in tempo reale.  Quando hai terminato, esegui setenforce 1 per riattivare l'enforcing.

[Nota] E' richiesto il ruolo sysadm_r

Devi lanciare il comando setenforce con il ruolo sysadm_r; per farlo, usa il comando newrole. Alternativamente, se cambi su root usando su -, otterrai il ruolo sysadm_r automaticamente.

D:

Come pongo l'auditing alle system-call on/off all'avvio?

R:

Aggiungi audit=1 alla linea di comando del kernel per attivare l'auditing alle system-call.  Aggiungi audit=0 alla linea di comando del kernel per disattivare l'auditing alle system-call.

L'auditing alle system-call è disattivato per impostazione predefinita. Quando è attivato, fornisce informazioni sulle system-call che erano in esecuzione quando SELinux genera un messaggio denied.  Questo può essere d'aiuto quando fai il debugging della policy.

D:

Come disabilito temporaneamente l'auditing alle system-call senza dover riavviare?

R:

Questa opzione al momento non è supportata. In futuro, verrà fornita un utilità per amministrare l'auditing.

D:

Come ottengo informazioni sullo status della mia installazione SELinux?

R:

Come root, esegui il comando /usr/sbin/sestatus -v.  Per maggiori informazioni, fa riferimento alla pagina di manuale di sestatus(8).

1.3. Risoluzione dei problemi

D: La mia applicazione non funziona come mi aspettavo e sto vedendo dei messaggi avc: denied, come risolvo?
D: Ho installato Fedora Core su un sistema con una partizione /home già esistente, ed ora non posso fare il log in.
D: Dopo aver rietichettato la mia /home usando setfiles o fixfiles, sarò ancora in grado di leggere /home con un sistema con SELinux non abilitato?
D: Come posso condividere directories usando NFS tra Fedora Core e sistemi non-SELinux
D: Come posso creare un nuovo account utente Linux con la home directory utente avente il contesto appropriato?
D: Tutte le altre documentazioni su SELinux affermano che il comando su cambierà solamente l'identità Linux e non il ruolo di sicurezza.
D: Sto avendo alcune difficoltà con errori avc che riempiono i miei logs per un programma in particolare. Come scelgo escluderne l'audit d'accesso?
D: Anche avviando in modalità permissive, ho un gran numero di messaggi avc denied.
D: Ho un particolare diniego di premesso solo quando SELinux è in modalità enforcing, ma non vedo nessun messaggio di audit in /var/log/messages. Come posso identificare la causa di questi dinieghi silenziosi?
D: Perchè non vedo l'output quando eseguo certi demoni in modalità debug o interattiva?
D: Quando eseguo un upgrade del pacchetto delle policy (per esempio, usando yum), cosa succede con la policy; è automaticamente aggiornata?
D: Se la policy rilasciata con il pacchetto di un applicazione cambia in modo da richiedere la rietichettatura, potrà RPM gestire la rietichettatura dei files posseduti dal pacchetto?
D: Che relazioni intercorrono fra il pacchetto policy e policy source?
D: Perchè i files /etc/selinux/policyname/policy/policy.<version> e /etc/selinux/policyname/src/policy/policy.<version> sono differenti (sizes, md5sums, dates)?
D: I nuovi pacchetti policy potranno disabilitare il mio sistema?
D: Come posso aiutare a scrivere una policy?
D: La mia console è inondata da messaggi, come li fermo?
D: Posso provare la policy predefinita senza installare il pacchetto di sorgenti della policy?
D: Sto avendo difficoltà nel far funzionare un applicazione KDE sotto SELinux.
D: Perchè SELINUX=disabled non funziona per me?
D:

La mia applicazione non funziona come mi aspettavo e sto vedendo dei messaggi avc: denied, come risolvo?

R:

Questo messaggio vuol dire che l'attuale policy SELinux non permette all'applicazione di fare qualcosa. C'è un numero di ragioni per cui ciò può succedere.

Primo, uno dei files a cui l'applicazione prova ad accedere potrebbe essere etichettato male.  Se il messaggio AVC si riferisce ad un file specifico, controlla la sua etichetta corrente con ls -alZ /path/to/file.  Se vi sembra sbagliata, potrete provare ad usare restorecon -v /path/to/file. Se hai un gran numero di dinieghi relativi a files, potresti voler usare fixfiles relabel, o eseguire restorecon con l'opzione -R per rietichettare recursivamente il percorso di una directory.

Altre volte, i dinieghi possono essere dovuti ad un cambiamento nella configurazione del programma non ammesso dalla policy. Per esempio, se vuoi far si che Apache ascolti anche sulla port 8800, questo richiederà un cambiamento nella policy di sicurezza, apache.te. Vedi Lista Link Esterni per maggiori informazioni sulla scrittura delle policy.

Se hai difficoltà nel far funzionare un'applicazione specifica come Apache, vedi How to use system-config-securitylevel to work, see How to use system-config-securitylevel per sapere come disabilitare l'enforcement solo per quell'applicazione.

D:

Ho installato Fedora Core su un sistema con una partizione /home già esistente, ed ora non posso fare il log in.

R:

La tua partizione /home non è etichettata correttamente.  Puoi facilmente risolvere questo problema in due modi.

Se vuoi solamente rietichettare /home ricorsivamente:

/sbin/restorecon -v -R /home

Se vuoi essere sicuro che non ci siano altri files non correttamente rietichettati, puoi rietichettare l'intero filesystem:

/sbin/fixfiles relabel

Dovrai avere installato il pacchetto policycoreutils per usare fixfiles.

D:

Dopo aver rietichettato la mia /home usando setfiles o fixfiles, sarò ancora in grado di leggere /home con un sistema con SELinux non abilitato?

R:

Puoi leggere i files da una distribuzione senza SELinux, o una con SELinux disabilitato. Comunque, i files creati dal sistema privo di SELinux non avranno un contesto di sicurezza, nemmeno l'avrà qualsiasi files che rimuoverai e ricreerai. Questo potrebbe essere un problema con files tipo ~/.bashrc. Dovrai rietichettare la tua /home quando ritornerai a Fedora Core.

D:

Come posso condividere directories usando NFS tra Fedora Core e sistemi non-SELinux

R:

NFS supporta in modo trasparente molti tipi di file system, e può essere usato per condividere directories tra sistemi SELinux e non-SELinux.

Quando monti un file system non-SELinux via NFS, per impostazione predefinita SELinux tratterà tutti i files nella condivisione come avessero contesto nfs_t. Potrai prevaricare il contesto predefinito impostandolo manualmente usando l'opzione context=.  Ad esempio, questo farà apparire i files nella directory NFS montata con un contesto di system_u:object_r:tmp_t in SELinux:

mount -t nfs -o context=system_u:object_r:tmp_t server:/shared/foo /mnt/foo

Quando SELinux esporta un file system via NFS, i files creati avranno il contesto della directory dove sono stati creati. In altre parole, la presenza di SELinux sul sistema remoto che ha montato la condivisione non ha effetto sui contesti di sicurezza locali.

D:

Come posso creare un nuovo account utente Linux con la home directory utente avente il contesto appropriato?

R:

Puoi creare il nuovo utente con il comando standard useradd. Prima dovrai diventare root; sotto la policy strict avrai bisogno di cambiare al ruolo sysadm_r. Questo cambio di contesto è stato incorporato nel comando su ed avviene automaticamente. Per la policy targeted, non avrai bisogno di cambiare ruolo, rimanendo in unconfined_t:

su - root
id -Z
root:system_r:unconfined_t
useradd auser
ls -Z /home
drwx------  auser   auser   root:object_r:user_home_dir_t /home/auser  

Il contesto iniziale per una nuova directory utente ha un identità di root.  In seguito la rietichettatura del file system cambierà l'identità a system_u.  Queste sono funzionalmente le stesse poichè il ruolo ed il tipo sono identici (object_r:user_home_dir_t.)

D:

Tutte le altre documentazioni su SELinux affermano che il comando su cambierà solamente l'identità Linux e non il ruolo di sicurezza.

R:

Il team di sviluppo di Fedora Core ha preso una direzione leggermente differente rispetto alla pratica di SELinux esistente.  Le transizioni del contesto di sicurezza adesso sono integrate in su via pam_selinux.  Questo semplifica enormemente l'uso del sistema.

In pratica, è come combinare il tradizionale su con il newrole di SELinux, in un singolo passo invece di due.

Altre forme di cambio d'identità di Linux/UNIX®, per esempio setuid(2), non causano un cambio d'identità SELinux.

D:

Sto avendo alcune difficoltà con errori avc che riempiono i miei logs per un programma in particolare. Come scelgo escluderne l'audit d'accesso?

R:

Per esempio, se volevi escludere l'audit di dmesg, potresti inserire questa riga nel tuo file /etc/selinux/targeted/src/policy/dmesg.te

dontaudit dmesg_t userdomain:fd { use };

Questo eliminerà l'output d'errore dal terminale per tutti gli userdomains (user, staff e sysadm).

D:

Anche avviando in modalità permissive, ho un gran numero di messaggi avc denied.

R:

In modalità non-enforcing, avrai più messaggi che in modalità enforcing. Ciò avviene poichè il kernel sta loggando ogni diniego di accesso come fossi in modalità enforcing. Siccome non hai restrizioni, puoi fare più cose, che danno come risultato più log di diniego.

Per esempio, se un applicazione eseguita sotto la modalità enforcing ha il divieto provare a leggere un certo numero di files in una directory, essa verrà fermata all'inizio dell'azione. In modalità non-enforcing, l'applicazione non viene fermata dal traversare l'albero della directory, e riceverà un messaggio di diniego per ogni file letto nella directory.

D:

Ho un particolare diniego di premesso solo quando SELinux è in modalità enforcing, ma non vedo nessun messaggio di audit in /var/log/messages. Come posso identificare la causa di questi dinieghi silenziosi?

R:

La ragione più comune per un diniego silenzioso è quando la policy contiene un esplicita regola di dontaudit per sopprimere i messaggi di audit. La regola di dontaudit è spesso usata quando un segnale di diniego benigno riempie gli audit logs.

Per vedere il tuo particolare diniego, dovrai abilitare l'auditing di tutte le regole dontaudit:

cd /etc/selinux/targeted/src/policy 
make enableaudit
make load
[Attenzione] Abilitare l'output di dontaudit è verboso

Abilitare l'auditing di tutte le regole dontaudit produrrà un gran numero di informazioni audit, molte delle quali irrilevanti per il tuo diniego.

Usa questa tecnica solo se stai cercando un messaggio di diniego che sembra avvenire silenziosamente. Probabilmente desidererai ri-abilitare le regole dontaudit il più presto possibile.

Per ri-abilitare le regole dontaudit, fai così:

cd /etc/selinux/targeted/src/policy
make clean 
make load
D:

Perchè non vedo l'output quando eseguo certi demoni in modalità debug o interattiva?

R:

SELinux disabilita intenzionalmente l'accesso ai dispositivi tty per impedire ai demoni la comunicazione verso il terminale di controllo. Questa comunicazione è un potenziale buco nella sicurezza poichè questi demoni possono inserire comandi nei terminali di controllo.  Un programma bacato o compromesso potrebbe causare seri problemi con questo.

Ci sono alcuni modi per permetterti di catturare lo STDOUT da questi demoni.  Un metodo è quello di eseguire il pipe dell'output al comando cat.

snmpd -v | cat

Quando fai il debug di un demone, potresti voler disattivare la transizione del demone al suo dominio specifico.  Puoi farlo usando system-config-securitylevel o setsebool dalla linea di comando.

Un opzione finale è quella di disattivare la modalità di enforcing durante il debug. Puoi farlo con setenforce 0, usando setenforce 1 per ri-abilitare SELinux quando hai terminato il debug.

D:

Quando eseguo un upgrade del pacchetto delle policy (per esempio, usando yum), cosa succede con la policy; è automaticamente aggiornata?

R:

Le policy si ricaricano da sole quando il pacchetto è aggiornato. Questo sostituisce il comando manuale make load.

In certe situazioni, può essere necessario rietichettare il file system. Questo potrebbe accadere per fissare gli errori di SELinux qualora i contesti dei files divenissero invalidi, o quando l'update della policy fa dei cambiamenti ai file_contexts.

Dopo aver rietichettato il filesystem, un reboot non è necessario, ma è utile per assicurare che ogni processo e programma sia eseguito nel dominio appropriato. Questo è altamente dipendente dai cambiamenti nella policy aggiornata.

Se hai installato i pacchetti sorgente delle policy, es. selinux-policy-strict, puoi eseguire questi comandi per rietichettare il file system.

cd /etc/selinux/targeted/src/policy
make
make relabel
reboot

Se non stai usando i sorgenti delle policy, un altro approccio è usare il comando fixfiles o avvantaggiarsi del meccanismo /.autorelabel:

fixfiles relabel
reboot
touch /.autorelabel
reboot
D:

Se la policy rilasciata con il pacchetto di un applicazione cambia in modo da richiedere la rietichettatura, potrà RPM gestire la rietichettatura dei files posseduti dal pacchetto?

R:

Si. I contesti di sicurezza per i files posseduti dal pacchetto sono immagazzinati nei dati dell'header del pacchetto. I contesti dei files sono impostati direttamente dopo la copia cpio, appena i files del pacchetto sono poggiati sul disco.

D:

Che relazioni intercorrono fra il pacchetto policy e policy source?

R:

Un pacchetto policy come selinux-policy-targeted è un requisito per un installazione SELinux funzionante, mentre un pacchetto sorgente come selinux-policy-targeted-sources è richiesto se vuoi modificare la policy predefinita.

Il pacchetto policy ha i files minimi necessari per definire la policy di sicurezza di SELinux. Viene tenuto di ridotte dimensioni per avere minimi requisiti di installazione.

Il pacchetto dei sorgenti della policy contiene le definizioni sorgente in /etc/selinux/policyname/src/policy che sono richiesti per creare i files /etc/selinux/policyname/contexts/* e /etc/selinux/policyname/policy/policy.version. version è il numero di versione della policy.

La scelta di quali pacchetti installare è basata sul tipo di installazione. Se intendi usare solo la configurazione di sicurezza predefinita dagli sviluppatori Fedora Core, avrai bisogno solo del pacchetto policy. Se vorrai adattare la tua policy di sicurezza in qualsiasi modo, o vorrai eseguire setools, avrai bisogno di installare il pacchetto di sorgenti della policy.

Installando o aggiornando i pacchetti della policy, la nuova policy verrà caricata non appena installati i nuovi files. In modo analogo, installando o aggiornando il pacchetto di sorgenti della policy ricreerà sia il file policy.version che il file file_contexts, quindi verranno ricaricati come policy attuale effettiva.

D:

Perchè i files /etc/selinux/policyname/policy/policy.<version> e /etc/selinux/policyname/src/policy/policy.<version> sono differenti (sizes, md5sums, dates)?

R:

Quando installi un pacchetto policy, i files binari pre-compilati della policy sono inseriti direttamente in /etc/selinux. Quando un pacchetto sorgente policy è installato o aggiornato, i files binari della policy vengono compilati in /etc/selinux/policyname/src/policy, quindi spostati in /etc/selinux/policyname/policy/.  I differenti ambienti di compilazione creeranno files finali che hanno differenti dimensioni, md5sums, e date.

D:

I nuovi pacchetti policy potranno disabilitare il mio sistema?

R:

C'è la possibilità che cambiamenti nei pacchetti della policy o nella policy rilasciata con un pacchetto applicativo possano causare errori, più dinieghi, o altri comportamenti sconosciuti. Per rimediare, puoi scoprire quale pacchetto causa il problema ripristinando policy e pacchetti applicativi uno alla volta. Se non vuoi tornare ad una pacchetto precedente, i files di configurazione della vecchia versione sono salvati con l'estensione di .rpmsave. Assicurati di consultare le mailing lists, bugzilla, ed IRC per aiutarti ad uscire dal problema. Se sei capace, scrivi un fix o una policy per risolvere il problema.

D:

Come posso aiutare a scrivere una policy?

R:

Il tuo aiuto è apprezzato infinitamente.  Puoi cominciare entrando a far parte della SELinux mailing list, fedora-selinux-list@redhat.com; puoi sottoscriverti e leggere gli archivi su http://www.redhat.com/mailman/listinfo/fedora-selinux-list.  Le FAQ non ufficiali hanno qualche informazione generica su come scrivere le policy (http://sourceforge.net/docman/display_doc.php?docid=14882&group_id=21266#BSP.1).  Un'altra nuova risorsa è il Writing SE Linux policy HOWTO (https://sourceforge.net/docman/display_doc.php?docid=21959&group_id=21266).

Il meglio su cui puoi scommettere è dare un occhiata ai files di policy in /etc/selinux/policyname/src/policy/ e provare a sperimentare. Osserva i messaggi avc denied in /var/log/messages per avere degli indizi.

Uno strumento utile per uno scrittore di policy è /usr/bin/audit2allow, che traduce i messaggi avc provenienti da /var/log/messages in regole che possono essere usate da SELinux.  Queste regole dovranno ovviamente essere rifinite.

Il comando audit2allow può ricevere l'input con tre metodi.  Il metodo predefinito è dallo standard input (STDIN).  Usando l'opzione -i legge l'input da /var/log/messages, e con l'opzione -d legge l'input dall'output di dmesg.

D:

La mia console è inondata da messaggi, come li fermo?

R:

Per riottenere il controllo, disattiva i messaggi del kernel nella console usando dmesg -n 1.

D:

Posso provare la policy predefinita senza installare il pacchetto di sorgenti della policy?

R:

Puoi provare la policy predefinita di SELinux installando solamente i pacchetti selinux-policy-policyname e policycoreutils. Senza il pacchetto dei sorgenti della policy installato, il comando fixfiles automatizzerà la rietichettatura del file system.

Il comando fixfiles relabel è l'equivalente di make relabel. Durante la rietichettatura, cancellerà tutti i files in /tmp, ripulendo i files che potrebbero avere vecchie etichette di contesto.

Altri comandi sono fixfiles check, che controlla i files con etichette errate, e fixfiles restore, che fissa i files mal etichettati ma non cancella i files in /tmpfixfiles non accetta una lista di directories come argomento, il suo scopo è rietichettare l'intero filesystem.  Se hai bisogno di rietichettare un percorso specifico di directory, usa restorecon.

D:

Sto avendo difficoltà nel far funzionare un applicazione KDE sotto SELinux.

R:

Gli eseguibili KDE appaiono sempre come kdeinit, che limita ciò che può essere fatto con la policy di SELinux. Questo perchè ogni applicazione KDE viene eseguita nel dominio per kdeinit.

I problemi spesso vengono fuori quando si installa SELinux perchè non è possibile rietichettare /tmp e /var/tmp.  Non c'è un buon metodo di determinare quale file dovrebbe avere quale contesto.

La soluzione è quella di eseguire un pieno log out da KDE e rimuovere tutti i files temporanei di KDE:

rm -rf	/var/tmp/kdecache-<username>
rm -rf /var/tmp/<other_kde_files>

Al prossimo login, il problema dovrebbe essere risolto.

D:

Perchè SELINUX=disabled non funziona per me?

R:

Fa attenzione agli spazi vuoti nel file /etc/sysconfig/selinux.  Il codice è molto sensibile agli spazi vuoti, anche ai tabulatori.

1.4. Implementare SELinux

D: Che file systems posso usare per SELinux?
D: Come incide SELinux sulle prestazioni del sistema?
D: Di che tipo di implementazioni/applicazioni/sistemi, etc. dovrò tener conto per l'uso con SELinux?
D: Che effetto ha SELinux sulle applicazioni di terze parti?
D:

Che file systems posso usare per SELinux?

R:

Il file system deve supportare le etichette xattr nel giusto namespace security.*.  Oltre a ext2/ext3, XFS ha recentemente aggiunto il supporto per le necessarie etichette.

D:

Come incide SELinux sulle prestazioni del sistema?

R:

Questa è una variabile difficile da quantificare, ed è pesantemente dipendente dalla grandezza del sistema su cui SELinux sta girando. L'ultima volta che le prestazioni sono state misurate, l'incidenza era circa del 7% per codice completamente non raffinato. I cambiamenti da allora sembrerebbero essere peggiorati in alcuni casi, tipo nel networking. Le performance e l'affinamento di SELinux sono una priorità del team di sviluppo.

D:

Di che tipo di implementazioni/applicazioni/sistemi, etc. dovrò tener conto per l'uso con SELinux?

R:

Inizialmente, SELinux servirà ai server affacciati su Internet che eseguono poche, funzioni specializzate, dove è critico mantenere una sicurezza estremamente stretta. Una simile macchina è tipicamente priva di software extra e servizi, ed esegue un servizio molto mirato od un gruppo di servizi, come un Web server o un mail server.

In questi servers di nicchia, potrai bloccare la policy molto strettamente. Questo sarà facilitato dal piccolo numero di interazioni con gli altri componenti. In modo simile, una macchina dedicata che esegue un applicazione specialistica di terze parti sarà un buon candidato.

In futuro, SELinux è orientato a tutti gli ambienti. Per questo, la comunità e gli ISVs (independent software vendors) dovranno lavorare con gli sviluppatori SELinux per produrre le policy necessarie. Finora, è stata scritta una strict policy molto restrittiva, analogamente ad una targeted policy che mira a specifici, demoni vulnerabili.

D:

Che effetto ha SELinux sulle applicazioni di terze parti?

R:

Uno degli scopi nell'implementare la policy targeted di SELinux in Fedora Core è quello di permettere ad applicazioni di terze parti di funzionare senza modifiche. Questo funziona perchè la targeted policy è trasparente a quelle applicazioni che non prova a controllare e che ricadono nella sicurezza di Linux standard.  Queste applicazioni non saranno eseguite in maniera extra sicura.  Una policy deve essere scritta per far si che queste applicazioni siano protette dal MAC.

Ci sono talmente tante variazioni nelle applicazioni di terze parti che è impossibile predire come si comporterebbero con SELinux, anche eseguendo la targeted policy. Le problematiche insorgenti possono talvolta essere fissate nella policy.  Puoi capitare che SELinux ti mostri problemi di sicurezza con la tua applicazione che non sapevi di avere, richiedendo una modifica dell'applicazione per poter funzionare sotto SELinux.

Un importante valore che i testers ed utenti di Fedora Core porteranno alla comunità è l'estensivo testing di applicazioni di terze parti. Tenendo questo a mente, sei pregato di riportare le tue esperienze sull'appropriata mailing list (fedora-selinux-list@redhat.com) per discuterne.





All logos and trademarks in this site are property of their respective owner.
The comments are property of their posters, all the rest 2002 by me.
You can syndicate our news using the file backend.php [RSS] [Valid RSS].

PHP-Nuke Copyright © 2004 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Generazione pagina: 0.12 Secondi

Theme Design by: Lorkan Themes