Archive for the 'Linux' Category

Como saber el tamaño de un directorio en Linux

Jueves, Octubre 18th, 2007

Desde la linea de comandos:

du -s -h nombre_directorio

Primeros pasos con Subversion (Parte II)

Domingo, Diciembre 17th, 2006

En el artículo anterior, vimos como crear un repositorio y cómo añadir nuestro código al mismo. Hoy vamos a continuar con unos pequeños ajustes que nos facilitarán el día a día con Subversion y además, permitiran el acceso a diferentes usuarios al repositorio.

Básicamente estos ajustes consisten en:

  • Crear un grupo para aquellos usuarios que trabajen con SVN
  • Añadir los usuarios al nuevo grupo
  • Modificar los permisos del repositorio

Vamos manos a la obra, desde una terminal tomamos acceso como root:

sudo -s

Una vez conectados como root, creamos un grupo para subversion:

groupadd svn

Después añadimos a este grupo aquellos usuarios de nuestro sistema que vayan a trabajar con Subversion, por ejemplo:

adduser usuario svn

Ahora, cambiamos los permisos del sistema de archivos del repositorio:

(Suponiendo que /var/svn es la ruta donde almacenamos los diferentes repositorios para cada proyecto )

chgrp -R svn /var/svn

chmod -R 0770 /var/svn

chmod g+t /var/svn/proyecto/db

El último paso hay que repetirlo para cada repositorio, (la ruta a db será diferente según el nombre de cada repositorio).

Bien, con estos simples pasos hemos conseguido que cualquier usuario, que no sea root, pueda trabajar con el repositorio, para ello tan sólo habrá que añadirlo al grupo svn. en un próximo artículo veremos como acceder remotamente a nuestro repositorio utilizando  Eclipse.

Primeros pasos con Subversion

Jueves, Diciembre 7th, 2006

En el artículo anterior, vimos como instalar Subversion en un sistema Ubuntu, hoy vamos a ver como realizar las tareas típicas.

Si hemos instalado con éxito SVN, ya podemos empezar a crear repositorios para guardar nuestro bien más valioso: el código fuente.

Desde un terminal, nos cambiamos a modo root:

sudo -s

Creamos un directorio donde posteriormente crearemos los repositorios para nuestros proyectos, esto es más una cuestión de gustos, hay quien prefiere utilizar un único repositorio para después crear subcarpetas para cada proyecto. Personalmente, prefiero generar un repositorio diferente para cada proyecto, veremos más adelante que esto nos ofrece más flexibilidad en según que situaciones.

mkdir /var/svn

Ahora creamos el repositorio para nuestro proyecto:

svnadmin create /var/svn/proyecto

Cambiar proyecto por el nombre de vuestro proyecto. Sugerencia: evitaremos problemas si escribimos el nombre en minúsculas y sin espacios.

Si vamos al directorio del repositorio y hacemos un ls, veremos la estructura de directorios y de archivos generadas por SVN. Es interesante darle un vistazo al fichero README.txt, éste nos avisa que no debemos crear o modificar directamente los archivos del repositorio, para eso ya están las herramientas de SVN.

Bien, ya tenemos el repositorio creado, ahora habrá que crear una estructura de directorios para mantener nuestro código organizado.

Creamos la estructura básica:

  • un directorio trunk donde se almacena la rama de código principal
  • un directorio tags para guardar “fotos” o estados concretos de nuestro proyecto (ideal para marcar versiones de nuestro proyecto)
  • y finalmente, el directorio branches por si queremos trabajar con ramas diferentes del proyecto

Otra vez desde la terminal (introducir la orden en una sola línea):

svn mkdir -m "layout inicial" file:///var/svn/proyecto/trunk file:///var/svn/proyecto/tags file:///var/svn/proyecto/branches

Con esto tenemos ya preparado nuestro repositorio para empezar a añadir código en él. Supongamos que tenemos un directorio (/home/usuario/proyecto) con los archivos de nuestro proyecto que queremos proteger.

El primer paso es importar todo el arbol del proyecto al repositorio:

