LINUX:SELinux-Exemples

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

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;


Awstats

Ce service effectue des statistiques sur les connexions au service Web HTTPD.


module my-awstats 1.0;
 
require {
       type awstats_script_t;
       class netlink_route_socket { bind create getattr getopt nlmsg_read setopt };
}
#============= awstats_script_t ==============
allow awstats_script_t self:netlink_route_socket { bind create getattr getopt nlmsg_read setopt };


Fail2Ban

Le service Fail2Ban a besoin de consulter les journaux des services de MariaDB et d'HTTPD.


module my-fail2ban 1.0;
 
require {
       type httpd_log_t;
       type mysqld_log_t;
       type fail2ban_t;
       class dir watch;
       class file watch;
}
#============= fail2ban_t ==============
allow fail2ban_t httpd_log_t:dir watch;
allow fail2ban_t httpd_log_t:file watch;
allow fail2ban_t mysqld_log_t:dir watch;
allow fail2ban_t mysqld_log_t:file watch;


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