Passenger + SELinux = Problème

Passenger + SELinux = Problème - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 18-08-2009 à 19:06:12    

Bonjour,
 
Dans l'optique de pouvoir par la suite reproduire la même mise en service sur un serveur de prod je me suis lancé dans l'installation + configuration d'un serveur web tournant sous Red Hat Entreprise 5. Je précise déjà que bien que j'utilise linux depuis environ 8 ans, je n'ai quasiment jamais touché à RedHat, et encore moins à la version entreprise. Le choix a été fait par l'école où je me trouve, je n'ai donc pas eu mon mot à dire.
Le serveur en question sera principalement utilisé pour héberger de petits sites Rails avec peu de hits et non critiques, c'est pour ça que je me suis lancé dans l'histoire (ça aurait été le serveur central, ça aurait pas été moi qui aurait été désigné pour la mise en service :D).
 
Donc toute l'install et la configuration c'est bien passée. Sauf que si je met SELinux en mode "enforcing" Apache ne démarre pas à cause de Passenger. Si je le met en mode permissif tout démarre mais je me prend plein de Warnings dans le manager.
 
Voilà ce que je me prend dans le manager :  
 
http://paste2.org/p/385574
 
Et voilà ce que me donne apache dans le error_log :
 

Citation :


[Tue Aug 18 18:33:55 2009] [notice] core dump file size limit raised to 4294967295 bytes
[Tue Aug 18 18:33:55 2009] [notice] SELinux policy enabled; httpd running as context user_u:system_r:httpd_t:s0
[Tue Aug 18 18:33:55 2009] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
/usr/bin/ruby: Permission denied -- /usr/local/share/rubygems/gems/passenger-2.2.4/bin/passenger-spawn-server (LoadError)
[ pid=19152 file=ext/common/ApplicationPoolServerExecutable.cpp:732 time=2009-08-18 18:33:55.734 ]:
  *** Fatal error: Cannot bind Unix socket '/tmp/passenger.19146/info/status.socket': Permission denied (13)
     in 'int Server::start()' (ApplicationPoolServerExecutable.cpp:651)


 
Est-ce que vous voyez ce qui cloche?  
Là je suis en train de me taper la doc de SELinux mais vu la taille du machin ça va me prendre un certain temps et c'est même pas dit que je m'en sorte une fois fini :o
 
Merci bien


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 18-08-2009 à 19:06:12   

Reply

Marsh Posté le 18-08-2009 à 19:30:51    

y'a une appli audit2log ou je sais plus quoi qui permet à partir des logs de sortir les règles selinux appropriées, ça devrait t'aider à démarrer :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 18-08-2009 à 19:58:30    

Merci,
Le soft s'appelle audit2allow en fait ;)
 
Donc grâce à toi j'ai déjà réussi à corriger une des erreurs. En effet il bloquait en disant que Passenger cherchait à écrire dans une directory qui n'était pas à lui mais à moi (esox). En fait le soucis vient du fait que mon appli rails a été déployée avec mon username, et j'en était donc le propriétaire. Un coup de chown -R apache mon_site a déjà résolu ça.
 
Maintenant le problème "bloquant" semble être situé au niveau d'un socket auquel il arrive pas à se connecter. Je continue a investiguer. En tous cas merci :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 19-08-2009 à 18:19:36    

Bon, j'ai avancé.
 
Le truc du socket c'est résolu. En fait il a le droit de se connecter à ce socket. Le mieux est de lui dire de déplacer le socket en question dans un répértoire à lui tout seul et après de dire a SELinux que Apache est dans le même groupe que le dossier, et là ça joue.
 
Par contre par la suite je retombe sur un problème de tentative d'accès au home d'un user (/root). Là j'ai demandé sur le google group de Passenger et les dev investiguent, je vous tiens au courant.

Reply

Marsh Posté le 19-08-2009 à 20:32:54    

tu peux pas virer le selinux ? c'est useless :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 19-08-2009 à 20:57:13    

Si je peux.
Tu peux m'expliquer pourquoi c'est useless? Parce que je trouve le principe chiant mais assez sécurisant :??:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 19-08-2009 à 21:15:03    

bah, si ton serveur web se fait rooter ce sera surement via une appli, à laquelle tu auras auparavant donné les droits de faire X ou Y donc ça changera pas grand chose


Message édité par black_lord le 19-08-2009 à 21:15:13

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 20-08-2009 à 00:00:36    

Oui mais si les droits données dans SELinux sont suffisamment restrictifs, ça peut quand même être pratique non?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-08-2009 à 10:21:09    

Je suis assez d accord avec BL, je vois pas trop l intérêt de SELinux a part te faire chier ..., moi je l ai désactivé sur les quelques RHEL dont j arrive pas a me débarrasser :o


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 20-08-2009 à 10:21:32    

Bon je crois avoir trouvé la solution pour que ça marche.
Je voudrais pouvoir le vérifier en refaisant toute la démarche à partir de 0.
 
Vous savez comment on peut dire à SELinux de se ré-initialiser, histoire qu'il prenne juste les config "par défaut" ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed