clamav

¿Cómo excluir ficheros en clamav? Ejemplo

En una entrada anterior hablábamos de un repaso de ficheros para detección de virus o malware con clamav.

 

https://blog.okitup.com/ejemplo-sencillo-clamav-antivirus-antimalware/

En el ejemplo salía la posibilidad de excluir carpetas.

En este ejemplo incluimos la posibilidad de excluir fichero:

–exclude=”(.jpg|.jpeg|.png|.tiff|.gif|.mp3)$”

Quedando algo como:

clamscan -r –exclude-dir=^/log\|^/cache\|^/tmp –exclude=”(.jpg|.jpeg|.png|.tiff|.gif|.mp3)$” /var/www/ -l /home/okitup/clamav_sites.log

Hasta pronto!

clamav

Ejemplo sencillo clamav (antivirus, antimalware, …)

Os adjuntos un ejemplo de ejecución de clamav:

clamscan -r  /var/www/ -l /home/okitup/clamav_sites.log

Carpeta origen a escanear y fichero de log donde guardar la información de los registros escaneados.

Si hay infección un rápido cat-grep para verlos más claros:

cat /home/okitup/clamav_sites.log | grep -Ev ‘Symbolic|Empty’

Mismo ejemplo pero excluyendo directorios que no queremos revisar:

clamscan -r –exclude-dir=^/log\|^/cache\|^/tmp /var/www/ -l /home/okitup/clamav_sites.log

Hasta pronto!

 

influxdb-light4002

¿Qué es InfluxDB y como funciona?

influxdb es un servidor de base de datos de series de tiempo (timeseries), ideal para logs o datos para gráficas que se generen en vivo (dashboards, …).

Programado en go permite la interacción via API HTTP(S) (JSON) e interficie web y los datos de gestionan con un lenguaje similar a SQL.

En las tablas no hay que tener una previsión de las columnas que tendrá, se pueden añadir al vuelo.

Con un simple comando curl via CLI se puede realizar la inserción :

curl -X POST -d ‘[{\”name\”:\”Tabla\”,\”columns\”:[\”desde\”,\”type\”,\”value\”],\”points\”:[[\”monitor-NY\”,\”respuesta-web\”,124]]}]’ ‘http://influxdb.domain.tld:8086/db/graph/series?u=usuario&p=contraseña’

El aspecto de una query a los datos :

select * from Tabla where desde = ‘monitor-NY’ and time > now() – 1h

Existen librerías de cliente para multitud de lenguajes.

log_mysql2

Cómo activar los logs de mysql de forma online, ejemplo

Para poder activar los logs de mysql sin la necesidad de reiniciar el servicio se puede ejecutar una sencilla instrucción.

Para ver si esta activado y para ver también el fichero donde se van a guardar:

show variables like ‘general_log%’;

Para activar los logs:

set global general_log=1;

Si a continuación dejamos un “tail -f” del fichero log, veremos todas las queries que están ejecutando y que se están registrando en el log.

Para desactivar:

set global general_log=0;

Hasta pronto!!!

newrsynclogo

Ejemplos rsync

Unos sencillos ejemplos de la herramienta rsync.

Trayendo los datos desde otro server al server donde se ejecuta el rsync:

Opción adicional: Rsync excluyendo directorio

rsync -avz --exclude 'tmp' server1.okitup.com:/home/serv1okitup/ /home/serv2okitup/

Enviando los datos desde el servidor donde se ejecuta rsync a otro server destino:

Opción adicional: Con distinto puerto ssh

rsync -avu --rsh='ssh -p41555' /home/serv1okitup/ root@server2.okitup.com:/home/serv2okitup/
original

Owncloud – Descifrar ficheros manualmente

Con el siguiente script se puede descrifrar el contenido de un fichero cifrado de owncloud.

El script php quedaría así:

<?php
 require_once 'crypt.php';

