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 à l'extension ".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 getattr open };
       class file { open read };
}
#============= auditd_t ==============
allow auditd_t rpm_script_t:dir { read search getattr open };
allow auditd_t rpm_script_t:file { open read };


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 };


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 };


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;


GeneWeb

Pour utiliser le logiciel GeneWeb, il faut que les deux exécutables lancés en tant que service aient le droit de s'exécuter.


module my-gw 1.0;
 
require {
       type httpd_sys_content_t;
       type init_t;
       class file { execute execute_no_trans map open read write append create lock setattr rename unlink };
}
#============= init_t ==============
allow init_t httpd_sys_content_t:file { execute execute_no_trans open read write append create lock setattr map rename unlink };


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 };


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;
...


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 };


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;


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;


Postfix et MariaDB

Nous utilisons Postfix et Dovecot en liaison avec une base de données de MariaDB.


module my-smtpd-mysql 1.0;
 
require {
       type mysqld_etc_t;
       type postfix_smtpd_t;
       class file { getattr open read };
       class dir search;
}
#============= postfix_smtpd_t ==============
allow postfix_smtpd_t mysqld_etc_t:dir search;
allow postfix_smtpd_t mysqld_etc_t:file { getattr open read };

et


module my-cleanup-mysql 1.0;
 
require {
       type postfix_cleanup_t;
       type mysqld_etc_t;
       class file { getattr open read };
       class dir search;
}
#============= postfix_cleanup_t ==============
allow postfix_cleanup_t mysqld_etc_t:dir search;
allow postfix_cleanup_t mysqld_etc_t:file { getattr open read };




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