« LINUX:SELinux-Exemples » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
(Page créée avec « __FORCETOC__ ---- ''→ 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;... »)
 
Aucun résumé des modifications
 
(4 versions intermédiaires par le même utilisateur non affichées)
Ligne 4 : Ligne 4 :
----
----
=But=
=But=
Voici quelques exemples de fichiers de ".te". Ils sont souvent très réduits ou à la structure répétitive.  
Voici quelques exemples de fichiers à l'extension ".te". Ils sont souvent très réduits ou à la structure répétitive.  




Ligne 15 : Ligne 15 :
         type rpm_script_t;
         type rpm_script_t;
         type auditd_t;
         type auditd_t;
         class dir { read search };
         class dir { read search getattr open };
        class file { open read };
  }
  }
  #============= auditd_t ==============
  #============= auditd_t ==============
  allow auditd_t rpm_script_t:dir { read search };
  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 };
----
----


Ligne 39 : Ligne 105 :




=SETroubleshootd=
=LogWatch=
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.
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-setroubleshootd 1.0;
  module my-netstat 1.0;
   
   
  require {
  require {
         type setroubleshootd_t;
         type auditd_t;
         type sendmail_exec_t;
         type chronyd_t;
         type postfix_postdrop_exec_t;
         type cockpit_session_t;
         type postfix_etc_t;
         type crond_t;
        type postfix_public_t;
...
        type postfix_master_t;
         class process getattr;
        type postfix_spool_t;
         class capability sys_ptrace;
        class file { execute execute_no_trans };
         class cap_userns sys_ptrace;
        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 ==============
  #============= logwatch_t ==============
  allow setroubleshootd_t sendmail_exec_t:file { execute execute_no_trans };
  allow logwatch_t auditd_t:process getattr;
  allow setroubleshootd_t sendmail_exec_t:file map;
  allow logwatch_t chronyd_t:process getattr;
  allow setroubleshootd_t postfix_etc_t:file { open read };
  allow logwatch_t cockpit_session_t:process getattr;
  allow setroubleshootd_t postfix_postdrop_exec_t:file { execute execute_no_trans };
  allow logwatch_t crond_t:process getattr;
  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;
----
----


Ligne 105 : Ligne 161 :




=Cron=
=PHP et HTTPD=
Depuis 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.
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-cron-sendmail 1.0;
  module my-php-fpm 1.0;
   
   
  require {
  require {
         type system_cron_spool_t;
         type httpd_log_t;
         type system_mail_t;
         type httpd_t;
         class file { write append };
         class file write;
  }
  }
  #============= system_mail_t ==============
  ============= httpd_t ==============
  allow system_mail_t system_cron_spool_t:file { write append };
  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 };
----





Dernière version du 24 janvier 2024 à 13:16


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