// first get users private key and decrypt it
 $encryptedUserKey = file_get_contents("/var/www/clients/client1/web1/web/data/user1/files_encryption/test.txt.private.key");
 $decryptedUserKey = OCA\Encryption\Crypt::decryptPrivateKey($encryptedUserKey, "admin");

// now we need to decrypt the file-key, therefore we use our private key and the share key
 $shareKey = file_get_contents("/var/www/clients/client1/web1/web/data/user1/files_encryption/share-keys/documents/test.txt.user1.shareKey");
 $encryptedKeyfile = file_get_contents("/var/www/clients/client1/web1/web/data/user1/files_encryption/keyfiles/documents/test.txt.key");
 $decryptedKeyfile = OCA\Encryption\Crypt::multiKeyDecrypt($encryptedKeyfile, $shareKey, $decryptedUserKey);

// finally we can use the decrypted file-key to decrypt the file
 $encryptedContent = file_get_contents("/var/www/clients/client1/web1/web/data/user1/files/documents/test.txt");
 $decryptedContent = OCA\Encryption\Crypt::symmetricDecryptFileContent($encryptedContent, $decryptedKeyfile);

//echo "result: " . $decryptedContent . "\n";
 echo $decryptedContent;
 ?>

Observaciones:

  • Hay un require de crypt.php, se tiene que tener en cuenta ehhh 😉
  • Se tiene que disponer de la private.key, del shareKey y del keyfile para poder realizar el descifrado.

Hasta pronto,

???????????????????????????????????????????????????????????????????????????????????????????

Scripting : xargs – paths con espacios – wildcard

Cuando queremos ejecutar comandos shell – sobretodo ‘find’ – enlazados via pipe que incluyen paths, directorios o carpetas con espacios nos encontramos con problemas cuando recogemos una salida y queremos aplicarle un comando xargs.

La solución es decirle a find que acabe sus resultados con el caracter null y avisar a xargs que le van a llegar entradas con el caracter null :

find /path/con espacios/ -type f -print0 | xargs -0 -I % ls %

Si el comando que alimenta xargs no puede añadir el carater null podemos ‘encapsular’ el resultado entre comillas con un sed :

ls /path/con espacios/ | sed 's/.*/"&"/' | xargs -I % echo %

Finalmente, si queremos usar una wildcard en un comando ejecutado por xargs tenemos que ‘encapsularlo’ en un nuevo shell :

find /path/con espacios/ -type f -print0 | xargs -0 -I % sh -c 'ls "%"*sufijoespecialqueestamosbuscando'
ownCloud

Owncloud regenerar sharekeys

Os pasamos un script que os permitirá una acción de owncloud muy interesantes.

Se trata de generar las sharekeys de owncloud si por algún motivo no se han generado correctamente o han quedado corruptas.

La única pega que hemos visto es que necesitas como mínimo que exista la sharekey del que comparte y a partir de aquí genera la key del fichero y las nuevas sharekey de los usuarios para que puedan ser sustituidas o movidas. Decimos pega porque puede ser que precisamente lo que necesitéis sea generar la sharekey del que comparte :/

<?php


// This script is meant to be called from CLI

// The script generates a new set of shareKeys and the encrypted file-key for an encrypted shared file
// if the share owner already has its


if ($argc<2) {
fwrite(STDERR, "Object needed\n");
exit(1);
}


// I placed the script in a subfolder of owncloud web-root
require_once '../apps/files_encryption/lib/crypt.php';


$startdir=$_SERVER['PWD'];
$SHAREOWNER = 'BoxSMC';
$OWNERPASSWORD = 'Zp5rW6+@4uSh5-7';
$OCDATADIR="/var/www/boxsmc.cloudatta.com/web/data";
$WORKDIR=$startdir . "/work-" . $SHAREOWNER ."/files_encryption";

$myAllowUsers = array($SHAREOWNER,"operez@federacio.salutmental.org");


// the file for we need new keys has to be relative to the "files" folder of the share-owner
$OBJECTNAME = $argv[1];

