Skip to content

supaplex.info Posts

Debian Wheezy: Instalar OwnCloud 5.0 sobre NGINX

 

Nota Preliminar:

Se va a instalar OwnCloud en un vhost llamado www.example.com/example.com, con el siquiente directorio para instalar los archivos:

/var/www/www.example.com/web

 

Previamente, deberá tener una instalación completa de NGINX. Para ello, puede seguir el siguiente documento:

http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-lemp-on-debian-wheezy

 

1. Instalación de APC y otros requerimentos

APC es un sistema de caché y optimizado para PHP. Es muy recomendable tenerlo instalado para tener una buena velocidad de carga de sus páginas web en PHP. Para instalarlo, debemos introducir el siguiente comando:

apt-get install php-apc

Posteriormente, instalamos los demás paquetes que necesitamos:

apt-get install php-xml-parser php5-intl php5-sqlite php5-mysql smbclient curl libcurl3 php5-curl

Una vez instalados los paquetes, reiniciamos el servidor PHP-Fpm:

/etc/init.d/php5-fpm reload

2. Instalación de OwnCloud

El directorio donde se alojarán los archivos, debe ser creado previamente (si no lo está ya), con el siguiente comando:

mkdir -p /var/www/www.example.com/web

El paso siguiente, es descargar la última versión estable de OwnCloud de su página web. OJO: Como ejemplo, se descarga la versión 5.0.13. Recuerde que debe descargar la última versión estable para un óptimo rendimiento y evitar posibles problemas con la seguridad de su servidor.

cd /tmp
wget http://download.owncloud.org/community/owncloud-5.0.13.tar.bz2
tar xvfj owncloud-5.0.13.tar.bz2
rm -f owncloud-5.0.13.tar.bz2
cd owncloud
mv * .htaccess /var/www/www.example.com/web/

Se recomienda cambiar los permisos de los ficheros de este directorio, para ajustarlos con los que posee NGINX, esto es: www-data como usuario y grupo.

chown -R www-data:www-data /var/www/www.example.com/web

A continuación, necesitará crear una base de datos. Deberá tener instalado correctamente el servidor de MySQL y procederá de la siguiente forma:

mysqladmin -u root -p create owncloud

Se deberá entrar a la consola de MySQL para poder dar los permisos adecuados a la base de datos que acabamos de crear (Recuerde: cambie el usuario y la contraseña por los suyos):

mysql -u root -p

GRANT ALL PRIVILEGES ON owncloud.* TO ‘owncloud_admin’@’localhost’ IDENTIFIED BY ‘owncloud_admin_password’;
GRANT ALL PRIVILEGES ON owncloud.* TO ‘owncloud_admin’@’localhost.localdomain’ IDENTIFIED BY ‘owncloud_admin_password’;

FLUSH PRIVILEGES;

quit;

Lo siguiente será crear la configuración para el vhost que usará NGINX:

vi /etc/nginx/sites-available/www.example.com.vhost

El contenido es el siguiente:

server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/www.example.com/web;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://www.example.com$request_uri permanent;
       }

       index index.php index.html;

       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }

       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }

       # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
       location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
       }

        client_max_body_size 10G; # set max upload size

        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
        rewrite ^/apps/calendar/caldav.php /remote.php/caldav/ last;
        rewrite ^/apps/contacts/carddav.php /remote.php/carddav/ last;
        rewrite ^/apps/([^/]*)/(.*\.(css|php))$ /index.php?app=$1&getfile=$2 last;
        rewrite ^/remote/(.*) /remote.php last;

        error_page 403 = /core/templates/403.php;
        error_page 404 = /core/templates/404.php;

        location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
                        deny all;
        }

        location / {
                        rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
                        rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

                        rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
                        rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

                        rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

                        try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ ^(.+?\.php)(/.*)?$ {
                        try_files $1 =404;
                        include fastcgi_params;
                        fastcgi_param SCRIPT_FILENAME $document_root$1;
                        fastcgi_param PATH_INFO $2;
                        fastcgi_param HTTPS $https;
                        fastcgi_pass unix:/var/run/php5-fpm.sock;
                        fastcgi_intercept_errors on;
                        fastcgi_index index.php;
                        fastcgi_buffers 64 4K;
        }

        location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                        expires 30d;
                        access_log off;
        }
}

Para activar el vhost, se deberá crear un enlace simbólico, como sigue:

cd /etc/nginx/sites-enabled/

ln -s /etc/nginx/sites-available/www.example.com.vhost www.example.com.vhost

