Jump to content
Sign in to follow this  
Sofcik

Glusterfs I Selinux

Recommended Posts

Cześć

Próbuję zamontować po SMB udostępniony wolumin glusterowy z serwerów node1 (10.10.13.101) i node2 (10.10.13.102) i dostaję następujący komunikat:

[root@node3 log]# mount -t cifs \\\\10.10.13.101\\gluster-test-single /mnt/test-geo/ -o user=piotrek,pass=haselko
mount error(5): Input/output error
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Doszedłem do tego, że mogę zamontować ten zasób wyłączając SELinuxa na serwerach udostępniających gluster volume ale nie wolno mi wyłączyć SELinuxa.

Zmiany wartości zmiennych selinuxowych dot. samby, cifs a nawet allow_ypbind nie dają rezultatu i niestety nie ma możliwości zamapowania takiego zasobu bez wyłączenia SELinuxa.

 

Audit2allow i logi audytowe dają to:

[root@node1 samba]# more /var/log/audit/audit.log | audit2allow


#============= glusterd_t ==============
allow glusterd_t consoletype_exec_t:file { execute execute_no_trans };
allow glusterd_t file_t:file { relabelfrom relabelto };
allow glusterd_t glusterd_var_lib_t:file { execute execute_no_trans };
allow glusterd_t hostname_exec_t:file { execute execute_no_trans };
allow glusterd_t node_t:rawip_socket node_bind;

#!! This avc is a constraint violation.  You will need to add an attribute to either the source or target type to make it work.
#Contraint rule:
allow glusterd_t samba_etc_t:file create;
allow glusterd_t samba_initrc_exec_t:file { execute execute_no_trans };
allow glusterd_t self:capability net_raw;
allow glusterd_t self:rawip_socket { bind create };
allow glusterd_t smbd_exec_t:file { execute execute_no_trans };
allow glusterd_t smbd_t:process signal;
allow glusterd_t ssh_keygen_exec_t:file { execute execute_no_trans };
allow glusterd_t var_run_t:sock_file { write unlink };

#============= smbd_t ==============

#!! This avc can be allowed using the boolean 'allow_ypbind'
allow smbd_t ftp_port_t:tcp_socket name_bind;
allow smbd_t gluster_port_t:tcp_socket name_connect;

#!! This avc can be allowed using one of the these booleans:
#     samba_export_all_ro, samba_export_all_rw
allow smbd_t glusterd_conf_t:dir search;

#!! This avc can be allowed using the boolean 'allow_ypbind'
allow smbd_t hi_reserved_port_t:tcp_socket name_bind;

#!! This avc can be allowed using the boolean 'allow_ypbind'
allow smbd_t pop_port_t:tcp_socket name_bind;

#!! This avc can be allowed using the boolean 'allow_ypbind'
allow smbd_t rndc_port_t:tcp_socket name_bind;
allow smbd_t sysctl_net_t:dir search;
allow smbd_t sysctl_net_t:file read;
allow smbd_t virt_migration_port_t:tcp_socket name_connect;

Moja konfiguracja to Centos 6.6 z GlusterFS 3.6.3.

 

Czy ktoś z Forumowiczów ma jakiś pomysł jak obejść ten problem bez wyłączania SELinuxa?

 

--

Piotrek

Share this post


Link to post
Share on other sites
Guest _PaT

Prawdopodobnie bug:

Ja tu dostrzegam dwa problemy - z demonem glustera i samby. Rozumiem, że serwer glustera wciągnąłeś z upstreamu.

 

O ile dobrze pamiętam, w poprzednich wersjach RHEL gluster pracował w permissive domain. Do czasu rozwiązania buga masz dwa wyjścia:

  • Ustawić glusterd_t jako permissive domain (semanage permissive -a glusterd_t). Prawdopowobnie to samo dla smbd_t. To spowoduje, że cały gluster (i ew. samba) nie będzie chroniony przez SELinuksa, czyli będzie mógł buszować jak każdy demon w starych dobrych czasach :) Pytanie czy Twoi bezpiecznicy się na to zgodzą. Jeśli chodzi o glustera, to to nie spodziewam się problemów, bo jeszcze do niedawna permissive to był standard.
  • Użyć modułu na podstawie wygenerowanego outputu audit2allow. No cóż, ciężko będzie o mądrą głowę, która od razu powie Ci, czy to całkowicie bezpieczne. Z reguły mocno trzeba przysiedzieć przed napisaniem dobrej polisy. Lepiej jednak to zrobić, niż ustawiać całe domeny jako permissive.

Share this post


Link to post
Share on other sites

Te bugi znam - były zgłoszone chyba do wersji niższej niż 3.6.3. Sądziłem, że to już poprawili.

 

Serwer pobierałem z gluster.org.

 

Problem z tymi daemonami mam już od jakiegos czasu - tryb permissive pomógł, ale spróbuję jeszcze ze zmianą z enforcing na permissive domain. Podejrzewam, że zadziała.

 

Do pisania modułów do polis jeszcze się nie zabieram - za cienki jestem z SELinuksa :) Ale jak widzę, trzeba będzie albo poczekać na fixa albo samemu jednak coś napisać.

 

Dziękuję za pomoc.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×