miércoles, 6 de febrero de 2013

Situaciones cotidianas de un SysAdmin

Revisando mis RSS me encontré con una situaciones muy cómicas que pueden reflejar el día a  día de los SysAdmin.


Remplazo de un servidor

Cuando te das cuenta que el servidor no prende


Cuando te enteras que no hay bono.

Cuando presentas tu proyecto ante el comité... y falla.

Cuando le pides al usuario que reproduzca la falla para determinar por que no resulto.

Ultimas vulnerabilidades en pfsense 2.0.1




Navegando por la web me encontré con un interesante articulo sobre las ultimas vulnerabilidades que afectan a nuestro firewall favorito.

Como el Articulo no es mio dejare el link para que lo revisen en la pagina del autor.


lunes, 17 de diciembre de 2012

Marcha Imperial con Arduino

Bueno el proyecto no es de mi autoria, pero de ise unos cambios ya que no se si el puerto que ocupaba requería resistencia...

Mas tarde subiré un vídeo mostrando como quedo.


int ledPin = 13;
//led for visualization (use 13 for built-in led)

int speakerPin = 6;
//speaker connected to one of the PWM ports

#define c 261
#define d 294
#define e 329
#define f 349
#define g 391
#define gS 415
#define a 440
#define aS 455
#define b 466
#define cH 523
#define cSH 554
#define dH 587
#define dSH 622
#define eH 659
#define fH 698
#define fSH 740
#define gH 784
#define gSH 830
#define aH 880
//frequencies for the tones we're going to use
//used http://home.mit.bme.hu/~bako/tonecalc/tonecalc.htm to get these

void setup()
{
  pinMode(ledPin, OUTPUT);
  // sets the ledPin to be an output
  pinMode(speakerPin, OUTPUT);
  //sets the speakerPin to be an output
}
 
void loop() // run over and over again
{
  march();
}
 
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)
{
    digitalWrite(ledPin, HIGH);
    //use led to visualize the notes being played
 
    int x;
    long delayAmount = (long)(1000000/frequencyInHertz);
    long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
    for (x=0;x<loopTime;x++)
    {
        digitalWrite(speakerPin,HIGH);
        delayMicroseconds(delayAmount);
        digitalWrite(speakerPin,LOW);
        delayMicroseconds(delayAmount);
    }
 
    digitalWrite(ledPin, LOW);
    //set led back to low
 
    delay(20);
    //a little delay to make all notes sound separate
}
 
void march()
{
    //for the sheet music see:
    //http://www.musicnotes.com/sheetmusic/mtd.asp?ppn=MN0016254
    //this is just a translation of said sheet music to frequencies / time in ms
    //used 500 ms for a quart note
 
    beep(speakerPin, a, 500);
    beep(speakerPin, a, 500);  
    beep(speakerPin, a, 500);
    beep(speakerPin, f, 350);
    beep(speakerPin, cH, 150);
 
    beep(speakerPin, a, 500);
    beep(speakerPin, f, 350);
    beep(speakerPin, cH, 150);
    beep(speakerPin, a, 1000);
    //first bit
 
    beep(speakerPin, eH, 500);
    beep(speakerPin, eH, 500);
    beep(speakerPin, eH, 500);  
    beep(speakerPin, fH, 350);
    beep(speakerPin, cH, 150);
 
    beep(speakerPin, gS, 500);
    beep(speakerPin, f, 350);
    beep(speakerPin, cH, 150);
    beep(speakerPin, a, 1000);
    //second bit...
 
    beep(speakerPin, aH, 500);
    beep(speakerPin, a, 350);
    beep(speakerPin, a, 150);
    beep(speakerPin, aH, 500);
    beep(speakerPin, gSH, 250);
    beep(speakerPin, gH, 250);
 
    beep(speakerPin, fSH, 125);
    beep(speakerPin, fH, 125);  
    beep(speakerPin, fSH, 250);
    delay(250);
    beep(speakerPin, aS, 250);  
    beep(speakerPin, dSH, 500);
    beep(speakerPin, dH, 250);
    beep(speakerPin, cSH, 250);
    //start of the interesting bit
 
    beep(speakerPin, cH, 125);
    beep(speakerPin, b, 125);
    beep(speakerPin, cH, 250);    
    delay(250);
    beep(speakerPin, f, 125);
    beep(speakerPin, gS, 500);
    beep(speakerPin, f, 375);
    beep(speakerPin, a, 125);
 
    beep(speakerPin, cH, 500);
    beep(speakerPin, a, 375);
    beep(speakerPin, cH, 125);
    beep(speakerPin, eH, 1000);
    //more interesting stuff (this doesn't quite get it right somehow)
 
    beep(speakerPin, aH, 500);
    beep(speakerPin, a, 350);
    beep(speakerPin, a, 150);
    beep(speakerPin, aH, 500);
    beep(speakerPin, gSH, 250);
    beep(speakerPin, gH, 250);
 
    beep(speakerPin, fSH, 125);
    beep(speakerPin, fH, 125);  
    beep(speakerPin, fSH, 250);
    delay(250);
    beep(speakerPin, aS, 250);  
    beep(speakerPin, dSH, 500);
    beep(speakerPin, dH, 250);
    beep(speakerPin, cSH, 250);
    //repeat... repeat
 
    beep(speakerPin, cH, 125);
    beep(speakerPin, b, 125);
    beep(speakerPin, cH, 250);    
    delay(250);
    beep(speakerPin, f, 250);
    beep(speakerPin, gS, 500);
    beep(speakerPin, f, 375);
    beep(speakerPin, cH, 125);
         
    beep(speakerPin, a, 500);          
    beep(speakerPin, f, 375);          
    beep(speakerPin, c, 125);          
    beep(speakerPin, a, 1000);    
    //and we're done \ó/  
}