Luego se deberá hacer un reload de NGINX:

/etc/init.d/nginx reload

Posteriormente se abre el navegador de su preferencia y cargamos:

http://www.example.com (RECUERDE: esto es un dominio ficticio, se deberá reemplazar por el propio).

Aparecerá la página de inicio de OwnCloud, donde se deberá especificar todos los datos que se usaron anteriormente (usuario y password para la base de datos, etc). Se ha de activar las propiedades avanzadas para seleccionar el tipo de base de datos (MySQL en este caso).

Si todo ha ido correctamente, la instalación ha finalizado.

Fuente: http://www.howtoforge.com/running-owncloud-5.0-on-nginx-lemp-on-debian-wheezy

Leave a Comment

Cómo proteger WordPress con fail2ban

Seguramente, os habéis percatado revisando los logs del sistema o bien viendo las visitas del sistema, que existen muchos accesos a la página de acceso de vuestro blog (esto es, wp-admin). Como medida preventiva, no debéis usar la cuenta de administrador. Cread otra para publicar entradas. También debéis tener una contraseña compuesta por número y letras formada de forma aleatoria, así como algún que otro carácter especial, como unos paréntesis.

A pesar de todo esto, como medida adicional para la seguridad podemos usar fail2ban para hacer aún más seguro nuestro blog.

Fail2ban es un software que revisa los logs del sistema denegando el acceso a las direcciones IP que él estima que se están “portando mal”. El baneo normalmente es temporal, aunque esto puede ser complétamente modificable.

Existen varias configuraciones llamadas filtros que podemos aplicar y configurar a los diferentes servicios que ofrecemos en nuestro servidor y/o workstation. Podemos proteger con fail2ban: SSH, SMTP, IMAP, HTTP, etc.

Para poder activar esta protección debemos instalar el siguiente plugin en nuestro WordPress:

  • WP Fail2ban

https://charles.lecklider.org/wordpress/category/plugins/wp-fail2ban/

Su instalación es muy sencilla. Podéis buscar el plugin desde el mismo blog, a la hora de instalar un plugin nuevo.

Una vez instalado, debemos ir al directorio donde nuestro WordPress guarda los plugins (normalmente wp-content/plugins/) y localizar el directorio del plugin WP Fail2ban que acabamos de instalar. Esto es:

wp-fail2ban

Dentro de este directorio, podemos ver el siguiente archivo:

wordpress.conf

El cual debemos copiar al directorio de configuración de “módulos” de fail2ban. En GNU/Linux Debian Wheezy (que es donde lo vamos a instalar) está en el siguiente directorio:

/etc/fail2ban/filter.d

Una vez copiado, editamos el siguiente fichero de configuración:

/etc/fail2ban/jail.conf

Y añadimos esto al final:

[wordpress]

enabled = true
port = http,https
filter = wordpress
logpath = /var/log/auth.log

Después, reiniciamos fail2ban:

sudo service fail2ban restart

Y ahora sólo nos queda esperar a que intenten acceder a nuestro WordPress con malas intenciones, y ver cómo fail2ban deniega el acceso a las direcciones IP que hagan más de 3 intentos fallidos al loguearse.

Leave a Comment

Instalar Lighttpd + php-fpm (PHP5) + MySQL en Fedora 19

Lighttpd es un servidor de páginas web seguro, rápido y conforme a los estándares diseñado para entornos donde la velocidad es crítica. En este tutorial veremos cómo instalar Lighttpd en un servidor con la versión 19 de Fedora con soporte PHP (a través de PHP-FPM) y MySQL. PHP-FPM es una implementación alternativa que usa PHP FastCGI, con algunas características adicionales. Es válido para sitios grandes como para sitios pequeños. Es especialmente útil para sitios con una carga elevada.

 

 

Fedora logo

En este tutorial usaré PHP-FPM en lugar de spawn-fcgi.

  • Nota preliminar: En este tutorial se usará el nombre de host servidor1.ejemplo.com con la dirección IP 192.168.0.1. Estos valores pueden diferir de los que necesite, por lo que tendrá que ajustarlos a sus necesidades.

Paso número uno: Instalar MySQL/MariaDB 5:

yum install mysql mysql-server

Posteriormente, activamos el servidor de base de datos, en este caso MySQL, para que sea iniciado en el arranque.

systemctl enable mysqld.service

systemctl start mysqld.service

Creación de una contraseña (para root) del servidor MySQL.

mysql_secure_installation