cd /home/usuario/proyecto
svn import -m "import inicial" . file:///var/svn/proyecto/trunk
Veremos los mensajes del proceso de importación, cuando el proceso termine la importación veremos un mensaje parecido a este:

Commit de la revisión 1.

Ahora ya tenemos nuestro proyecto “guardado” en el repositorio, a partir de este momento debemos descartar la ubicación original del proyecto, en nuestro ejemplo /home/usuario/proyecto, y empezar a trabajar con una “copia de trabajo” del proyecto.

El proceso típico de trabajo se resume de la siguiente forma:

  • Checkout o creación inicial del directorio de trabajo, esto sólo hay que hacerlo una vez
  • Update, actualización de nuestra copia con los cambios que se hayan producido en el repositorio, esto es básico en entornos con más de un desarrollador. Es la manera de actualizar nuestra copia con los cambios realizados por el resto del equipo
  • Commit, guardar nuestros cambios en el repositorio.

Vemos ahora como crear una copia de trabajo a partir de nuestro flamante repositorio:

Salimos del modo root, con exit, ya que nos interesa que los archivos de trabajo se creen con nuestro usuario habitual:


exit
cd /home/usuario
svn co file:///var/svn/proyecto/trunk/ proyecto/

Nos apareceran los mensajes de importación, cuando finalice el proceso, entramos en el directorio de trabajo y veremos los archivos descargados del repositorio. Con esto damos por finalizado esta primera toma de contacto, en un próximo articulo veremos como acceder a nuestro repositorio desde otros pc.

Instalar Subversion en Ubuntu 6.10

Miércoles, Diciembre 6th, 2006

Esta vez toca una mini-mini-guía para instalar el excelente sistema de control de versiones Subversion (AKA SVN) en la última versión de Ubuntu (Edgy Eft).

SVN nació como alternativa a CVS, tomando lo que ya funcionaba y corrigiendo o añadiendo funcionalidades inexistentes. El caso es que, desde que prácticamente casi todas las herramientas de desarrollo más populares incluyen soporte de SVN, este sistema se está convirtiendo rápidamente en la alternativa open source más utilizada en el campo de los sistemas de control de versiones.

Instalar SVN en Ubuntu es muy sencillo:

Abrimos una sesión en el terminal, y nos ponemos en modo root:

sudo -s

Después de introducir la contraseña, ya podemos introducir las ordenes con privilegios de root

Para instalar SVN, tan sólo tenemos que utilizar apt-get:

apt-get install subversion

El sistema apt nos pedirá confirmación y procederá a la instalación de los paquetes correspondientes. Si todo va bien, entonces podemos verificar la instalación, llamando a la utilidad de administración de SVN:

svnadmin help

Si nos aparece la ayuda de línea de comandos de svnadmin, la cosa ha ido bien. En un próximo artículo aprenderemos a crear un repositorio y a empezar a proteger nuestro código.

Buscar cadena en multiples archivos

Lunes, Febrero 27th, 2006

Apunto esto por que siempre se me olvida, para localizar archivos que contengan una cadena determinada puede hacerse de la siguiente forma:

find . -name '*.htm' | xargs grep 'í'

Este comando busca recursivamente todos los archivos con extensión .htm desde el directorio actual y muestra los que contengan la cadena í

Instalar DenyHosts en CentOS

Sábado, Febrero 25th, 2006

DenyHosts es un script escrito en Python que monitoriza las entradas del log de conexiones del SSH, /var/log/secure en CentOS, para detectar clientes maliciosos que realizan ataques de fuerza bruta.

Cuando DenyHosts detecta que una IP se estan realizando repetidos intentos de conexión fallidos, añade esta IP al fichero /etc/hosts.deny y de esta forma cortamos de inmediato los intentos de conexión desde la IP maliciosa.

Esta guía toma como base el excelente Howto de Falko Timme publicado en HowtoForge sobre DenyHosts.

Obtener e instalar DenyHosts

Antes de descargar DenyHosts debemos comprobar la versión de Python disponible en el sistema:

python -V

Obtendremos algo parecido a esto:

Python 2.3.4

Después de conocer la versión de Python instalada en nuestro sistema, vamos a descargar el RPM de DenyHosts, el archivo preparado para la versión 2.3 de Python está disponible aquí.

Para descargar directamente el paquete desde nuestro sistema utilizaremos wget:

wget http://mesh.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.1-python2.3.noarch.rpm

Con el paquete descargado, ya podemos instalarlo:

rpm -i DenyHosts-2.1-python2.3.noarch.rpm

Configuración

DenyHosts se instala en /usr/share/denyhosts en este directorio se encuentran los archivos de configuración. Disponemos de un archivo de ejemplo que tomaremos como base para crear la configuración:

cd /usr/share/denyhosts
cp denyhosts.cfg-dist denyhosts.cfg

Editamos el archivo denyhost.cfg con nuestro editor favorito y ajustamos los parámetros necesarios:

SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
#
# Este parametro indica el periodo de tiempo (4 semanas) que mantendremos las IPs maliciosas
# en el fichero hosts.deny
PURGE_DENY = 4w
#
# Bloquear todos los servicios a la IP maliciosa
BLOCK_SERVICE = ALL

El resto de parámetros del archivo se pueden dejar con los valores por defecto, si además queremos recibir un mail cada vez que se detecten ataques, debemos especificar una dirección de correo válida en:

ADMIN_EMAIL =

Lo habitual es que utilicemos DenyHosts como servicio, para ello podemos aprovechar el archivo daemon-control-dist:


cp daemon-control-dist daemon-control

Editamos el archivo y revisamos los valores:

DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK = "/var/lock/subsys/denyhosts"
DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg"

Despues, nos aseguramos que el archivo sea ejecutable para el usuario root:

chown root daemon-control
chmod 700 daemon-control

Arranque

Ya tenemos lista la configuración, ya podemos arrancar DenyHost:

./daemon-control start

Aunque lo ideal es configurar DenyHosts para que arranque automáticamente, para ello crearemos los enlaces simbólicos necesarios:

cd /etc/init.d
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts

De este modo tendremos configurado DenyHosts de la siguiente forma:

chkconfig --list denyhosts
denyhosts 0:desactivado 1:desactivado 2:activo 3:activo 4:activo 5:activo 6:desactivado

Con esta sencilla utilidad haremos la vida un poco más difícil a los pesaos de Internet, espero que os sea de utilidad.

Utilidad para evitar ataques SSH de fuerza bruta

Sábado, Febrero 25th, 2006

Si dispones de un servidor accesible desde Internet con el servicio SSH activado, basta echarle un vistazo a /var/log/secure para descubrir que hay un montón de “chicos malos” que realizan ataques de fuerza bruta basados en diccionarios de usuario y passwords para intentar entrar en nuestra máquina.

Como ejemplo, muestro el log real de una máquina que está conectada esporádicamente a Internet pero con un servicio SSH disponible:


... Invalid user desktop from ::ffff:81.208.84.214
... Failed password for invalid user desktop from ::ffff:81.208.84.214 port 42827 ssh2
... Invalid user workshop from ::ffff:81.208.84.214
... Failed password for invalid user workshop from ::ffff:81.208.84.214 port 43168 ssh2
...

Estos ataques son realizados desde programas que realizan conexiones a nuestro servicio SSH utilizando nombres de usuario más o menos habituales y diccionarios de contraseñas. Esto es una muestra palpable de lo importante que es elegir contraseña adecuadas y que sean lo suficientemente robustas.

Pues bien, para evitar estos visitantes “indeseados” existe una utilidad llamada DenyHosts que tratará como se merecen a estos incordios.

En un próximo artículo describiré como instalar y configurar DenyHosts en un servidor CentOS 4

HowtoForge - Guías para linux

Sábado, Febrero 25th, 2006

El otro día fui a parar a HowtoForge, un excelente site donde se recopilan HOWTOs (COMOs) sobre linux. La mayoría de artículos son muy prácticos y tocan temas que pueden ayudar al día a día de un administrador Linux.

Eso si la pega, no para todo el mundo, es que los contenidos están en inglés.