Fuente : https://gist.github.com

Busqueda: Placa Arduino Uno

Arduino: Hola Mundo Led

Este el el programa mas simple para hacer con nuestro Arduino. Consiste en hacer que un led prenda y apague en determinados tiempos.

Se le ha agregado un adicional para que muestre el estatus en el monitor serial.



//------------------------------------
//Declara puertos de entradas y salidas
//------------------------------------
int ledPin =  13;    // Declara el LED en el Pin 13
 //------------------------------------
//Funcion principal
//------------------------------------
void setup()              // Esta función corre cada vez que se
           //inicia el Arduino
{              
    pinMode(ledPin, OUTPUT);  // Inicializa el LED como una salida
    Serial.begin(9600);
}

//------------------------------------
//Funcion ciclicla
//------------------------------------
void loop()                 // Esta funcion se mantiene ejecutando
      // cuando este energizado el Arduino
{
  Serial.println("Led ON");
  digitalWrite(ledPin, HIGH);   // Enciende el LED
  delay(100);  // Temporiza un segundo (1s = 1000ms)
  Serial.println("Led OFF");
  digitalWrite(ledPin, LOW);    // Apaga el LED
  delay(3000);                  // Temporiza un segundo (1s = 1000ms)
}    




Fuente : http://www.cosasdemecatronica.com

domingo, 25 de noviembre de 2012

Raspbian: Preparando SD

Tan pronto saque mi Raspberry Pi me surgió la siguiente interrogante:

Y ahora que hago con ella ?¿

Bueno ahora indicare los pasos para instalar y realizar la instalación del sistema operativo Raspbian en nuestra pequeña placa.

* Obteniendo S.O.

Lo primero que hay que hacer es descargar el S.O. desde el siguiente enlace.

Con la imagen ya descargada necesitaremos una memoria SD para montarla, en mi caso estoy usando un SD de 4Gb y hasta el momento funciona bien.

* Instalación

Desde Linux necesitaremos ubicar nuestro dispositivo, en mi caso este quedo como /dev/sdb. Y luego debemos preocuparnos de desmontar todas las particiones en el caso de que la unidad ya tenga.

Después con nuestro dispositivo ya identificada, copiaremos la imagen desde la terminal de la siguiente manera.

#cat 2012-08-08-wheezy-armel.img > /dev/sdb

Con esto ya tendremos nuestra lista para bootear en la placa,

En la siguiente entrada explicaremos como configurar el sistema para futuros proyectos.

martes, 13 de noviembre de 2012

Iniciando en Raspberry Pi

Hola a Todos.

La semana pasada por fin pude hacerme de una Raspberry Pi, para los que no las conocen son placas integradas que entre sus características son capases de correr sistemas operativos basados en Linux.

Así que pronto me motivare y escribiré sobre mis experimentos.

Si quieren mas información pueden ingresar a la siguiente pagina y ver algunos experimentos:



martes, 6 de noviembre de 2012

Vincular Active Directory a Zimbra

Se elimina post ya que al parecer la pagina volvió a estar operativa, para ver el post original ingresar a link de mas abajo.

Importando certificado exchange en zimbra

Asi de simple:


# cd /root
# /opt/zimbra/bin/zmcertmgr addcacert exchange.cer
# su - zimbra
$ zmmailboxdctl restart

Fuente: wiki.zimbra.com

miércoles, 31 de octubre de 2012

CrossOver Gratis!!! Solo por hoy.

En la pagina de codeweavers esta disponible CrossOver con licencia por un año.

No hay que dejar pasar esta oportunidad.

DESCARGA

martes, 30 de octubre de 2012

Mi IP publica desde el cli de Linux.

Con este simple comando podremos saber con que IP estamos en la web.

#GET http://www.vermiip.es/  | grep "Tu IP p&uacute;blica es" | perl -pe 's/(.*:)|<\/h2>|\s+//g;'

 Aporto con el siguiente comando: #curl ifconfig.me

Saludos.

martes, 23 de octubre de 2012

Zimbra: Eliminando archivos en cuarentena.

Hoy mientras realizaba tareas de respaldo en mi servidor me di cuenta que no iba a terminan nunca por que los archivos de cuarentena en amavis eran miles (2 años de archivos).

Buscando en internet me entere de que estos no los borra el zimbra, pero nosotros podemos automatizarlo agregando la siguiente linea en cron.

0 1 * * * find /opt/zimbra/data/amavisd/quarantine -type f -mtime +15 -exec rm -f {} \; > /dev/null 2>&1

Con esto todos los días a las 1 AM eliminaremos los archivos de mas de 15 días desde nuestra cuarentena.


jueves, 11 de octubre de 2012

Preparando un Centos Minimal

Este es un tutorial básico para dejar a punto nuestro Centos minimal, en mi caso yo lo preparo para configurar un zimbra 8.

1) Después de el formateo necesitamos habilitar la interfaz de red.

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

Borrar todo y agregar lo siguiente para DHCP:


DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:19:F1:2A:BA:A8
ONBOOT=yes


En caso de querer IP estatica:


DEVICE=eth0
BOOTPROTO=static
HWADDR=00:19:F1:2A:BA:A8
IPADDR=10.10.29.66
NETMASK=255.255.255.192
ONBOOT=yes

2) Habilitación SSH para acceso remoto.

# yum -y install openssh-server

3) Instalando las herraminetas de desarrollo.

# yum grouplist
# yum groupinstall "Development Tools" "Development Libraries" "Legacy Software Development"

Esto descargara aproximadamente 115 paquetes que en datos serán 121 MB.

También hay que descargar paquetes adicionales que no están en los grupos.

# yum -y install bind-utils ntsysv perl telnet sudo libidn fetchmail gmp libtool-ltdl mlocate compat-libstdc* curl wget sysstat nano nmap libstdc++.so.6 nc sysstat compat-libstdc++-296 compat-libstdc++-33 libstdc++ libstdc++-devel libstdc++44-devel

4) Actualización del sistema.

# yum update


5) Des habilitación de algunos servicios.


#chkconfig sendmail off
#chkconfig ip6tables off
#chkconfig iptables off

# service iptables stop
# service sendmail stop

Ejecutamos ntsysv en la terminal para verificar que los servicios están desactivados.

# ntsysv

Tambien es nesezario deshabilitar SeLinux ya que siempre causa problemas al momento de instalar servidores.

Para esto ejecutamos lo siguiente:

# nano /etc/selinux/config

Y remplazamos SELINUX=disabled
6) Modificamos el archivo  /etc/hosts y escribimos nuestra IP con el nombre y dominio de nuestro equipo.

#nano /etc/hosts

127.0.0.1   localhost.localdomain       localhost
xxx.xxx.xxx.xxx        miequipo.midominio.com     miequipo


7) Configuramos nuestro dominio de búsqueda DNS modificando resolv.conf.

# nano /etc/resolv.conf

Debe quedar de la siguiente forma:


search midominio.com
nameserver  dns primario
nameserver dns secundario
nameserver dns  de mi servidor dns


Después de Reiniciar el equipo estará listo para instalar cualquier tipo de sistemas.

