Actualizaciones e instalación de plugins y temas en wordpress

WordPress permite que una instalación pueda ser actualizada y que nuevos temas o plugins puedan ser instalados vía web, desde el propio menú de administración.

Este artículo implementa las configuraciones recomendadas por Updating WordPress y Servidor Debian proftpd para instalar un servicio FTP seguro que permita las actualizaciones automáticas de WordPress en un servidor.

Prerrequisitos

  • Se parte de un sistema instalado según Cómo instalar wordpress sobre NGINX. Todas las referencias a directorios y archivos y demás datos se basan en los valores utilizados en este ejemplo.
  • Se dispone de un nombre de dominio (FQDN) sobre el que se accederá al servicio de transferencia de ficheros. En este ejemplo será ftp.example.org.
  • Se cuenta con un certificado para el dominio. Ya sea auto-firmado como se explica en How to create SSL certificates u obtenidos por una central de autenticación como los provistos por [https://www.startssl.com/ Startcom Ltd.]. En cualquier caso se cuenta con un certificado alojado como /etc/ssl/certs/ftp.example.org.cert y una clave privada /etc/ssl/private/ftp.example.org.key.

    Instalación de software

    Para implementar el servicio FTP seguro se instala proftpd e xinetd.

    # aptitude install proftpd xinetd
    

    Ante la pregunta del sistema acerca de cómo operará el servidor proftpd, se responde que se utilizará la opción from inetd.

    Creación de usuario administrativo

    Se debe crear un usuario que será el dueño de los archivos que componen la aplicación pero que no podrá hacer login en el sistema.
    Sobre este usuario, que en este ejemplo se denomina wp‑adm se realizarán las descargas de las actualizaciones.
    Se crea el usuario con el comando:

    # adduser --home /var/local/wordpress --no-create-home wp-adm
    

    Al ejecutar el comando anterior, el sistema solicita la clave del usuario y datos descriptivos del uso que se dará a esta cuenta.
    Se debe tomar nota del nombre y la password del usuario ya que estos datos serán requeridos cada vez que se soliciten actualizaciones a través del cliente web.

    Se asocia el usuario al grupo www‑data para tener acceso a los directorios de la aplicación.

    # adduser wp-adm www-data
    

    Y permitimos a los usuarios del grupo www‑data escribir sobre los directorio uploads y upgrade de WordPress.

    # chmod -R g+rw /var/local/wordpress/wp-content/uploads/
    # chmod -R g+rw /var/local/wordpress/wp-content/upgrade/
    

    Configuración del servicio

    Configuración de proftpd.conf

    Realizamos los siguientes ajustes en /etc/proftdp/proftpd.conf:

    • Se desactiva IPv6, se especifica el nombre del servidor y se activa el modo inetd de funcionamiento.
      # Set off to disable IPv6 support which is annoying on IPv4 only boxes.
      UseIPv6                         off
      # If set on you can experience a longer connection delay in many cases.
      IdentLookups                    off
       
      ServerName                      "ftp.example.org"
      ServerType                      inetd
      DeferWelcome                    off
      
    • Se restringe el acceso de los usuarios a su propio directorio home
      # Use this to jail all users in their homes
      DefaultRoot ~
      
    • Se asigna el puerto IP por defecto del servicio.
      # Port 21 is the standard FTP port.
      Port 21
      
    • Se ajustan los permisos de manera que tanto el dueño como el grupo al que pertenece tengan permiso de escritura sobre los ficheros subidos mientras que el resto de los usuarios tengan bloqueado cualquier acceso.
      # Umask 022 is a good standard umask to prevent new files and dirs
      # (second parm) from being group and world writable.
      Umask 007 007
      # Normally, we want files to be overwriteable.
      AllowOverwrite on
      
    • Se activa el logging manteniendo la zona horaria del servidor.
      TransferLog /var/log/proftpd/xferlog
      SystemLog /var/log/proftpd/proftpd.log
      
      # Logging onto /var/log/lastlog is enabled but set to off by default
      UseLastlog on
      
      # In order to keep log file dates consistent after chroot, use timezone info
      # from /etc/localtime. If this is not set, and proftpd is configured to
      # chroot (e.g. DefaultRoot or ), it will use the non-daylight
      # savings timezone regardless of whether DST is in effect.
      SetEnv TZ :/etc/localtime
      
    • Se activa la configuración del modo de funcionamiento seguro.
      #
      # This is used for FTPS connections
      #
      Include /etc/proftpd/tls.conf
      

    Configuración de tls.conf

    Habiendo habilitado la directiva Include /etc/proftpd/tls.conf, corresponde configurar el fichero /etc/proftpd/tls.conf ajustando las siguientes directivas dentro del bloque <IfModule mod_tls.c> ... </IfModule>:

    • Se activa el modo seguro, se permite logging y se especifica los niveles de protocolo a soportar.
      TLSEngine                               on
      TLSLog                                  /var/log/proftpd/tls.log
      TLSProtocol                             SSLv23
      
    • Se especifica el certificado y se ajustan las opciones del cliente.
      TLSRSACertificateFile                   /etc/ssl/certs/ftp.example.org.cert
      TLSRSACertificateKeyFile               /etc/ssl/private/ftp.example.org.key
      TLSOptions                 NoCertRequest EnableDiags NoSessionReuseRequired
      
    • Se fuerza el protocolo para opera exclusivamente en modo seguro.
      TLSRequired                             on
      
    • Se permiten las renegociaciones iniciadas por el cliente.
      TLSRenegotiate                          required off
      

    Configuración de xinetd

    Se crea un fichero /etc/xinetd.d/ftp con el siguiente contenido:

    service ftp
    {
        disable     = no
        flags       = REUSE
        socket_type = stream
        wait        = no
        user        = root
        server      = /usr/sbin/proftpd
        server_args = -c /etc/proftpd/proftpd.conf
    }
    

    Validación

    Se accede con un cliente que soporte el protocolo (por ejemplo Filezilla usando la URL ftpes://ftp.example.org), se autentica con el usuario wp‑adm y la clave asignada y se intentar subir y descargar algún archivo de los directorios wp‑content/upgrade y wp‑content/uploads.

    En caso de problemas asociados con la lectura del certificado, utilizar el comando que se muestra en proftpd: FTP and SSL/TLS

    $ openssl s_client -connect ftp.example.org:21 -starttls ftp
    

José Administrator
Apasionado por el software, la electrónica y la fotografía.
follow me

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *