lunes, 16 de febrero de 2015

Cambiar ip NAT en VirtualBox

VboxManage modifyv, "Nombre maquina" --natnet1 "rango"

martes, 18 de marzo de 2014

Limitar descarga en WGET

Para limitar descargas y no ocupar todo el ancho de banda
wget --limit-rate=200k url/archivo.iso

Borrar un archivo con mas de X dias con el comando find


Un sencillo comando en el cual podremos borrar un archivo con mas de unos ciertos días, en este caso fichero con más de 5 días.

find directorio -type f -name "nombre o expresionregular" -atime +5  -exec rm -f {} \;

-atime, será el limite para borrar, en el caso de que sea mas de 5 dias, ejecutará la acción
-exec , ejecutara el comando del sistema que se le indique.
-type, el tipo que queremos borrar

sábado, 2 de marzo de 2013

HA cluster de apache2 con pacemaker y corosync

Este post se traspasará pronto a www.systerminal.com

(pendiente de mejoración)
En este pequeño tutorial os mostraré como configurar básicamente un cluster en alta disponibilidad  sobre apache2 con corosync y pacemaker.

Para montarla tenemos dos maquinas:

churchill: 192.168.1.13 (nodo principal)
clinton: 192.168.1.254

Para empezar instalaremos apache2

aptitude install apache2


Y crearemos un virtualhost (si no sabeos mirad este enlace http://enunlugardealcala.blogspot.com.es/2012/10/virtualhosting-en-apache.html) en ambos hosts con el siguiente contenido :


<VirtualHost 127.0.0.1:80>
    ServerAdmin webmaster@localhost.com
    ServerName localhost
    ErrorLog /var/log/apache2/nodo.error_log
    CustomLog /var/log/apache2/nodo.access_log common
    <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>
</VirtualHost>

Este host será el que le indique  al otro nodo como esta este nodo.

Ahora instalaremos corosync y pacemaker en ambos nodos:

aptitude install pacemaker corosync



Crearemos una clave en el nodo principal:

corosync-keygen


En el caso de que no tengamos interfaz gráfico o estemos en un entorno virtualizado, usaremos estos comandos antes de generar la clave:

mknod /dev/newrandom c 1 9
chmod --reference=/dev/random /dev/random
mv -f /dev/newrandom /dev/random


Después pasaremos al otro nodo la clave generada:

scp /etc/corosync/authkey clinton:/etc/corosync/authkey



Editaremos el fichero de configuración de ambos nodos (/etc/corosync/corosync.conf) y añadimos la red en el que se van a sincronizar:

bindnetaddr: 192.168.1.0


También tendremos que configurar el fichero /etc/default/corosync para que reconozca el demonio, esto se consigue poniéndolo a yes:

START=yes

Se reinicia el servicio en ambos nodos:

service corosync restart


Y ahora se tendrán que sincronizar ambos nodos:

============
Last updated: Sat Mar  2 15:09:02 2013
Last change: Sat Mar  2 14:03:03 2013 via crm_attribute on clinton
Stack: openais
Current DC: clinton - partition with quorum
Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
2 Nodes configured, 2 expected votes
0 Resources configured.
============

Online: [ clinton churchill ]


A continuación desactivaremos el STONITH:

crm configure property stonith-enabled=false

Y configuraremos un recurso para los nodos ( a partir de ahora todo lo que se configure de crm en un nodo se replicará al otro):

crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 params ip=192.168.1.101 cidr_netmask=32 op monitor interval=30s

Podremos comprobarlo haciendo un crm_mon:

============
Last updated: Sat Mar  2 15:09:02 2013
Last change: Sat Mar  2 14:03:03 2013 via crm_attribute on clinton
Stack: openais
Current DC: clinton - partition with quorum
Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
2 Nodes configured, 2 expected votes
1 Resources configured.
============

Online: [ clinton churchill ]

ClusterIP       (ocf::heartbeat:IPaddr2):       Started churchill



Después configuraremos el recurso para apache:

crm configure primitive P_APACHE ocf:heartbeat:apache params configfile="/etc/apache2/apache2.conf" statusurl="http://localhost/server-status" op monitor interval="40s"



Pondremos el orden en el que mirara el estado
crm configure order START_ORDER inf: ClusterIP P_APACHE

Marcaremos ambos nodos comoel primero y el segundo
crm configure location  L_IP_NODE001 ClusterIP 100: churchill
crm configure location  L_IP_NODE002 ClusterIP 100: clinton

Haremos un crm_mon y veremos que el recurso de apache está configurado:

============
Last updated: Sat Mar  2 15:26:36 2013
Last change: Sat Mar  2 15:26:34 2013 via cibadmin on churchill
Stack: openais
Current DC: clinton - partition with quorum
Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
2 Nodes configured, 2 expected votes
2 Resources configured.
============

Online: [ clinton churchill ]

ClusterIP       (ocf::heartbeat:IPaddr2):       Started churchill
P_APACHE        (ocf::heartbeat:apache):        Started churchill


Podremos ver quien sirve la web:

Pararemos un nodo con crm node standby:

crm node standby churchill


Volveremos a monitorizarlo con cmr_mon:

============
Last updated: Sat Mar  2 15:54:45 2013
Last change: Sat Mar  2 15:54:40 2013 via crm_attribute on churchill
Stack: openais
Current DC: clinton - partition with quorum
Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
2 Nodes configured, 2 expected votes
2 Resources configured.
============

Node churchill: standby
Online: [ clinton ]

ClusterIP       (ocf::heartbeat:IPaddr2):       Started clinton
P_APACHE        (ocf::heartbeat:apache):        Started clinton

Vemos como ha cambiado los recursos de nodo, por lo que la web la estará ofreciendo clinton:



Y esto es todo, aunque me gustaría citar algunos comandos que pueden servir.

Para mirar la configuración que hemos ido añadiendo , nos basta con ejecutar crm configure show

Si queremos editar a mano esa configuración, nos bastaría con crm configure edit y si queremos modificar el editor de texto con el que lo abre, solo tendremos que cambiar la variable de entorno, export EDITOR="sur/bin/nano"

jueves, 24 de enero de 2013

sábado, 3 de noviembre de 2012

Instalación de servidor LDAP y configuración de clientes en debian

Este post se traspasará pronto a www.systerminal.com

Primero de todo vamos a definir bien el fqdn de nuestra maquina, para saber el nuestro:

hostname --fqdn

Si no está bien definido, lo configuraremos en /etc/hosts:

127.0.0.1       localhost
127.0.1.1       nombredemaquina.example.com        nombredemaquina




Para instalar el servidor LDAP, donde tendremos toda la infofmación guardada, nos bajaremos el paquete slapd:

aptitude install slapd

A lo que solamente nos pedirá la contraseña del administrador de ldap. Pero
 obviamente no es siempre lo suficiente, si no que tenemos que cambiar cosas como el nombre de base etc... Si ejecutamos slapcat  veremos se las entradas son validas o incorrectas, en el segundo de ellos.


Para configurar el paquete slapd ejecutaremos:

dpkg-reconfigure slapd


Nos pedirá :
Nombre de dominio DNS: example.com
Nombre de la Organizacion:
Contrasena del administrador:
Motor de base de datos a utilizar: HDB
¿Permitir el protocolo LDAPv2?: No


Relleraremos según nos convenga y una vez configurado veremos con slapcat una salida así:

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: example.com
dc: example
structuralObjectClass: organization
entryUUID: 6795ae8a-ba4c-1031-9b61-8fa8adeb78d1
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20121103215145Z
entryCSN: 20121103215145.196555Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20121103215145Z

dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9eWFJbXl1ZnNiZnl5S3pnN2ZjZWlXK3lJL2RkVjE2b0c=
structuralObjectClass: organizationalRole
entryUUID: 67a682e6-ba4c-1031-9b62-8fa8adeb78d1
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20121103215145Z
entryCSN: 20121103215145.306828Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20121103215145Z




Como vemos son dos entradas, la de la base y la del administrador.


A continuación vamos a crear dos contenedores, People  y Group, con dos objetos dentro, usuarioldap y grupoldap.


Para ello vamos a meter los siguiente en un archivo .ldif (nuestro caso base.ldif):


dn: ou=People,dc=example,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=example,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

dn: cn=grupoldap,ou=Group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: pruebag
gidNumber: 2000

dn: uid=usuarioldap,ou=People,dc=example,dc=com
uid: usuarioldap
cn: Usuario de prueba
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {MD5}wb/BiNulnSaBZIqg5sqMjg==(se genera con slapasswd -h {MD5})
loginShell: /bin/bash
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/pruebau
gecos: Usu



Ahora tenemos que introducirlo en nuestra base de datos de LDAP, para ello nos descargaremos ldap-utils:

aptitude install ldap-utils



Una vez que está instalada lo introduciremos:

ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f base.ldif

El usuario que hemos creado no tiene directorio, así que lo crearemos y le asignaremos a él mismo como propietario:

mkdir /home/usuarioldap
cp /etc/skel/.* /home/usuarioldap

chown -R 2000:2000 /home/usuarioldap

Ya que el usuario 2000 no existe, aunque si en LDAP,  este no lo detecta.

A continuación configuraremos un cliente LDAP , en nuestro caso, nuestro servidor.

Para configurar cualquier equipo de la red con LDAP nos iremos  a /etc/ldap/ldap.conf  (en el caso de que no exista, instalaremos  libldap2) y añadiremos:

BASE dc=example,dc=com
URI   ldap://127.0.0.1



Después vamos a configurar el sistema para que sea capaz de establecer la correspondencia entre los UID/GID y los nombres de los usuarios y los grupos que están en el directorio LDAP. Para ello vamos a configurar /etc/nsswitch.conf:

passwd:         compat ldap
group:          compat ldap







Como vemos vemoshemos añadido ldap en las dos filas.

Peroque el sistema sea capaz de consultar a un directorio LDAP, para ello debemos instalar el paquete libnss-ldap:

aptitude install libnss-ldap

Una vez instalado, configuraremos el paquete:

dpkg-reconfigure libnss-ldap

Allí nos preguntará:

Identificador del servidor LDAP: ldap://127.0.0.1/
Nombre distinguido (dn): dc=example,dc=com

Version de LDAP: 3
Cuenta del administrador: cn=admin,dc=example,dc=com
Contrasena del administrador


Una vez que está configurado el paquete,  comprobaremos que todo está configurado correctamente, así que repetiremos el listado del directorio  home del usuario que hicimos antes:

ls -al /home/usuarioldap/


Para configurar otros clientes que no sean el servidor, tendriamos que hacer los mismos pasos pero cambiando la ip.


Ahora instalaremos PAM que es el sistema modular que se encarga de las tareas de autenticacion en el sistema, cada aplicación que necesite comprobar la autenticacion de usuarios tendrá que hacer uso de él.

Para ello instalaremos :


aptitude install libpam-ldap



Después configuraremos ese paquete:

dpkg-reconfigure libpam-ldap



Y lo amoldaremos a nuestro gusto:

Identificador del servidor LDAP: ldap://127.0.0.1/Nombre distinguido (dn):dc=example,dc=com
Version de LDAP: 3
Local crypt to use when changing passwords: exop

Ahora seremos capaces de acceder al sistemas por mecanismos tales como ssh y otros mas.


Fuente: http://informatica.gonzalonazareno.org


viernes, 2 de noviembre de 2012

GPG para MAC


Vamos a usar Gnu PG para usar el mecanismo de clave privada/publica, ¿qué es esto? Pues es un mecanismo de seguridad que consiste en que tu repartes tu clave pública a toda las personas o dispositivos que quieras, la cual usarán para encriptar el mensaje que te enviarán y que solo tu puedes abrir con tu clave privada.






Vamos a usar como explicación el ejemplo por excelencia que se usa en este tipo de mecanismo.
Bob ha generado una clave privada y una clave publica que se corresponde con la privada. Bob le ha dado la clave pública a Alice. La clave privada es personal por lo tanto no se puede (debe) compartir.
Alice quiere mandarle un mensaje privado a Bob y esta no quiere que nadie mas sepa el contenido del mensaje, por lo que encripta el mensaje con la clave pública de Bob. Eve quiere saber lo que le ha enviado Alice a Bob por lo que de alguna manera el mensaje le ha llegado a ella. Como Eve no es propietaria de la clave privada que se corresponde a la publica, no podrá desencriptarlo. Solo bob puede leer ese mensaje usando su clave privada.

A continuación vamos a explicar como usar GPG para encriptar y desencriptar mensajes a tráves de este mecanismo.

Partiendo de la base de que tenemos instalado GPG, abriremos una terminal y ejecutaremos este comando para crear una clave privada y la pública correspondiente:

iMac-de-Jose-Enrique-Ruiz:~ quique$  gpg --gen-key



Después seleccionaremos una opción y elegimos el tamaño de la clave, cuanto mas grande mas segura pero a la vez más costosa computacionalmente:





Por favor seleccione tipo de clave deseado:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sólo firmar)
   (4) RSA (sólo firmar)