fuente :https://groups.google.com/forum/#!msg/zimbragrupo/disfSyhY4HY/LBlhOpI6z6YJ

Elastix 2.3 : En Blanco al entrar a pestaña PBX.

Hoy ne encontré con una ingrata sorpresa al darme cuenta que la interfaz de configuración de la PBX quedaba en blanco después de ingresar la contraseña.

Después de actualizar la pbx con yum update el problema persistía.

Finalmente después de leer ejecute el comando /var/lib/asterisk/bin/retrieve_conf con la siguiente respuesta:


[root@miempresa ~]# /var/lib/asterisk/bin/retrieve_conf
Checking for PEAR DB..FAILED
[FATAL] PEAR Missing PEAR must be installed (requires DB.php). Include path: .:/usr/share/pear:/usr/share/php 
PHP Fatal error:  Class 'DB' not found in /var/lib/asterisk/bin/retrieve_conf on line 207

La solución fue tan simple como pear install DB.

[root@miempresa ~]# pear install DB
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
downloading DB-1.7.14.tgz ...
Starting to download DB-1.7.14.tgz (133,103 bytes)
................done: 133,103 bytes
install ok: channel://pear.php.net/DB-1.7.14

Buscar: centralita asterisk

martes, 9 de octubre de 2012

Actualizando Certificado en Zimbra 7.x

Hoy zimbra me iso recordar que soy un simple mortal al no volver a  funcionar después de un reinicio.

La única pista que me dejo fue el mensaje:


[zimbra@zimbra ~]$ zmcontrol start
Host mail.mizimbra.net
Unable to determine enabled services from ldap.
Unable to determine enabled services. Cache is out of date or doesn't exist.

Por suerte en el blog oficial de zimbra me entregaron pistas y en la wiki estaba documentada la solución.

Como root.

1. Generación de una autoridad certificadora nueva (CA).

 /opt/zimbra/bin/zmcertmgr createca -new

2. A continuación, generar un certificado firmado por la CA que expira en 365 días.

/opt/zimbra/bin/zmcertmgr createcrt -new -days 365

3. Desplegar el certificado.

/opt/zimbra/bin/zmcertmgr deploycrt self

4. Desplegar la autoridad certificadora.

/opt/zimbra/bin/zmcertmgr deployca

5. Y para terminar, verificar que el certificado fue enviado a todos los servicios.

/opt/zimbra/bin/zmcertmgr viewdeployedcrt

Después de esto reinicie la maquina y Listo! mi servidor nuevamente funcionando.

Fuente: http://goo.gl/QQ9Il

miércoles, 5 de septiembre de 2012

Actualización crítica de Oracle Java

Hola a todos.

Acaba de salir la ultima actualización de Java para solucionar los problemas de seguridad que han aparecido en el ultimo mes. este se aplica como parche a la vulnerabilidad 0-day (CVE-2012-4681) que afectaba a Java 7, ademas de (CVE-2012-1682, CVE-2012-3136).

martes, 4 de septiembre de 2012

Wirenet, Una Amenaza???


Hasta ahora lo que sabemos es lo siguiente:


BackDoor.Wirenet.1
Añadido a la base de datos de virus Dr.Web: 21/08/2012
Descripción del virus se ha añadido: 22/08/2012
Troyano de puerta trasera que se puede ejecutar en Linux y MacOS X. Tiene la funcionalidad de keylogger, puede robar las contraseñas introducidas por el usuario en el navegador Opera, Firefox, Chrome, cromo y contraseñas de aplicaciones como Thunderbird, SeaMonkey, Pidgin.
Cuando se ejecuta, se copia en el directorio home del usuario.
En MacOS: carpeta%% en casa / WIFIADAPT.app.app
En Linux: en ~ / WIFIADAPT
Establece una conexión con un centro de mando a distancia hacia 212.7.208.65.
Utiliza una conexión de verificación utilizando el algoritmo de cifrado Advanced Encryption Standard (AES).

Tan pronto se encuentre mas información se ira ampliando este post.

viernes, 31 de agosto de 2012

Verificar si tu linux esta listo para el cambio de hora.

Como muchos sabrán en la madrugada de mañana se realizara el cambio del hora en Chile, por lo cual los relojes deberán adelantarse en 1 hora.

Estará listo nuestro servidor?

Para verificar esto bastara con revisar con el siguiente comando.



