jueves, 30 de junio de 2016

Convertir archivo de vídeo flv a mp4 en ubuntu


Primero instalamos lo siguiente

sudo apt-get install libav-tools


Ejecutamos este comando con el fichero flv que queremos convertir

avconv -i input.flv -codec copy output.mp4


Fuente: http://askubuntu.com/questions/505333/flv-to-mp4-converter-in-trusty

martes, 31 de mayo de 2016

Certificado selfsigned para apache


En cualquier directorio temporal creamos la RSA private key

openssl genrsa -des3 -out server.key 1024


Creamos el csr (Certificate signing request)

openssl req -new -key server.key -out server.csr


Quitamos la palabra de paso para que apache no nos la pida cada  vez que se inicia.

mv server.key server.key.org
openssl rsa -in server.key.org -out server.key



Creamos el certificado selfsigned

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt


Luego copiamos el server.crt en la ruta /etc/pki/tls/certs/server.crt
y el server.key en /etc/pki/tls/private/server.key

la configuración de ssl en apache se encuentra el el fichero /etc/httpd/conf.d/ssl.conf

tendremos que configurar estas entradas:

SSLCertificateFile /etc/pki/tls/certs/server.crt

SSLCertificateKeyFile /etc/pki/tls/private/server.key


Fuente: http://www.zunisoft.com/2008/10/kb-xampp-ssl-configuration-on-ubuntu.html

lunes, 16 de mayo de 2016

Copia de archivos en owncloud 8.2 por SSH


Cuando copiamos archivos " a pelo" mediante ssh sin utilizar la web owncloud ni webdav los archivos se copian pero no los vemos desde la web de owncloud. Con versiones anteriores esto no pasaba, simplemente cambiando al propietario y el grupo ya se veían los archivos copiados por ssh.

Ahora es necesario hacer lo siguiente o por lo menos esta es la forma que he encontrado para solucionarlo. Cambiamos los permisos chown apache y chgrp apache de los archivos copiados y se fuerza el escaneo de todo. (podría hacerse solo de un usuario).

sudo -u apache php occ files:scan --all


Fuente: http://www.sgarnica.org/en/manually-rescan-data-in-owncloud-8-2-1-on-centos-7/

jueves, 14 de enero de 2016

cron owncloud no funciona

Puede darse el caso de que al seleccionar "cron del sistema" en la configuración de cron, veamos que no ejecuta lo configurado en el crontab.
En mi caso aparecía esta línea de error en el log de owncloud:

{"reqId":"7qmGW1I+Gcvxg36z+5RO","remoteAddr":"","app":"cron","message":"Missing memcache class \\OC\\Memcache\\APCu for local cache","level":4,"time":"2016-01-14T19:00:01+01:00"}

El caso es que tenía configurado en el config.php de owncloud el parámetro:

 'memcache.local' => '\\OC\\Memcache\\APCu',

Y faltaba configurar en el fichero de configuración de php, /etc/php.ini/apcu.ini el parámetro:

apc.enable_cli=1

También hay que crear el fichero del crontab para el usuario apache que es mi caso:

crontab -u apache -e

y añadir la siguiente línea:

*/15  *  *  *  * php -f /var/www/html/owncloud/cron.php > /dev/null 2>&1

Con esto se ejecutará cron.php cada 15 minutos.

viernes, 2 de octubre de 2015

owncloud pdf sin imágenes

El problema se plantea cuando al abrir un pdf desde owncloud utilizando el pdfviewer (app que tenemos activada por defecto) vemos que las imágenes insertadas en el pdf (jpg) aparecen como marcos en blanco. Esto hasta la versión 8.1 se resuelve editando el fichero /var/www/htdocs/owncloud/apps/files_pdfviewer/tests/bootstrap.php y modificándolo añadiendo las líneas en rojo. Con esto se soluciona para chrome, para firefox no.


global $RUNTIME_NOAPPS;
$RUNTIME_NOAPPS = true;

if (!defined('PHPUNIT_RUN')) {
define('PHPUNIT_RUN', 1);
}

require_once __DIR__.'/../../../lib/base.php';

\OC::$loader->addValidRoot(\OC::$SERVERROOT . '/tests');
+\OC_App::loadApp('files_pdfviewer');


if(!class_exists('PHPUnit_Framework_TestCase')) {
require_once('PHPUnit/Autoload.php');
}

OC_Hook::clear();
OC_Log::$enabled = false;

Con la versión 8.1.3 me descargué el pdfviewer  de aquí ya que con el que viene con la actualización no me funcionaba el chrome tampoco. Con esta si que funciona el chrome, se ven las imágenes jpg de los pdf.
Para el firefox de momento creo que no hay solución, solo deshabilitar el csp en la configuración about:config buscar security.csp.enabled y ponerlo a false.

Fuentes:
https://github.com/owncloud/files_pdfviewer/pull/65
https://github.com/owncloud/files_pdfviewer/issues/60

jueves, 10 de septiembre de 2015

iptables: Banear ips automaticamente con lista

Esta es una solución sencilla para tener una lista de ips baneadas que podemos administrar fácilmente.
Hay soluciones más complejas y avanzadas como esta. Yo he optado por la más simple ya que de momento el volumen de ataques no es demasiado alto.
Esta solución la he sacado de este enlace el script esta explicado muy bien. Tiene algún fallito. falta declarar la variable TEMP y falta poner el parametro "-f" en el comando cp de la función unban. Este es el script tal y como yo lo estoy utilizando.

Creamos la carpeta /etc/myOwnFirewall y el script myOwnFirewall dentro de ella

mkdir /etc/myOwnFirewall
vi /etc/myOwnFirewall/myOwnFirewall


El contenido del script sería el siguiente

#!/bin/bash