if (!is_file($OCDATADIR."/".$SHAREOWNER."/files_encryption/keyfiles/".$OBJECTNAME.".key")) {
        fwrite(STDERR, 'No keyfile found for Object, cannot continue');
        exit(1);
}


$FILENAME = basename($OBJECTNAME);
$OPATH = dirname($OBJECTNAME);

// first get share owners private key and decrypt it
$encryptedUserKey = file_get_contents("$OCDATADIR/$SHAREOWNER/files_encryption/$SHAREOWNER.private.key");
$decryptedUserKey = OCA\Encryption\Crypt::decryptPrivateKey($encryptedUserKey, $OWNERPASSWORD);

// now we need to decrypt the file-key, therefore we use the private key and the share key
$shareKey = file_get_contents("$OCDATADIR/$SHAREOWNER/files_encryption/share-keys/$OBJECTNAME.$SHAREOWNER.shareKey");
$encryptedKeyfile = file_get_contents("$OCDATADIR/$SHAREOWNER/files_encryption/keyfiles/$OBJECTNAME.key");
$decryptedKeyfile = OCA\Encryption\Crypt::multiKeyDecrypt($encryptedKeyfile, $shareKey, $decryptedUserKey);

// then we get the users public key
$userPubKeys = array();
foreach ( $myAllowUsers as $myAllowUser ) {
        $userPubKeys[$myAllowUser] = file_get_contents("$OCDATADIR/public-keys/" . $myAllowUser . '.public.key');
}
// generating the new keys
$multiEncKey = OCA\Encryption\Crypt::multiKeyEncrypt($decryptedKeyfile, $userPubKeys);

$newshareKeys = $multiEncKey['keys'];
$newKeyfile = $multiEncKey['data'];


// create recursive work directory structure for keyfiles and share-keys if needed
if (!is_dir($WORKDIR . "/share-keys/" . $OPATH)) {
                if (!mkdir($WORKDIR . "/share-keys/" . $OPATH, 0770, true)) {
                        fwrite(STDERR, 'Failed to create folders...');
                        exit(1);
                        }
}
if (!is_dir($WORKDIR . "/keyfiles/" . $OPATH)) {
                if(!mkdir($WORKDIR . "/keyfiles/" . $OPATH, 0770, true)) {
                        fwrite(STDERR, 'Failed to create folders...');
                        exit(1);
                }
}


// storing the key files
foreach ($newshareKeys as $userId => $newshareKey) {
        file_put_contents($WORKDIR . "/share-keys/" . $OBJECTNAME . "." . $userId . ".shareKey", $newshareKey);
}

file_put_contents($WORKDIR . "/keyfiles/" . $OBJECTNAME . ".key", $newKeyfile);

fwrite(STDERR, "Done $FILENAME\n");

Recomendamos revisar los parámetros de entrada en la fuente que nos ayudó a nosotros:

https://github.com/gnanet/misc-scripts/tree/master/owncloud (Interesante ver también: oc-sharekey-robot.sh)

Próximamente, script de descifrado de ficheros 🙂

linkITup – Links interesantes sobre Administración de Sistemas

Monitorización de PostgreSQL con OPM

zerotier nos permite hacer virtualización de red de manera sencilla.

El servidor web gwan publica benchmarking y la herramienta con la que lo ha realizado.

Presentación de Scripting en lua para nginx (openresty)

Datamash es una utilidad GNU para realizar operaciones numéricas, de texto o estadísticas básicas

Animaciones de Algoritmos y estructuras de datos

Lime es un editor opensource en la línea de Sublime Text desarrolado en Go

Tox nos da mensajeria, llamadas y vídeo con la máxima privacidad

Explicaciones del funcionamiento de Git con ejemplos

Windows Manager para linux para olvidarse del ratón : ratpoison

Leerse este blog antes de realizar una instalación ZFS : readme1st

Mailvelope nos proporciona PGP para webmail

Guacamole es un servidor para Remote desktop que no necesita instalar un cliente, sólo un browser en HTML5