En este paso, omitiré las preguntas que nos hace el comando anterior. Básicamente, sólo tendrá que introducir la contraseña cuando se lo pida y elegir las opciones por defecto (tipo Sí/No) que el sistema le haga.

Paso número dos: Instalar Lighttpd:

yum install lighttpd

Al igual que con MySQL, debemos activar el servicio para que se arranque en el inicio, así como iniciarlo:

systemctl enable lighttpd.service

systemctl restart lighttpd.service

En este momento, ya tendrá activo el servidor Lighttpd. Para comprobar si todo funciona correctamente, podrá abrir un navegador y poner la siguiente dirección en la barra de direcciones:

http://192.168.0.1

Si todo funciona correctamente, verá la página por defecto de Lighttpd, con su “logotipo”.

El directorio por defecto donde Lighttpd guarda la página web mostrada, es el siguiente:

/var/www/lighttpd

La configuración para el servidor, puede encontrarla en el siguiente fichero:

/etc/lighttpd/lighttpd.conf

Paso número tres: Instalar PHP5:

Para hacer funcionar PHP5 a través de Lighttpd lo haremos a través de PHP-FPM. Se instalará de la siguiente manera:

yum install php-fpm lighttpd-fastcgi

PHP-FPM es un proceso que corre en el puerto 9000. Para hacerlo funcionar a la hora del arranque del sistema, se hará de la siguiente forma:

systemctl enable php-fpm.service

systemctl restart php-fpm.service

Paso número 5: Configuración de PHP-FPM y Lighttpd:

Para activar PHP-FPM en Lighttpd, se deberá modificar dos ficheros de configuración:

  • /etc/php.ini

Con el editor de texto de su preferencia, ha de buscar la línea:

cgi.fix_pathinfo=1

Y descomentarla. (Ésto es, eliminar el carácter ‘#‘ en su inicio).

  • /etc/lighttpd/conf.d/fastcgi.conf

Comprobaremos que el módulo mod_fastcgi está activo.

server.modules += ( “mod_fastcgi” )

Más abajo, en este mismo fichero, buscaremos las líneas de configuración fastcgi.server. Déjela comentada y cree una con los siguientes parámetros:

fastcgi.server += ( ".php" =>
        ((
                "host" => "127.0.0.1",
                "port" => "9000",
                "broken-scriptfilename" => "enable"
        ))
)

También deberá editar el fichero:

  • /etc/lighttpd/modules.conf

Y activar el fichero fastcgi.conf, anteriormente editado. Podrá hacerlo de la siguiente forma:

include “conf.d/fastcgi.conf”

Posteriormente, reiniciamos Lighttpd:

systemctl restart lighttpd.service

Paso número 5: Probando la instalación de PHP5 y obteniendo información de la misma:

En este paso, comprobaremos que PHP5 está funcionando correctamente. Para ello, editaremos un archivo en la ruta indicada posteriormente en el siguiente comando:

vi /var/www/lighttpd/info.php

El contenido del fichero que está editando, sería el siguiente:

<?php

phpinfo();

?>

Ahora, deberá ver el abrir el fichero editado a través del navegador:

http://192.168.0.1/info.php

En este momento, podrá ver si todo ha ido correctamente, la versión de PHP instalada, así como módulos y algunos parámetros de la configuración.

Deberá prestar especial atención a la línea “Server API“. En ésta, podrá ver si PHP realmente está funcionando a través de PHP-FPM.

Paso número 6: Activar el soporte MySQL en PHP5:

Para activar el soporte MySQL en PHP5, puede instalar el paquete php-mysql. Es posible que necesite soporte para algo más, por lo que puede buscar el módulo que necesite para su/sus aplicación/aplicaciones de esta forma:

yum search php

Escoja los que necesite. Puede instalarlos de la siguiente forma:

yum install php-gd php-imap php-mcrypt

Recuerde que en el comando anterior, puede ser usado para instalar cualquier módulo. Los anteriores son sólo un ejemplo.

Para que el módulo esté activo, reiniciaremos php-fpm:

systemctl restart php-fpm.service

Podrá ver que ahora sí aparece activo el soporte MySQL, si recarga la página de su navegador en donde vio los parámetros de PHP5:

http://192.168.0.1/info.php

Es posible modificar PHP-FPM para que use un socket de UNIX, en lugar del puerto 9000. No explicaremos esto en este documento. Podrá ver cómo hacerlo en el documento original que usé para traducir/modificar y que dio como resultado éste. Dicho documento estará en los enlaces, al final.

Enlaces

Leave a Comment