# myOwnFirewall v0.1
#
# Script para banear IPs
#
# Author: Rolando Caldas
# http://rolandocaldas.com
#
# https://github.com/rolando-caldas/myOwnFirewall

BANNED_IPS="/etc/myOwnFirewall/banList.txt"
LOCK="/etc/myOwnFirewall/.lock"
TEMP="/etc/myOwnFirewall/temp"

function banIP {
        if [ -f ${LOCK} ]
        then
                if [ $# -eq 0 ]
                then
                        echo "You must enter an ip address"
                else
                        ip=$1
                        exists=false
                        for i in `cat $BANNED_IPS`; do
                                if [ $i = $ip ]
                                then
                                        exists=true
                                fi
                        done

                        if [ $exists = false ]
                        then
                                echo $ip >> $BANNED_IPS
                                iptables -I INPUT -s $ip -j DROP
                                iptables -I OUTPUT -s $ip -j DROP
                                echo "IP ${ip} banned"
                        else
                                echo "IP ${ip} already in the list"
                        fi
                fi
        else
                echo "myOwnFirewall is not running"
        fi
}

function restartScript {
        stopScript
        startScript
}

function showHelp {
        echo "Usage: myOwnFirewall {start|stop|restart}"
}

function startScript {

        if [ -f ${LOCK} ]
        then
                echo "myOwnFirewall is already running"
                exit
        else
                ` > ${LOCK}`

                for i in `cat $BANNED_IPS`; do
                        iptables -I INPUT -s $i -j DROP
                        iptables -I OUTPUT -s $i -j DROP
                done

                echo "myOwnFirewall started"
        fi

}

function stopScript {
        if [ -f ${LOCK} ]
        then
                for i in `cat $BANNED_IPS`; do
                        iptables -D INPUT -s $i -j DROP
                        iptables -D OUTPUT -s $i -j DROP
                done
                rm ${LOCK}

                echo "myOwnFirewall stopped"
        else
                echo "myOwnFirewall is not running"
        fi
}

function unbanIP {
        if [ -f ${LOCK} ]
        then
                if [ $# -eq 0 ]
                then
                        echo "You must enter an ip address*"
                else
                        ip=$1
                        exists=false

                        for i in `cat $BANNED_IPS`; do
                                if [ $i = $ip ]
                                then
                                        exists=true
                                else
                                        echo $i >> $TEMP
                                fi
                        done

                        if [ $exists = false ]
                        then
                                echo "IP ${ip} doesn't in the list"
                        else
                                cp -f $TEMP $BANNED_IPS && rm $TEMP
                                iptables -D INPUT -s $ip -j DROP
                                iptables -D OUTPUT -s $ip -j DROP
                                echo "IP ${ip} unbanned"
                        fi
                fi
        else
                echo "myOwnFirewall is not running"
        fi
}

case "$1" in
        ban)
                banIP $2
                exit
                ;;
        restart)
                restartScript
                exit
                ;;
        start)
                startScript
                exit
                ;;
        stop)
                stopScript
                exit
                ;;
        unban)
                unbanIP $2
                exit
                ;;
        *)
                showHelp
                exit
                ;;
esac


En centos y redhat es algo distinto a debian el funcionamiento de iptables los cambios en las reglas no se guardan a no ser que lo forcemos con "service iptables save".
Yo no me he complicado mucho y ejecuto el script con el parámetro start en el inicio del sistema en el rc.local y borro el fichero .lock en el shutdown. He aprovechado el script de iptables en el init.d y he añadido la línea rm -f /etc/myOwnFirewall/.lock en la función stop(). De este modo cuando se detiene el servicio iptables borra el fichero .lock que le sirve al script para saber si el baneado de ips está activo.
El funcionamiento del script está muy bien explicado en este enlace

jueves, 3 de septiembre de 2015

Apache: baneo de ips por códigos de error y palabras clave.

Este "jail" es sencillo y efectivo permite banear las ips en el momento aparece en el log de accesos de apache alguno de los códigos de error que especificamos en el "failregex" del filtro.
Es necesario incluir en "ignoreregex" las palabras clave de aquellos falsos ataques, errores que provoca por ejemplo owncloud con las subidas de instantáneas (cuando tenemos sincronizado nuestro android para que suba las fotos automáticamente).
Añadimos las siguientes líneas al archivo de conguración jail.local

[apache-misc]
enabled = true
filter = apache-misc
action = iptables-multiport[name=apache-misc,port="80,443"]
sendmail-whois[name=apache-misc, dest=alertas@micorreo.com, sender=alertas@micorreo.com, sendername="Fail2Ban"]
logpath = /opt/lampp/logs/access_log
maxretry = 1

maxretry: Especifica cuantos intentos vamos a dejar antes de banear la ip.

Ahora creamos el archivo de filtrado en /etc/fail2ban/filters.d/apache-misc.conf y dentro de el colocamos el siguiente contenido:

[Definition]
failregex = .*"[A-Z]* /(cms|user|muieblackcat|db|cpcommerce|wp-login|joomla|awstatstotals|wp-content|wp-includes|pma|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|pmadb|phpmyadmin1|phpmyadmin2).*"
.*\" (502|500|417|416|415|414|413|412|404|405|403|401|400)
ignoreregex = .*\"GET \/.*(ciruela|press|mailto|domestic|word|externalShares).*
.*\"HEAD \/.*SubidasInstant.*
.*\"GET \/.*SubidasInstant.*

Todas estas palabras clave son a modo de ejemplo. Son las que podría un atacante intentar localizar.
Lo que si me ha funcionado son las dos últimas líneas para evitar los falsos errores 404 que provocaba owncloud.

Reiniciamos fail2ban

service fail2ban restart

Fuente:http://www.linux-magazine.com/Online/Features/Intrusion-Detection-with-fail2ban