Faire fonctionner pkgi sous le contrôle de Apparmor

Apparmor ("Application Armor") est je cite :

"Un logiciel de sécurité pour Linux édité sous GPL. AppArmor permet à l'administrateur système d'associer à chaque programme un profil de sécurité qui restreint les capacités de celui-ci. Il s'agit plus précisément d'un outil qui permet de verrouiller les applications pour les forcer à n’accéder qu’aux ressources auxquelles elles ont droit sans perturber leur fonctionnement."

Donc en tout logique, AppArmor bloquera certains modules fournis par Pkgi car ce dernier a pour principe de faire tourner des applications dans des chemins non standards (en général dans le homedir de l'utilisateur unix). Voici ici les règles à ajouter dans les profils apparmor pour concilier la sécurité et la souplesse de déploiement de pkgi :

Exemple de message d'erreur généré par Apparmor

C'est ce type d'erreur qui met la puce à l'oreille :

Could not open required defaults file: /home/parmentf/Dev/opengrey/etc/mysql/my.cnf

Voila une erreur complète :

parmentf@parmentf-desktop:~/Dev/opengrey$ bin/pkgi-mysqltools init
Could not open required defaults file: /home/parmentf/Dev/opengrey/etc/mysql/my.cnf
Fatal error in defaults handling. Program aborted
Could not open required defaults file: /home/parmentf/Dev/opengrey/etc/mysql/my.cnf
Fatal error in defaults handling. Program aborted
Could not open required defaults file: /home/parmentf/Dev/opengrey/etc/mysql/my.cnf
Fatal error in defaults handling. Program aborted
100826 18:09:36 [Warning] Can't create test file /home/parmentf/Dev/opengrey/var/lib/mysql/parmentf-desktop.lower-test
100826 18:09:36 [Warning] Can't create test file /home/parmentf/Dev/opengrey/var/lib/mysql/parmentf-desktop.lower-test
ERROR: 1005  Can't create table 'db' (errno: 13)
100826 18:09:36 [ERROR] Aborting
 
100826 18:09:36 [Note] /usr/sbin/mysqld: Shutdown complete
 
Could not open required defaults file: /home/parmentf/Dev/opengrey/etc/mysql/my.cnf
Fatal error in defaults handling. Program aborted
100826 18:09:36 [Warning] Can't create test file /home/parmentf/Dev/opengrey/var/lib/mysql/parmentf-desktop.lower-test
100826 18:09:36 [Warning] Can't create test file /home/parmentf/Dev/opengrey/var/lib/mysql/parmentf-desktop.lower-test
100826 18:09:36 [Note] Plugin 'FEDERATED' is disabled.
100826 18:09:36 [Note] Plugin 'InnoDB' is disabled.
ERROR: 1146  Table 'mysql.user' doesn't exist
100826 18:09:36 [ERROR] Aborting
 
100826 18:09:36 [Note] /usr/sbin/mysqld: Shutdown complete
 
Error: debian-sys-maint cannot be created.

Voici un deuxième exemple, lors de l'utilisation de LOAD DATA INFILE:

parmentf@parmentf-desktop:~/Dev/ogtest$ usr/bin/mysql < /home/parmentf/Dev/ogtest/var/www/admin/classes/db/load_handle2url.sql ogtest
ERROR 29 (HY000) at line 1: File '/home/parmentf/Dev/ogtest/var/www/admin/classes/db/handle2url.txt' not found (Errcode: 13)
parmentf@parmentf-desktop:~/Dev/ogtest$ ls /home/parmentf/Dev/ogtest/var/www/admin/classes/db/handle2url.txt
/home/parmentf/Dev/ogtest/var/www/admin/classes/db/handle2url.txt

Mysql

On considère ici que vous déployez des applications pkgi dans les HOMEDIR de chaque utilisateur du système.

Fichier concerné :

/etc/apparmor.d/usr.sbin.mysqld

Règles à ajouter :

    @{HOME}/**/etc/mysql/* r, 
    @{HOME}/**/etc/mysql/my.cnf r,
    @{HOME}/**/etc/mysql/conf.d/ r,
    @{HOME}/**/etc/mysql/conf.d/* r,
    @{HOME}/**/etc/mysql/my.cnf r,
    @{HOME}/**/tmp/* rw,
    @{HOME}/**/var/lib/mysql/ r,
    @{HOME}/**/var/lib/mysql/** rwk,
    @{HOME}/**/var/log/mysql/ r,
    @{HOME}/**/var/log/mysql/* rw,
    @{HOME}/**/var/run/mysqld/mysqld.pid w,
    @{HOME}/**/var/run/mysqld/mysqld.sock w,

Pour régler le deuxième exemple, on peut ajouter

    @{HOME}/**/*.txt r,

Et relancer AppArmor:

parmentf@parmentf-desktop:~/Dev/ogtest$ sudo /etc/init.d/apparmor restart

LDAP (slapd)

On considère ici que vous déployez des applications pkgi dans les HOMEDIR de chaque utilisateur du système.

Fichier concerné :

/etc/apparmor.d/usr.sbin.slapd

Règles à ajouter :

  @{HOME}/**/etc/ssl/private/ r,
  @{HOME}/**/etc/ssl/private/* r,
  @{HOME}/**/etc/sasldb2 r,
  @{HOME}/**/etc/gai.conf r,
  @{HOME}/**/etc/hosts.allow r,
  @{HOME}/**/etc/hosts.deny r,
  @{HOME}/**/etc/ldap/** kr,
  @{HOME}/**/etc/ldap/slapd.d/** rw,
  @{HOME}/**/dev/tty rw,
  @{HOME}/**/etc/krb5.keytab kr,
  @{HOME}/**/var/tmp/ rw,
  @{HOME}/**/var/tmp/** rw,
  @{HOME}/**/var/lib/ldap/ r,
  @{HOME}/**/var/lib/ldap/** rwk,
  @{HOME}/**/var/lib/ldap/alock kw,
  @{HOME}/**/var/run/slapd/* w,
  @{HOME}/**/usr/lib/ldap/ r,
  @{HOME}/**/usr/lib/ldap/* mr,
  @{HOME}/**/usr/sbin/slapd mr,
 
features/apparmor.txt · Dernière modification: 2011/02/18 11:51 par parmentf
Recent changes RSS feed Powered by PHP Hosted on Debian Driven by DokuWiki Deployed by Pkgi