hoyarzo@pc001 ~ $ zdump -v /etc/localtime | grep 2012
/etc/localtime  Sun Apr 29 02:59:59 2012 UTC = Sat Apr 28 23:59:59 2012 CLST isdst=1 gmtoff=-10800
/etc/localtime  Sun Apr 29 03:00:00 2012 UTC = Sat Apr 28 23:00:00 2012 CLT isdst=0 gmtoff=-14400
/etc/localtime  Sun Sep  2 03:59:59 2012 UTC = Sat Sep  1 23:59:59 2012 CLT isdst=0 gmtoff=-14400
/etc/localtime  Sun Sep  2 04:00:00 2012 UTC = Sun Sep  2 01:00:00 2012 CLST isdst=1 gmtoff=-10800


Como vemos nuestro registro tiene la info de que el primero de septiembre se realizara el cambio.

lunes, 27 de agosto de 2012

Log sshd

Hola a todos.

Muchas veces en nuestra vida de Sysadmins nos ha tocado revisar quien intenta entrar a  nuestros servidores por ssh,  para esto basta con solo 2 comandos:


[root@pbx log]# sudo cat /var/log/secure* | grep Failed
Aug 26 05:57:33 pbx sshd[8414]: Failed password for root from 210.18.17.235 port 52305 ssh2
Aug 26 09:31:30 pbx sshd[8714]: Failed password for root from 61.138.75.130 port 45523 ssh2
Aug 26 14:00:52 pbx sshd[9096]: Failed password for root from 93.128.42.11 port 38908 ssh2
Aug 26 14:00:55 pbx sshd[9098]: Failed password for root from 93.128.42.11 port 39850 ssh2

Con lo siguiente podemos ver todos los intentos fallidos que ha tenido nuestro servidor.

[root@pbx log]# sudo cat /var/log/secure* | grep Accepted/var/log/auth*
Aug 27 11:27:56 pbx sshd[16865]: Accepted password for root from 192.168.100.120 port 41592
Aug 20 13:12:35 pbx sshd[22396]: Accepted password for root from 192.168.100.120 port 35536
Aug 20 15:15:45 pbx sshd[24612]: Accepted password for root from 192.168.100.120 port 39489
Aug 13 10:50:09 pbxa sshd[1515]: Accepted password for root from 192.168.100.120 port 43341

Con este otro podemos ver los accesos a nuestro servidor.

Si no encuentran el archivo de log pueden probar con /var/log/auth*

viernes, 24 de agosto de 2012

spamassassin: cannot open bayes databases

Hoy realizando mi revisión periódica de log me encontré con el siguiente mensaje en spamtrain.log:

bayes: cannot open bayes databases /opt/zimbra/data/amavisd/.spamassassin/bayes_* R/W: tie failed: Permission denied

Revisando los directorios tope con que algunas bases no contaban con privilegios para el usuario zimbra.


root@lazaro:/opt/zimbra/data/amavisd/.spamassassin# ls -las
total 20432
    4 drwxr-x--- 2 zimbra zimbra     4096 2011-12-05 10:54 .
    4 drwxr-xr-x 8 zimbra zimbra     4096 2012-08-24 13:36 ..
   72 -rw------- 1 zimbra zimbra    65544 2011-12-05 10:54 bayes_journal
    4 -rw------- 1 zimbra zimbra     1236 2012-08-24 16:19 bayes.mutex
16384 -rw------- 1 root   root   21028864 2011-12-05 10:54 bayes_seen
 3964 -rw------- 1 root   root    5525504 2011-12-05 10:54 bayes_toks

La solución fue realizar un #chown zimbra:zimbra bayes_*

Chequear el estatus de la Bayesian DB en Zimbra


zimbra@lazaro:~/conf$ /opt/zimbra/libexec/sa-learn --dbpath /opt/zimbra/data/amavisd/.spamassassin --dump magic
0.000          0          3          0  non-token data: bayes db version
0.000          0     184564          0  non-token data: nspam
0.000          0       2155          0  non-token data: nham
0.000          0     133189          0  non-token data: ntokens
0.000          0 1313335204          0  non-token data: oldest atime
0.000          0 1345842457          0  non-token data: newest atime
0.000          0 1345842185          0  non-token data: last journal sync atime
0.000          0          0          0  non-token data: last expiry atime
0.000          0          0          0  non-token data: last expire atime delta
0.000          0          0          0  non-token data: last expire reduction count