![Che cos'è un Honeypot e come aiuta a migliorare la sicurezza informatica?](/f/131fa36a4401cef3b29642de13eb6276.jpg?width=100&height=100)
Per superare i limiti e aumentare i meccanismi di sicurezza previsti dalla norma ugo/rwx
permessi e liste di controllo degli accessi, il Agenzia per la sicurezza nazionale degli Stati Uniti (NSA) ha ideato un flessibile Controllo degli accessi obbligatorio (MAC) metodo noto come SELinux (Corto per Linux con sicurezza avanzata) al fine di limitare, tra l'altro, la capacità dei processi di accedere o eseguire altre operazioni su oggetti di sistema (come file, directory, porte di rete, ecc.) con il minor permesso possibile, pur consentendo modifiche successive a questo modello.
Un altro MAC popolare e ampiamente utilizzato è AppArmor, che oltre alle funzionalità fornite da SELinux, include una modalità di apprendimento che consente al sistema di “imparare” come si comporta un'applicazione specifica e per impostare i limiti configurando i profili per un utilizzo sicuro dell'applicazione.
Nel CentOS 7, SELinux è incorporato nel kernel stesso ed è abilitato in
far rispettare modalità predefinita (maggiori informazioni su questo nella prossima sezione), al contrario di openSUSE e Ubuntu che uso AppArmor.In questo articolo spiegheremo gli elementi essenziali di SELinux e AppArmor e come utilizzare uno di questi strumenti a tuo vantaggio a seconda della distribuzione scelta.
Security Enhanced Linux può funzionare in due modi diversi:
SELinux può anche essere disabilitato. Sebbene non sia una modalità operativa in sé, è comunque un'opzione. Tuttavia, imparare a utilizzare questo strumento è meglio che ignorarlo. Tienilo a mente!
Per visualizzare la modalità corrente di SELinux, utilizzo getenforce
. Se vuoi cambiare la modalità di funzionamento, usa setenforce 0
(per impostarlo su permissivo) o setenforce 1
(far rispettare).
Poiché questo cambiamento non sopravviverà a riavviare, dovrai modificare il /etc/selinux/config file e impostare il SELINUX variabile per entrambi far rispettare
, permissivo
, o Disabilitato
per ottenere la persistenza tra i riavvii:
In una nota a margine, se getenforce
restituisce Disabilitato, dovrai modificare /etc/selinux/config con la modalità operativa desiderata e riavviare. In caso contrario, non sarà possibile impostare (o alternare) la modalità di funzionamento con setenforce
.
Uno degli usi tipici di setenforce
consiste nel commutare tra le modalità SELinux (da far rispettare a permissivo o viceversa) per risolvere un'applicazione che si comporta in modo anomalo o non funziona come previsto. Se funziona dopo aver impostato SELinux su permissivo modalità, puoi essere sicuro che stai guardando un problema di autorizzazioni SELinux.
Due casi classici in cui molto probabilmente avremo a che fare con SELinux sono:
Diamo un'occhiata a questi due casi usando i seguenti esempi.
Una delle prime cose che la maggior parte degli amministratori di sistema fa per proteggere i propri server è cambiare la porta su cui ascolta il demone SSH, principalmente per scoraggiare i port scanner e gli aggressori esterni. Per fare ciò, usiamo la direttiva Port in /etc/ssh/sshd_config seguito dal nuovo numero di porta come segue (useremo port 9999 in questo caso):
Porta 9999.
Dopo aver tentato di riavviare il servizio e aver verificato il suo stato, vedremo che non è stato avviato:
# systemctl riavvia sshd. # stato systemctl sshd.
Se diamo un'occhiata a /var/log/audit/audit.log, lo vedremo sshd è stato impedito l'avvio in porto 9999 di SELinux perché quella è una porta riservata per il Gestione JBoss servizio (i messaggi di registro di SELinux includono la parola “AVV” in modo che possano essere facilmente identificati da altri messaggi):
# cat /var/log/audit/audit.log | grep AVC | coda -1.
A questo punto la maggior parte delle persone probabilmente si disabiliterebbe SELinux ma non lo faremo. Vedremo che c'è un modo per SELinux e sshd in ascolto su una porta diversa, per vivere insieme in armonia. Assicurati di avere il policycoreutils-python pacchetto installato ed eseguito:
# yum install policycoreutils-python.
Per visualizzare un elenco delle porte su cui SELinux consente a sshd di ascoltare. Nell'immagine seguente possiamo anche vedere quella porta 9999 era riservato per un altro servizio e quindi non possiamo usarlo per eseguire un altro servizio per il momento:
# porta semanage -l | grep ssh.
Ovviamente potremmo scegliere un'altra porta per SSH, ma se siamo certi che non avremo bisogno di usare questa specifica macchina per qualsiasi servizio relativo a JBoss, possiamo quindi modificare la regola SELinux esistente e assegnare quella porta a SSH invece:
# semanage port -m -t ssh_port_t -p tcp 9999.
Dopodiché, possiamo usare il primo semanage comando per verificare se la porta è stata assegnata correttamente, oppure il -lC
opzioni (abbreviazione di elenco personalizzato):
# porta semanage -lC. # porta semanage -l | grep ssh.
Ora possiamo riavviare SSH e connetterci al servizio utilizzando la porta 9999. Nota che questa modifica SOPRAVVIVERÀ a un riavvio.
Se hai bisogno di configurare un host virtuale Apache utilizzando una directory diversa da /var/www/html come DocumentRoot (diciamo, per esempio, /websrv/sites/gabriel/public_html):
DocumentRoot “/websrv/sites/gabriel/public_html”
Apache si rifiuterà di servire il contenuto perché il index.html è stato etichettato con il default_t SELinux tipo, a cui Apache non può accedere:
# wget http://localhost/index.html. # ls -lZ /websrv/sites/gabriel/public_html/index.html.
Come nell'esempio precedente, puoi utilizzare il seguente comando per verificare che si tratti effettivamente di un problema relativo a SELinux:
# cat /var/log/audit/audit.log | grep AVC | coda -1.
Per cambiare l'etichetta di /websrv/sites/gabriel/public_html ricorsivamente a httpd_sys_content_t
, fare:
# semanage fcontext -a -t httpd_sys_content_t "/websrv/sites/gabriel/public_html(/.*)?"
Il comando precedente concederà ad Apache l'accesso in sola lettura a quella directory e ai suoi contenuti.
Infine, per applicare la politica (e rendere immediatamente effettiva la modifica dell'etichetta), eseguire le seguenti operazioni:
# restorecon -R -v /websrv/sites/gabriel/public_html.
Ora dovresti essere in grado di accedere alla directory:
# wget http://localhost/index.html.
Per maggiori informazioni su SELinux, fare riferimento a Fedora 22 SELinux e guida per l'amministratore.