Creación de un Sistema Mínimo con...

21
Creaci ´ on de un Sistema M ´ ınimo con GNU/Linux Dr. Luis Gerardo de la Fraga Departamento de Computaci´on Cinvestav E-mail: [email protected] 25-26 Octubre, 2011 Dr. Luis Gerardo de la Fraga CCE 2011. M´ erida Creaci´on de un Sistema M´ ınimo con GNU/Linux 1/21

Transcript of Creación de un Sistema Mínimo con...

Page 1: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Creacion de un Sistema Mınimo conGNU/Linux

Dr. Luis Gerardo de la Fraga

Departamento de ComputacionCinvestav

E-mail: [email protected]

25-26 Octubre, 2011

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 1/21

Page 2: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Sistema MınimoI En vez de quitar todos los programas que no se usan, se

puede arrancar una maquina con el software mınimo.

I Esto es recomendable hacerlo para crear un cortafuegos.

I Esto se debe de realizar para una Computadora en una SolaTarjeta (Single Board Computer, SBC)

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 2/21

Page 3: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

http://www.embeddedsys.com/subpages/products/sbc1670.shtml

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 3/21

Page 4: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

http://www.embeddedarm.com/products/

board-detail.php?product=TS-7800

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 4/21

Page 5: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Pasos a seguirI Obtener un nucleo ya compilado

I Crear un sistema de archivos mınimo para que arranque esenucleo

I Compilar algunos comandos basicos (se usara BusyBox)

I Configurar el sistema y arrancarlo

I Instalarle mas software (DropBear, por ejemplo)

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 5/21

Page 6: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Podrıamos usar el nucleo de esta computadora:

$ uname -a

Linux ceres 2.6.35-22-powerpc #33-Ubuntu Mon Sep 20 \

00:42:22 UTC 2010 ppc GNU/Linux

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 6/21

Page 7: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

El nucleo es el archivo

$ cd /boot

$ file vmlinux-2.6.35-22-powerpc

vmlinux-2.6.35-22-powerpc: ELF 32-bit MSB executable,

PowerPC or cisco 4500, version 1 (SYSV),

statically linked,

with unknown capability 0x41000000 = 0x13676e75,

with unknown capability 0x10000 = 0xb0402,

not stripped

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 7/21

Page 8: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Podrıamos crear un arbol de archivos para arrancar ese nucleo conun sistema operativo mınimo:

I /dev Archivos de dispositivos para E/S

I /proc Directorio para montar la informacion del nucleo

I /etc Archivos de configuracion del sistema

I /sbin Binarios para el mantenimiento del sistema

I /bin Binarios del sistema

I /lib Bibliotecas compartidas en tiempo de ejecucion

I /mnt Un punto de montaje para otros sistemas de archivos

I /usr Utilerias para usuarios

I /var Archivos de auditorıa del sistema

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 8/21

Page 9: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

El sistema de archivos debe llenarse con la siguiente informacion:

I El ejecutable de BusyBox (que contiene todas las utileriasnecesarias)

I Las bibliotecas compartidas en /lib

I Los archivos de E/S en /dev

I Los archivos de configuracion en /etc

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 9/21

Page 10: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Bibliotecas

Las biblioteca estandar esta compilada con informacion para trazarmuchas cosas, intentar

$ LD_DEBUG=help /bin/ls

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 10/21

Page 11: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Para saber las bibliotecas que esta usando un comando tambien sepuede usar directamente el comando ldd

$ ldd /bin/ls

linux-vdso32.so.1 => (0x00100000)

libselinux.so.1 => /lib/libselinux.so.1 (0x0ffbf000)

librt.so.1 => /lib/librt.so.1 (0x0ff96000)

libacl.so.1 => /lib/libacl.so.1 (0x0ff6d000)

libc.so.6 => /lib/libc.so.6 (0x0fdd9000)

libdl.so.2 => /lib/libdl.so.2 (0x0fdb5000)

/lib/ld.so.1 (0x2024e000)

libpthread.so.0 => /lib/libpthread.so.0 (0x0fd7a000)

libattr.so.1 => /lib/libattr.so.1 (0x0fd55000)

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 11/21

Page 12: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

BusyBoxI Busybox esta disponible en http://www.busybox.net

I se considera a sı mismo la “navaja suiza” para sistemasempotrados (o embebidos).

I Busybox contiene una gran cantidad de utilerıas para realizarun minisistema operativo.

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 12/21

Page 13: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

I La ultima version es busybox-1.19.2.tar.bz2

I Las instrucciones de su instalacion se encuentran en

busybox-1.19.2/INSTALL

I Para compilar todo el paquete que viene por defecto se hace

make defconfig

make

I Para instalarlo, por ejemplo, en/home/pepito/SistemaMinimo

sudo make CONFIG_PREFIX=/home/pepito/SistemaMinimo/ \

install

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 13/21

Page 14: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Verificacion del sistemaI Se puede usar el comando chroot para verificar si nuestro

sistema de archivos esta funcionando.

I Tal vez sea necesario copiar el binario del shell bash (aldirectorio /bin) y agregar las bibliotecas necesarias para quepueda ejecutarse (se checan con ldd /bin/bash.

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 14/21

Page 15: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Creacion de la imagen

Para crear la imagen que cargara el nucleo se realiza, en eldirectorio donde se tiene el arbol de archivos creado:

find . -print | cpio -ov -H newc > /home/pepito/imagen

Finalmente, se puede comprimir la imagen creada:

cd

gzip imagen

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 15/21

Page 16: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

ArranqueI Para probar nuestra imagen podemos arrancar desde disco

duro. El arranque lo maneja grub

I Como mi laptop es una iBook G4 (con Ubuntu 10.10) manejayaboot en vez de grub.

I Para hacer arrancable una memoria USB hay que instalartambien grub en ella.

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 16/21

Page 17: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

La lınea para arrancar el sistema mınimo en yaboot o grub es

image=/boot/vmlinux

label="Mi sistema minimo"

initrd=/boot/imagen.gz

read-write

append="root=/dev/ram0"

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 17/21

Page 18: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Configuracion de DropBear

Las llaves van en el directorio /etc/dropbear y el script paraarrancar el servidor podrıa ser

$ cat /etc/arrancaDropBear

#!/bin/sh

touch /var/log/lastlog

echo -n "Setting dropbear server..."

/usr/sbin/dropbear -w

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 18/21

Page 19: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Configuracion de dnsMasq (1/2)

Este podrıa ser el script para arrancar dnsmasq

#!/bin/sh

echo "Setting dnsmasq server..."

mkdir -p /var/lib/dhcp

/sbin/dnsmasq

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 19/21

Page 20: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

Configuracion de dnsMasq (1/2)

Este podrıa ser el archivo de configuracion de nuestro servidordhcp:

$ cat /etc/dnsmasq.conf

dhcp-range=192.168.10.100,192.168.10.200,24h

dhcp-host=00:B0:D0:CF:66:C1,cliente01,192.168.10.91

#

dhcp-leasefile=/var/lib/dhcp/dnsmasq.leases

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 20/21

Page 21: Creación de un Sistema Mínimo con GNU/Linuxcs.cinvestav.mx/~fraga/Cursos/Seguridad/2013/sisMinimo.pdf · Sistema M nimo I En vez de quitar todos los programas que no se usan, se

¡ Suerte !

Dr. Luis Gerardo de la Fraga CCE 2011. Merida Creacion de un Sistema Mınimo con GNU/Linux 21/21