Archivo de la etiqueta: Ubuntu

Instalar Webmin en Servidor Ubuntu 11.10 o 11.04

Webmin es una herramienta de configuración de sistemas accesible vía web para OpenSolaris, GNU/Linux y otros sistemas Unix. Con él se pueden configurar aspectos internos de muchos sistemas operativos, como usuarios, cuotas de espacio, servicios, archivos de configuración, apagado del equipo, etcétera, así como modificar y controlar muchas aplicaciones libres, como el servidor web Apache, PHP, MySQL, DNS, Samba, DHCP, entre otros.

Webmin está escrito en Perl, versión 5, ejecutándose como su propio proceso y servidor web. Por defecto se comunica mediante TCP a través del puerto 10000, y puede ser configurado para usar SSL si OpenSSL está instalado con módulos de Perl adicionales requeridos.

Está construido a partir de módulos, los cuales tienen una interfaz a los archivos de configuración y el servidor Webmin. Esto hace fácil la adición de nuevas funcionalidades sin mucho esfuerzo. Debido al diseño modular de Webmin, es posible para cualquier interesado escribir extensiones para configuración de escritorio.

Webmin también permite controlar varias máquinas a través de una interfaz simple, o iniciar sesión en otros servidores webmin de la misma subred o red de área local.

Antes de comenzar deberás haber instalado LAMP (Linux, Apache, MySql y Php) en tu servidor Ubuntu.

El primer paso es añadir los repositorios correspondientes, con el comando siguientes editamos los respositorios:

sudo vi /etc/apt/sources.list


Al final del archivo añadimos las siguientes lineas:

deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

 

Importamos GPG Key con los siguientes comandos:

wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
sudo apt-get update

 

Y ya podemos instalarlo de la forma habitual:

sudo apt-get install webmin

Ya tendremos accesible a través de nuestro navegador de internet en la direccion:

https://nuestro_servidor_ubuntu:10000/

Esto es todo, ya solo nos falta logarnos con un usuario que sea root o que esté autorizado para hacer sudo.

Error WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! al intentar conectarse por ssh

Esto era novedad. He tenido que formatear un servidor y al intentar conectarme de nuevo desde otro servidor del que ya me conectaba antes recibo este error:

david@backups:~/.ssh$ ssh root@172.31.0.41

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
d4:22:66:d1:7a:83:e4:77:75:d0:e8:ec:52:d9:1d:aa.
Please contact your system administrator.
Add correct host key in /home/david/.ssh/known_hosts to get rid of this message.
Offending key in /home/david/.ssh/known_hosts:10
RSA host key for 172.31.0.41 has changed and you have requested strict checking.
Host key verification failed.


Claro, evidentemente la clave RSA había cambiado y no correspondía con la que había guardada en el fichero known_hosts y no era posible la conexión.

La solución la da el propio mensaje, la clave obsoleta se encontraba en la linea 10 de mi fichero known_host tal y como dice el mensaje de error.

Eliminamos la huella antigua con el siguiente comando:

$ sed -i 10d ~/.ssh/known_hosts

Notese que en el comando he puesto que borrase la linea 10. Y ya puedo conectarme de nuevo ya que ofrece la nueva huella de la nueva identidad del servidor nuevo.

En caso de querer añadir de nuevo la clave publica al nuevo servidor tan solo hemos de ejecutar el siguiente comando:

david@backups$ cat ~/.ssh/id_rsa.pub | ssh root@172.31.0.41 ‘cat – >> ~/.ssh/authorized_keys’

Eliminar archivos en subdirectorios recursivamente con Ubuntu

Ya llevaba yo un tiempo queriendo estandarizar la eliminación de ficheros con un tipo de extensión a partir de un directorio padre. Hasta ahora y por las prisas lo realizaba con un script personalizado para cada directorio eliminando ficheros con extensión .enc.

Estos ficheros son el resultado de encriptar backups de bases de datos antes de enviarlas por Internet para almacenarlas fuera del edificio y así garantizar la recuperación ante un desastre que afectase al CPD.

Bueno, el caso es que despues de encriptar los ficheros de base de datos se quedaban en varios directorios y subdirectorios los ficheros backup_mysql…….tar.gz.enc y había que eliminarlos poco mas o menos que de forma personalizada ya que esos ficheros después de enviados al sitio remoto no me sirven de nada en local salvo para ocupar espacio.

Dedicando un poco de tiempo a estos comandos, sobre todo al maravilloso find es posible hacer todo esto en una sola linea de comando. Para mi que aún renqueo con los comandos de linux es todo un hallazgo.

El comando se debe ejecutar en el directorio de interés. “find” por naturaleza se mueve recursivamente, así que descenderá a todos los directorios desde el original, borrando los archivos de la extensión en cuestión.

He conseguido llegar a dos comandos que realizan la misma tarea:

  • $ find ./directorioinicial/ -name *.enc -type f -print | xargs /bin/rm -f

el segundo mas simple encontrado por ahí googleando:

  • $ find -name “*.enc” -exec rm {} \;

Aquí queda de apunte para que a alguien le resulte mas sencillo de averiguar.

Para comprobar sobre que ficheros va a actuar solo hay que cambiar el comando “rm” por “ls”.

Matar procesos zombie en Ubuntu

Hay una forma de matar los procesos zombie muy sencilla, para ello primero hay que detectarlo y suele ser al iniciar sesión en un servidor que nos da un mensaje indicándolo o a través del comando top.

Los procesos zombies pueden ser identificados en la salida por pantalla del comando de Unix ps por la presencia de una Z en la columna de estado. Por ello para poder encontrar cual es el proceso ejecutamos el comando:

$ sudo ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]‘

y para eliminarlo:

$ sudo kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]‘ | awk ‘{print $2}’`