Pasar al contenido principal
sysadmin.org.mx

SysAdmin Sections

  • Secciones
    • Articulos
    • Clasificados
    • Hardware
    • Problemas comunes
    • Red de servicios
    • Software
    • Trucos y consejos
    • Linuxreal
User account menu
  • Iniciar sesi贸n

Ruta de navegaci贸n

  1. Inicio

Error de conexi贸n de phpMyAdmin a AWS RDS (SELinux)

Por angel, 6 Diciembre, 2013

Introducci贸n

Al momento de estar configurando un servidor Linux y puesto que mi background es 100% de FreeBSD, me encontr茅 con una situaci贸n muy curiosa, el phpMyAdmin no pod铆a establecer conexiones con una base de datos RDS y no consegu铆a encontrar la raz贸n del problema.

Revis茅 logs de servidor web, base de datos, php, entre muchos otros, y no localizaba el error hasta que revis茅 el archivo "audit.log", donde me di cuenta de que SELinux era el problema ya que no permit铆a realizar conexiones hac铆a servidores externos desde el proceso del servidor web, y por lo mismo, el phpMyAdmin no se pod铆a conectar al servidor RDS.

A continuaci贸n se puede ver el mensaje de error que encontr茅 en archivo audit.log:

type=AVC msg=audit(1390241359.277:642): avc: denied { name_connect } for pid=13074 comm="httpd" dest=3306 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket
type=SYSCALL msg=audit(1390241359.277:642): arch=c000003e syscall=42 success=no exit=-13 a0=b a1=7fff035692f0 a2=10 a3=b items=0 ppid=13068 pid=13074 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=87 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)

Soluci贸n

Hay dos formas para permitir las conexiones externas desde el proceso de servidor web, la primera de ellas consiste en cambiar a modo permissive SELinux, esta soluci贸n aunque no es la recomendada, es la mas simple y nos evitar谩 futuros problemas con otros servicios. Esto lo hacemos ejecutando el siguiente comando:

# setenforce permissive

Y para hacer persistente el cambio se tiene que modificar la siguiente linea en el archivo /etc/sysconfig/selinux:

SELINUX=permissive

La segunda forma y de hecho, la recomendada, es cambiando la variable "httpd_can_network_connect_db" a "true", esto se logra de la siguiente forma:

# setsebool httpd_can_network_connect_db on

Podemos ver el estatus de SELinux utilizando el comando "sestatus" tal y como se muestra a continuaci贸n:

# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted

Referencias
SELinux Howto - CentOS Wiki
Remote database connection with httpd y selinux
tags
centos
linux
aws
amazon
rds
phpmyadmin
selinux
  • Inicie sesi贸n o registrese para enviar comentarios

脷ltimas publicaciones

  • Actualizaci贸n de Salt master para corregir problemas con minions
  • Bootstrapping de servidores con Terraform y Salt
  • Comandos LINUX / BSD para todos
  • Redimensionamiento de particiones UFS sobre FreeBSD
  • Error de conexi贸n de phpMyAdmin a AWS RDS (SELinux)
  • AWS S3 como sistema de archivos en Linux
  • Problema de conexi贸n FTP usando pure-ftpd (Timeout)
  • Operation not permitted - connect(2)

Publicaciones destacadas

  • Reducci贸n de latencia en arquitecturas h铆bridas con Amazon ElastiCache
  • Paravirtualizaci贸n con XenServer
  • Administraci贸n de m煤ltiples servidores usando Puppet
  • Servidores virtuales con ezjail
  • Manejo de respaldos con bacula
  • Configuraci贸n de MySQL Cluster en FreeBSD

Patrocinado por Nix Networks