LINUX:SELinux-Exemples


retour à la Méthode de première mise en route


But

Voici quelques exemples de fichiers de ".te". Ils sont souvent très réduits ou à la structure répétitive.


Auditd

Suite à une mise à jour du logiciel Audit, le service "auditd.service" ne pouvait plus démarrer.


module my-auditd 1.0;
 
require {
       type rpm_script_t;
       type auditd_t;
       class dir { read search };
}
#============= auditd_t ==============
allow auditd_t rpm_script_t:dir { read search };


Logrotate et Wazuh

J'avais ajouté la rotation des journaux "active-responses" de Wazuh via le service Logrotate.


module my-logrotate-wazuh 1.0;
 
require {
       type var_t;
       type logrotate_t;
       class file { create getattr open read rename setattr unlink write };
       class dir { add_name read remove_name write };
}
#============= logrotate_t ==============
allow logrotate_t var_t:dir { add_name read remove_name write };
allow logrotate_t var_t:file { create open read rename setattr write getattr unlink };


SETroubleshootd

Si on demande au service "setroubleshootd.service" d'envoyer par mail les alertes SELinux, toute une autre série d'alertes sont générées.


module my-setroubleshootd 1.0;
 
require {
       type setroubleshootd_t;
       type sendmail_exec_t;
       type postfix_postdrop_exec_t;
       type postfix_etc_t;
       type postfix_public_t;
       type postfix_master_t;
       type postfix_spool_t;
       class file { execute execute_no_trans };
       class file { create map open read rename setattr write };
       class dir { add_name remove_name write };
       class process setrlimit;
       class sock_file write;
       class unix_stream_socket connectto;
}
#============= setroubleshootd_t ==============
allow setroubleshootd_t sendmail_exec_t:file { execute execute_no_trans };
allow setroubleshootd_t sendmail_exec_t:file map;
allow setroubleshootd_t postfix_etc_t:file { open read };
allow setroubleshootd_t postfix_postdrop_exec_t:file { execute execute_no_trans };
allow setroubleshootd_t postfix_postdrop_exec_t:file map;
allow setroubleshootd_t postfix_master_t:unix_stream_socket connectto;
allow setroubleshootd_t postfix_public_t:sock_file write;
allow setroubleshootd_t postfix_spool_t:dir { add_name remove_name write };
allow setroubleshootd_t postfix_spool_t:file { create open read rename setattr write };
allow setroubleshootd_t self:process setrlimit;


Nagios et Plugins

Nagios a la possibilité d'exécuter directement les plugins sans passer par le service Nrpe.


module my-sh-nagios 1.0;
 
require {
       type nagios_exec_t;
       type httpd_t;
       class file { open read };
}
#============= httpd_t ==============
allow httpd_t nagios_exec_t:file { open read };


NRPE

Il concerne le service Nrpe pour pouvoir écrire son fichier journal dans le répertoire "/var/log/nrpe".


module my-nrpe 1.0;
 
require {
       type var_log_t;
       type nrpe_t;
       class dir { add_name write };
       class file { create open read };
}
#============= nrpe_t ==============
allow nrpe_t var_log_t:dir { add_name write };
allow nrpe_t var_log_t:file { create open read };


Cron

Il y a longtemps, j'avais pris l'habitude de transmettre des mails personnalisés dans le cas d'alertes générées par le Cron mais ce n'est pas prévu car maintenant ce qui est envoyé en sortie, est transmis par mail.


module my-cron-sendmail 1.0;
 
require {
       type system_cron_spool_t;
       type system_mail_t;
       class file { write append };
}
#============= system_mail_t ==============
allow system_mail_t system_cron_spool_t:file { write append };


LogWatch

Dans la configuration du service LogWatch, j'ai activé l'option Netstat. Cette fonction a besoin de passer en revue tout process actif. Je n'ai présenté qu'un extrait car le nombre de process est souvent important.


module my-netstat 1.0;
 
require {
       type auditd_t;
       type chronyd_t;
       type cockpit_session_t;
       type crond_t;
...
       class process getattr;
       class capability sys_ptrace;
       class cap_userns sys_ptrace;
}
#============= logwatch_t ==============
allow logwatch_t auditd_t:process getattr;
allow logwatch_t chronyd_t:process getattr;
allow logwatch_t cockpit_session_t:process getattr;
allow logwatch_t crond_t:process getattr;
...


PHP et HTTPD

Le service PHP-Fpm utilisé au travers du service Httpd doit pouvoir écrire dans ses journaux dans le répertoire "/var/log/php-fpm".


module my-php-fpm 1.0;
 
require {
       type httpd_log_t;
       type httpd_t;
       class file write;
}
============= httpd_t ==============
allow httpd_t httpd_log_t:file write;






retour à la Méthode de première mise en route