Su elección: 1 
las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (2048) 1024




También podemos ponerle la caducidad a nuestra clave, nosotros  elegiremos que nunca caduque.
Y nos preguntara mas preguntas como nuestro nombre y apellidos, correo etc....





Una vez que hemos introducido todo los que nos pregunta, Continuaremos con V (valid) , nos pedirá una contraseña:






y nos creará las clave:



Pues vamos a exportar la clave pública para enviarsela a quien queramos , para exportarla usaremos este comando:

iMac-de-Jose-Enrique-Ruiz:Desktop quique$ gpg --armor --output quique-public.key --export Prueba

Detrás de export pondremos algún ID identificativo como el nombre o el correo que introducimos anteriormente. En mi caso Prueba que es el nombre de la clave, aunque podría haber  puesto mi nombre.


Imaginando que la clave se la hemos enviando a otro siendo nosotros mismo el que recibe esa clave pública, ejecutaremos este comando para importarla:


iMac-de-Jose-Enrique-Ruiz:Desktop quique$ gpg --import quique-public.key

Si queremos ver las claves públicas que tenemos en nuestro llavero, ejecutaremos :

 iMac-de-Jose-Enrique-Ruiz:Desktop quique$ gpg --list-keys


o las claves privadas que tenemos:

iMac-de-Jose-Enrique-Ruiz:Desktop quique$ gpg --list-secret-keys


Una vez que tenemos la clave pública de nuestro amigo en nuestro llavero encriptaremos el mensaje con esa clave:



iMac-de-Jose-Enrique-Ruiz:Desktop quique$ gpg --armor --recipient Prueba  --encrypt text.txt 

Detrás de recipient pondremos un ID identificativop de la clave pública que hemos importado.
El text.txt contiene el mensaje holaa.

Una vez que ejecutamos ese comando, nos creará un archivo con el mismo nombre pero añadiéndole .asc y veremos que si lo intentamos abrir no nos dejará o no entenderemos absolutamente nada lo que pone.


Una vez que nuestro amigo tiene el mensaje encriptado que le hemos enviado, podrá leerlo ejecutando:

iMac-de-Jose-Enrique-Ruiz:Desktop quique$ gpg --decrypt text.txt.asc 

Cuando se ejecute este comando, nos pedirá o le pedirá a nuestro amigo la clave que puso cuando creo la clave privada:




 Y nos mostrará el mensaje encriptado:







Y así se usa basicamente, obviamente tiene mas funcionalidades que aquí no hemos explicado.







Licencia de Creative Commons