UNIX NetWork

Philosophy, OtherJuly 30, 2007 2:01 am

Conoces algo sobre la fisica cuantica?, enterate un poco de que o como es, aqui :) http://www.ytuquesabes.es/

PhilosophyJuly 29, 2007 7:45 pm


A very nice movie, el hunk tenia razon :)

PhilosophyJuly 21, 2007 7:42 pm

El ser humano es una parte de un conjunto, llamada por nosotros el _universo_, una pieza limitada a tiempo y espacio. Él experimenta, sus pensamientos y sensaciones como algo separado del resto… una clase de ilusión óptica de su sentido. Esta ilusión es una clase de prisión para nosotros, restringiéndonos a nuestros deseos personales y al afecto para solo algunas personas lo más cerca posible a nosotros. Nuestra tarea debe ser liberarse de esta prisión ensanchando nuestro círculo de la compasión para abrazar todas las criaturas vivas en conjunto con la naturaleza y su belleza. Albert Einstein

SoftwareJuly 20, 2007 1:49 am

* Ficheros tar.gz
Comprimir: tar -czfv archivo.tar.gz ficheros
Descomprimir: tar -xzvf archivo.tar.gz
Ver contenido: tar -tzf archivo.tar.gz

FunnJuly 15, 2007 4:28 pm


Software, NetBSDJuly 14, 2007 5:54 pm


Instalacion de NetBSD WorkStation 2.0

Antes de continuar he de advertir que instalar una estacin
de trabajo NetBSD es un especie de ejercicio espiritual Zen donde la paciencia
es retada a superar una difcil (y larga) prueba. Comence a instalar NetBSD un
sabado en la tarde y conclui el mircoles en la noche. De modo que mentalcese,
respire profundamente, encienda una varita de incienso y adopte la posicin de
flor de loto antes de colocar el CD de NetBSD en la unidad ;-) . Esta es la lista
de mi hardware:

  • Procesador Athlon-k7 a 1.2 GHz
  • 288 MB RAM
  • VIA82 Motherboard
  • Nvidia Geforce2 64 MB
  • Monitor HP V70 17″
  • Disco duro Samsung 40 GB 7200
  • Disco duro Seageate 120 GB 7200
  • Infinitum Telmex 256 Kbps

La instalacion de NetBSD es bastante sencilla, los lenguajes
disponibles en el instalador (sysinst) son, ingles, aleman, frances spañol
y polaco. A continuacin se nos preguntar si deseamos instalar NetBSD en el disco
duro, reinstalar o actualizar nuestro sistema. Al seleccionar “Instalacion”
en el disco duro sysinst nos presentara los discos disponibles. En Linux, las
unidades IDE disponibles comienzan con hda, hdb, hdc etc, en NetBSD comienzan
con wd0, wd1, wd2, etc:

El wd1 (wd0 es el DD de 40 GB), pero si solo se tiene un
disco duro se debe elegir wd0. Sysinst nos preguntar si queremos una instalacion
completa o una instalacion personalizada, al final resulto lo mismo porque al
elegir la opcion “Custom”, seleccione “Install selected sets” porque no supe
que poner o quitar:

Como ya tenia Debian instalado le indique que editara el
MBR. La unidad de medicin que seleccione fue “megabytes”. Sysinst encontro las
particiones de Linux, le asigne a Debian 80 GB en dos particiones primarias
y tres lgicas de manera que el instalador de NetBSD encontro dos particiones
primarias libres. Asigne a una de ellas los 40 GB restantes seleccionando “NetBSD”
en el “Kind”. Me pregunto si deseaba instalar el “boot select” y le dije “Yes”.
Despues de ello el instalador me sugiri varias particiones donde montar el root,
swap, home:

 

Solo deb modificar el numero de megas asignados para que
las particiones ocuparan todos los 40 GB que haba establecido en el paso anterior.
Luego de ello comenze el formateado FFS de las particiones. En el “Choosing
installation media” seleccione “CD” y despues de unos minutos lo paso todo al
disco duro.

Seleccione la zona horaria, el bootblock, el tipo de encriptacion
de las contraseas y teclee el password de root. Al final sysinst envio un mensaje
de felicitacion y ya tengo NetBSd en mi disco!

Segn yo, le indique al instalador que hiciera NetBSD booteable,
sin embargo al reiniciar, GRUB solo me mostro las opciones de Debian. No
problem
, una rapida “googleada” me dijo que agregando:

title NetBSD 2.0
root (hd1,1)
chainloader +1

al /boot/grub/menu.lst (en Debian), funcionara,
y en efecto, al reiniciar ya pude entrar a NetBSD.

Post-Instalacin

La configuracion posterior de NetBSD incluye definir el hostame en /etc/rc.conf,
establecer el teclado en espaol en /etc/wscons.conf (”encoding=es”) y configurar
la zona horaria agregando “kern.rtc_offset=-60″ al archivo /etc/sysctl.conf
y creando una liga simbolica:

# ln -s /usr/share/zoneinfo/Mexico/General
/etc/localtime

Para poner la fecha y hora “12 de Febrero del 2005 a la
1:25 PM” tecleamos:

# date 200502121325

Ahora en /etc/rc.conf ponemos “hostname=Diabolica”
y en /etc/hostname “Diabolica”.

adems hay que gregar el soporte para softdep
al archivo /etc/fstab. Todo ello est en el
manual.

Configurar
el DSL
de Infinitum fue un tanto laborioso, pero no dio problemas.
Otro asunto fue la instalacion de los paquetes, Debian me tiene muy mal acostumbrado!

Existen dos maneras de instalar paquetes en NetBSD pkg_add
para instalar paquetes binarios, verbigracia

pkg_add ftp://ftp.netbsd.org/pub/NetBSD/packages/2.0/i386/lang/kaffe-1.1.4nb3.tgz

Algo desconcertante de pkg_add, es que no muestra ninguna
barra de avance, asta que uno no sabe si esta descargando el paquete o no. Por
otra parte, pkgsrc compila e instala paquetes desde
las fuentes, a la manera del emerge de Gentoo (o
emerge lo hace como pkgsrc?, no lo se. Resulta que las versiones de los paquetes
disponibles a traves de pkg-add no corresponden a los disponibles por pkgsrc.
Si alguien me hubiese informado de este hecho me habra ahorrado un gran dolor
de cabeza (y varias horas de pelea con pkg_add).

Sucede que quize ahorrar tiempo de compilacion descargando
las versiones binarias de varias libreras (al igual que en Gentoo, compilar
todo el sistema me parece una perdida de tiempo innecesaria) pero al no coincidir
las versiones de pkgsrc me enviaba mensajes de error. Al final tuve que borrar
las versiones con pkg_delete y luego volver a instalar esos mismos paquetes
desde las fuentes. Esta falta de concordancia entre los paquetes me parece un
serio inconveniente para NetBSD y es un aspecto en el cual aun se debe trabajar.

El primer paso para usar pkgsrc es descargar el
arblo de ports en /usr:

# cd /usr
# ftp ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz

Y descomprimirlo:

# tar -zxvf pkgsrc.tar.gz

Luego de instalar el arbol de ports, el proceso
de instalacion de un paquete inicia con su ubicacion dentro del directorio /usr/pkgsrc.
Consulte la pagina
de ports de NetBSD
. Los meta-paquetes que se encuentran en /usr/pkgsrc/meta-pkgs
son muy utiles pues nos permiten instalar un escritorio completo (KDE, Gnome,
XFCE4) sin tener que estar instalando los paquetes de manera individual. Un
paquete tpico se instala con los siguientes pasos:

# make

# make install
# make clean && make clean-depends

El primer paquete a instalar es sin duda el Bash, la shell
por omision de NetBSD es la insufrible csh. Luego de instalar el Bash
es necesario modificar el shell del usuario root y normal con el comando chsh:

#chsh -s bash -l root
#chsh -s bash -l mmontoya

recuerde agregar el PATH y el TERM=xterm a los archivos
.bashrc y .bash_profile. Ademas, hay que agregar al usuario normal al grupo
“wheel” en el archivo /etc/group para que pueda hacer “su root”:

wheel:*:0:root,mmontoya

Dado que en Debian aun no hay paquetes X.org, decid probarlo
en NetBSD. Me coloqu en /usr/pkgsrc/xorg-server y le di el “make install” para
la compilacin, luego saque al perro, vi “Los Simpson” (el captulo en que Krusty
celebra su Bar mitzva con “Mister T” y Homero tiene un programa de
television), vi con mi novia el show de los cinco gays que ayudan a un heterosexual
en su cita, fui a Superama, cenamos, volvi a sacar al perro… y an no terminaba
de compilar (lo de la paciencia era en serio!).

Para montar una particion ext2 o ext3 de Linux
usamos el comando mount:

#mount -t ext2fs /dev/wd1k /mnt/linux

Lo siento, NetBSD no soporta ReiserFS ni XFS ;-(.
Para montar una particion vfat de Windows:

#mount -t msdos /dev/wd0b /mnt/windows

Para montar mi USB Pen Drive:

#mount -t msdos /dev/sd0e /mnt/llavero

Si embargo, parece que si se monta y se desmonta el USB
Pen Drive, hay que hacer un pequeo hack de limpieza de buffer para montarlo
otra vez en la misma sesion, (yo lo intente pero no me funciono y me vi obligado
a reiniciar). Los chicos de NetBSD ya estan trabajando en este bug. Por otro
lado, el quemador se instala sin problemas, instale cdrecord con pkgsrc y luego
de un “cdrecord -scanbus” lo ubico en el inusual device “15,1,0″, pero pude
quemar facilmente.

Para que el mouse funcione, en el archivo /etc/X11/XF86Config
se deben cambiar las lineas:

Option “Protocol” “PS2″

Option “Device” “/dev/psaux”

Por:

Option “Protocol” “wsmouse”
Option “Device” “/dev/wsmouse”

No tuve que configurar nada de la tarjeta de sonido, simplemente
instale XMMS con pkgsrc y pude escuchar de inmediato las canciones OGG Vorbis
y MP3 de mi particion Linux usando los mdulos OSS (ALSA no viene por default).

Al final logre tener una estacion de trabajo agradable
y funcional:

Conclusion

No es mi intencion discutir ningun aspecto tecnico entre
los BSD y otros sistemas (i.e. SysV vs BSD) pues no me siento lo suficientemente
capacitado para ello. Tampoco quiero empezar un debate sobre cual licencia (GPL
vs BSD) es la mas libre o ingenua. El punto es, cules son las diferencias entre
Debian y NetBSD al considerarlas como candidatas para una WorkStation?

NetBSD es una excelente estacin de trabajo, con gran estabilidad,
desempeño y una generosa cantidad de software disponible. Trabajar con
OpenOffice.org, Mozilla o Gimp es una delicia: nada falla, pasan las horas y
nada se cierra abruptamente, todo esta pronto y expedito. Como se ve, estoy
encantado con mi nuevo juguete ;-) .

No obstante, un serio punto a considerar es que la lista
de hardware soportado por NetBSD es mucho menor a la existente para Linux. Ademas,
a pesar de que instale todo desde la fuentes, no aprecie un aumento significativo
en la velocidad de NetBSD en relacion a Debian SID, instalado en el mismo equipo
y usando los mismos programas. La cuestin del desfase de versiones entre binarios
y fuentes es cosa seria y al parecer no se resolvera en mucho tiempo: cuando
quise editar mi pgina Web con BlueFish (como suelo hacerlo), pkgsrc
se tardo cuarenta y cinco minutos, al acabar yo ya estaba en otra cosa.

Por otro lado, NetBSD es un sistema mas difcil de configurar
que Debian, hasta la fecha el flash player y Java se niegan a funcionar,
a pesar de que ya he seguido las indicaciones para la emulacion de Linux. El
muy necio GDM se niega a dejarme entrar a otra cosa que no sea Gnome (entro
a WM con “startx /usr/pkg/bin/wmaker”). Adems, constantemente recibo mensajes
de error de Samba!! (que yo nunca instale o intente instalar!). Las fuentes
de Mozilla se despliegan de esa manera pequena y desdibujada de Mandrake 6.0
que ya haba olvidado. Todo ello es debido a que Debian esta lleno de archivos
“postinstall” y Wizards que ayudan a configurar el sistema. Se que
muchos fans de Debian se molestarn si digo que Debian esta lleno de Wizards
pero es cierto, la diferencia con Mandrake es que los Wizards de Debian estan
hechos en Ncurses y no en Qt. Como sea, NetBSD solo instala binarios “pelones”,
es decir, sin configurar, de modo que si van a instalar una estacion de trabajo
NetBSD deben leer mas, pero el resultado sin duda vale la pena.


Un tema de Window Maker que hice para mi WorkStation con NetBSD.

Nota de actualizacion: Al parecer el problema
de las fuentes feas no era de NetBSD sino de X.org, al desintalarlo por Xfree86
las fuentes ahora se ven igual de nitidas que en Debian. Para tener el Flash
player
se debe instalar firefox-gtk2-bin (emulacion linux) y no firefox-gtk2.
Java funciona sin problemas con la versin 1.5 en /usr/pkgsrc/lang/sun-jre15.
Para agregar otro escritorio (en este caso XFCE4) a GDM agregue el archivo

/usr/pkg/share/xsessions/xfce4.desktop:

[Desktop Entry]
Encoding=UTF-8
Name=XFCE4
Comment=This session logs you into XFCE4

Exec=xfce4-session
TryExec=xfce4-session
# no icon yet, only the top three are currently used
Icon=
Type=Application

Como en muchos otros proyectos de OpenSource (Python, Ruby, Zope, etc.) sospecho
que NetBSD es un recurso subutilizado por su escasa documentacion, practicamente
solo existe la disponible en su sitio Web. Su canal en irc.freenode.net (#netbsd)
es amigable, pero de los mas lnguidos, y en l, hay pocos usuarios avanzados
que estan dispuestos a explicar a un newbie como solucionar un problema en
NetBSD. No obstante, vale la pena conocer este sabor de Unix, sobre todo si
su hardware es compatible.


Special thanks to aarkerio :)

Software, SecurityJuly 13, 2007 6:59 pm

Create IPtables and PF rules in a graphical mode,
with http://www.fwbuilder.org/ :)

Software, OpenBSD, Security, NetworkJuly 7, 2007 8:27 pm

Para este proceso nosotros realizaremos lo siguiente para evitar que nuestro sistema tenga información redundante o se haga un ciclo al momento de copiar todo el sistema trabajaremos sobre 2 máquinas, una que será llamada firewall y otra que será backup para ello llevaremos la siguiente secuencia de pasos.
Nota: Podrás ocupar VMware o algún otro programa de emulación como QEMU

1. Instalar el sistema base en los 2 equipos
2. Configurar el firewall tal y como deseamos que quede en el livecd con las aplicaciones y reglas predefinidas.
3. Copiar todo el sistema a la máquina backup
4. Personalizar y compilar el kernel del livecd

Una vez configurado el sistema en el firewall procederemos a enviar todo el sistema por medio de una tubería a la máquina backup de la siguiente forma.

# tar -pzcf - / | ssh root@backup dd of=/tmp/firewall.tgz
tar: Removing leading / from absolute path names in the archive

Si es la primera vez que nos conectamos a esta máquina se importará su clave del host a lo que responderemos Yes

The authenticity of host ‘backup (192.168.100.4)’ can’t be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes

En su defecto simplemente escribiremos el password del usuario con el que deseamos conectarnos.

root@backup’s password:

Tecleamos el password de root o del usuario que hayamos elegido.

Con esto estamos empaquetando todo el sistema y esta siendo enviado via ssh a la máquina backup y será almacenado en el directorio /tmp con el nombre de firewall.tgz

Una vez terminado tendremos algunos errores pero no se preocupen nada grave simplemente son archivos que se encuentran trabajando y por lo tanto no se puede hacer una copia exacta de ellos.

tar: Ustar cannot archive a socket /var/cron/tabs/.sock
tar: Ustar cannot archive a socket /var/empty/dev/log
tar: Ustar cannot archive a socket /dev/log
280052+5 records in
280053+1 records out
143387179 bytes transferred in 141.512 secs (1013248 bytes/sec)

Ahora estando en la máquina backup teclearemos lo siguiente uno para crear la carpeta y para desempaquetar todo el sistema anterior.

Nota: Es importante saber que ahí hay suficiente espacio o en su defecto poner otro directorio con mayor capacidad, para ver que particiones tienen suficiente espacio podriamos teclear df –h:

# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/wd0a 503M 38.1M 440M 8% /
/dev/wd0g 3.0G 2.0K 2.8G 0% /home
/dev/wd0f 3.0G 137M 2.7G 5% /tmp
/dev/wd0d 3.0G 504M 2.3G 18% /usr
/dev/wd0e 3.0G 4.4M 2.8G 0% /var
Aquí podremos observar que en /usr tenemos 2.3 gb libres suficientes para nuestra tarea.
Aunque podría ser cualquier otro directorio

# mkdir /usr/livecd
# tar -pzxf /tmp/firewall.tgz -C /usr/livecd/
# mkdir -p /usr/livecd/backups/dev; chmod 755 /usr/livecd/backups/dev

Borraremos información que podría ser sensitiva como el historial del shell o algun otro documento importante, así como también serán borradas claves de ssh, para que al iniciar el sistema cree una nueva de acuerdo al nuevo equipo en que se esta iniciando el livecd.

# rm -i /usr/livecd/root/{.history,.viminfo}
# rm -i /usr/livecd/home/*/{.history,.viminfo}
# rm -rf /usr/livecd/{src,ports}/*
# rm /usr/livecd/etc/ssh/*key*
# rm -rf /usr/livecd/var/tmp/*
# rm -rf /usr/livecd/tmp/*

También los logs serán eliminados

for log_file in `find /usr/livecd/var/log -type f`
do
echo “” > $log_file
done

Necesitamos respaldar algunos directorios que serán utilizados después

cp -pR /usr/livecd/{var,etc,root,home} /usr/livecd/backups/
cp -pR /usr/livecd/dev/MAKEDEV /usr/livecd/backups/dev/

Instalación de cruchgen , crunchide y libstubs

En la máquina de backup procederemos a instalar algunos programas que serán necesarios para la construcción y compilación del nuevo sistema como son crunchgen y crunchide, así como la librería libstubs.

Primero que nada debemos desempaquetar estos archivos ya que no se encuentran de manera preinstalada dentro de OpenBSD he aquí la secuencia de pasos:

Extracción de las fuentes de OpenBSD que en nuestro caso se encuentran en el CDROM, en caso de no tener el CDROM pueden bajarlo del sitio.
ftp://ftp.openbsd.org/pub/OpenBSD/4.0

Teniendo listo nuestro cdrom de OpenBSD procederemos a montar la unidad y desempaquetar el archivo src.tar.gz y sys.tar.gz:

Procederemos con lo siguiente:

Para montar la unidad de cdrom

# mount /dev/cd0a /mnt/
# cd /usr/src; tar xzf /mnt/4.0/i386/src.tar.gz
# tar zxf /mnt/4.0/i386/sys.tar.gz

Importante: Desmontar la unidad ya que si no posteriormente muestra un error en algun momento de la compilación.

# umount /mnt/

Una vez hecho esto podremos proceder a la compilación de los paquetes anteriores.

Instalación de crunchgen

# cd /usr/src/distrib/crunch/crunchgen/
# make; make install
cc -O2 -pipe -g -Wall -DMF_NAMES=’”Makefile.bsd-wrapper”,”Makefile”‘ -nostdinc -idirafter /usr/include -c crunchgen.c
sh /usr/src/distrib/crunch/crunchgen/mkskel.sh /usr/src/distrib/crunch/crunchgen/crunched_main.c > crunched_skel.c
cc -O2 -pipe -g -Wall -DMF_NAMES=’”Makefile.bsd-wrapper”,”Makefile”‘ -nostdinc -idirafter /usr/include -c crunched_skel.c
cc -o crunchgen crunchgen.o crunched_skel.o
nroff -Tascii -mandoc crunchgen.1 > crunchgen.cat1
install -c -s -o root -g bin -m 555 crunchgen /usr/bin/crunchgen
install -c -o root -g bin -m 444 crunchgen.cat1 /usr/share/man/cat1/crunchgen.0

Instalación de crunchide

# cd /usr/src/distrib/crunch/crunchide/
# make; make install
cc -O2 -pipe -nostdinc -idirafter /usr/include -c crunchide.c
cc -O2 -pipe -nostdinc -idirafter /usr/include -c elf_hide.c
cc -O2 -pipe -nostdinc -idirafter /usr/include -c ecoff_hide.c
cc -o crunchide crunchide.o elf_hide.o ecoff_hide.o
nroff -Tascii -mandoc crunchide.1 > crunchide.cat1
install -c -s -o root -g bin -m 555 crunchide /usr/bin/crunchide
install -c -o root -g bin -m 444 crunchide.cat1 /usr/share/man/cat1/crunchide.0

Instalación de la libreria libstubs

# cd /usr/src/distrib/special/libstubs/
# make; make install
cc -O2 -pipe -g -Os -D__DBINTERFACE_PRIVATE -c setlocale.c -o setlocale.o
cc -O2 -pipe -g -Os -D__DBINTERFACE_PRIVATE -c db.c -o db.o
building standard stubs library
ranlib libstubs.a
install -c -o root -g bin -m 600 libstubs.a /usr/lib/libstubs.a
ranlib -t /usr/lib/libstubs.a
chmod 444 /usr/lib/libstubs.a

Personalización del kernel

Ahora editaremos el siguiente archivo /usr/src/sys/arch/i386/conf/RAMDISK_CD

# cd /usr/src/sys/arch/i386/conf/

Por cualquier error que se puede cometer crearemos un archivo de respaldo de RAMDISK_CD de la siguiente forma

# cp RAMDISK_CD RAMDISK_CD.anterior
# vi RAMDISK_CD

Buscamos, agregamos y comentamos las siguientes líneas

option RAMDISK_HOOKS
option MINIROOTSIZE=3800
option MFS
option UNION
config bsd root on cd0a
#config bsd root on rd0a swap on rd0b and wd0b and sd0b

Podemos iniciar nuestro CD con algunas reglas de firewall

pseudo-device bpfilter 8
pseudo-device pf 1
pseudo-device pflog 1

A continuación modificaremos el siguiente archivo, al igual que el anterior haremos un respaldo de este archivo por algun cambio que pudiera ocurrir
/usr/src/distrib/i386/common/Makefile.inc

#cd /usr/src/distrib/i386/common/
#cp Makefile.inc Makefile.inc.anterior
#vi Makefile.inc

Ahora localizamos las siguientes líneas

#strip ${.OBJDIR}/boot
#strip -R .comment ${.OBJDIR}/boot

Reemplazamos las anteriores por la siguiente línea
strip -s -R .comment -K cngetc ${.OBJDIR}/boot

Ahora las siguientes

#strip bsd.strip
#strip -R .comment bsd.strip

Quitamos o comentamos las anteriores y se reemplazaran por esta.
strip -s -R .comment -K cngetc bsd.strip

Una vez hecho esto guardamos los cambios hechos y salimos.

Compilación del KERNEL RAMDISK

Este proceso puede tomar tiempo dependiendo de la velocidad del sistema además de que realizaremos unas tareas adicionales para verificar que todo este bien

Nota: Si diéramos un ls sobre este directorio veríamos que solo hay algunos paquetes, posteriormente se generan varios de los cuales nosotros solo necesitaremos el kernel generado bsd y el archivo cdrom40.fs

# cd /usr/src/sys/arch/i386/conf
# config RAMDISK_CD
# cd ../compile/RAMDISK_CD/
# make clean; make depend; make

Ahora la imagen de arranque será creada cuando es la primera vez que se hace esto el fólder obj se encuentra vació pero para evitar problemas simplemente borramos su contenido en caso que exista.

Una vez compilado el kernel tendrá que ser copiado a la nueva carpeta de livecd

# cd /usr/src/distrib/i386/ramdisk_cd/
# rm -rf obj/*
# make
# cp bsd /usr/livecd ; chown root:wheel /usr/livecd/bsd ; chmod 644 /usr/livecd/bsd
# cp cdrom40.fs /usr/livecd/

Ahora en el archivo /usr/livecd/etc/rc
# cd /usr/livecd/etc/
# vi rc
# Despues de : rm -f /fastboot # XXX (root now writeable)
echo ‘Montando unidades mfs’
mount_mfs -s 51200 -o async,nosuid,nodev,noatime swap /var
mount_mfs -i 4096 -s 6144 -o async,nosuid,nodev,noatime swap /etc
mount_mfs -i 128 -s 2048 -o async,noatime swap /dev
mount_mfs -s 6144 -o async,nosuid,nodev,noatime swap /tmp
mount_mfs -s 8192 -o async,nosuid,nodev,noatime swap /home
mount_mfs -s 8192 -o async,nosuid,nodev,noatime swap /root
sleep 2
echo -n ‘Copiando archivos: var ‘
cp -pR /backups/var/* /var
echo -n ‘etc ‘
cp -pR /backups/etc/* /etc
echo -n ‘dev ‘
cp -pR /backups/dev/* /dev
echo ‘root’
cp -pR /backups/root/.[a-z]* /root
echo ‘Creando nodos del dipositivo’
cd /dev && sh MAKEDEV all

Una vez finalizado esto eliminaremos las siguientes lineas en el archivo
/usr/livecd/backups/etc/rc

umount -a >/dev/null 2>&1
mount -uw / # root on nfs requires this, others aren’t hurt
rm -f /fastboot # XXX (root now writeable)

mount -s /usr >/dev/null 2>&1
mount -s /var >/dev/null 2>&1

echo clearing /tmp
# prune quickly with one rm, then use find to clean up /tmp/[lq]*
# (not needed with mfs /tmp, but doesn’t hurt there…)
(cd /tmp && rm -rf [a-km-pr-zA-Z]* &&
find . ! -name . ! -name lost+found ! -name quota.user
! -name quota.group -execdir rm -rf — {} ; -type d -prune)

Ahora si deseamos escribir un nuevo password para root al momento de iniciar el equipo en /usr/livecd/backups/etc/rc.local
# Add your local startup actions here.
# We need a root Password
echo ‘Escribe en nuevo password para root’
passwd

Actualizar el /usr/livecd/etc/fstab

# cd /usr/livecd/etc/
# vi fstab

Como nuestro sistema se estará ejecutando desde nuestro cdrom no se necesitan todas esas líneas así que pueden borrarse y reemplazar por solo estas

/dev/cd0a / cd9660 ro,noatime 0 0
/dev/fd0a /mnt/floppy msdos rw,noauto 0 0

También el floppy es marcado por que desde ahí serán leídas las configuraciones que permitirán iniciar las reglas del firewall.

Creamos el archivo boot.conf

# vi boot.conf
Y agregamos las siguientes lineas

set image /bsd
set timeout 5

Creación de la imagen
# cd /usr/livecd/
# mkhybrid -b cdrom40.fs -c boot.catalog -R -v -o /var/tmp/kauil.iso /usr/livecd/

Dudas y comentarios y cualquier otra aportación a peques@openbsd.com.mx

Bibliografía

http://www.openbsd-wiki.org/index.php?title=LiveCD
http://archives.neohapsis.com/archives/openbsd/2005-09/1348.html
http://www.blackant.net/other/docs/howto-bootable-cdrom-openbsd.php
http://www.threatmind.net/secwiki/OpenBSDLiveCD#head-d3925af4dcd407645974d11f07a30b088fc52e15

Software, NetBSD, OpenBSD, FreeBSD, Security, NetworkJuly 6, 2007 2:06 am

Most people with a box on public IP, and with a sshd listening on port 22, notices a lot of bruteforce attempts. These attempts are filling up logs, and are a pure annoyance. Here’s how I “solved” it..

In OpenBSD 3.7, pf got a really nice feature called max-src-conn-rate, which specifies how quickly new connections can be made. Connecting hosts exceeding this limit can be put into a table, and all states including that hosts IP address, can also be flushed.

When I have the offending IPs in a table, it can easily be blocked early on in our ruleset. But since I don’t want to block a host forever, or even until the next reboot, I’m gonna use a small utility to clean out this table once in a while.

Let’s start with the magic pf rule:

# special rule for ssh
pass in on $ext_if proto tcp from any to ($ext_if) port ssh \
flags S/SA keep state \
(max-src-conn-rate 3/30, overload flush global)

The keyword here is ofcourse “max-src-conn-rate”. The arguments tell pf to put every IP exceeding a connection rate of more than 3 connections in every 30 seconds, in a table called “ssh-bruteforce”. How often do valid users connect to ssh that often? Ofcourse you can set this to 6/60 or something more apropriate for your environment. Last but not least pf kills all states originating from the bad host.

To keep the bad boys out, I add a block rule early on in my ruleset:

# block the ssh bruteforce bastards
block drop in quick on $ext_if from

Great, now the table are getting populated with bad hosts, and they’re getting blocked. But as I said earlier, I don’t want to block them forever. This is were expiretable comes in handy. This utility, written by Henrik Gustafsson, takes a look at a table, and removes (”expires”) entires older then the specified amount of time.

It’s in ports (sysutils/expiretable), but was commited after 3.8 was tagged, so you’ll have to go -current, or compile/install it by hand. Then add this to roots crontab:

*/5 * * * * /usr/local/sbin/expiretable -t 3600 ssh-bruteforce

Every five minutes, I expire entries older than one hour.

This is how I get rid of thousands of login attempts filling my logs.

Software, NetBSDJuly 5, 2007 10:24 pm

Introduction
You may have various reasons to create a LiveCD.
Create a custom installer for your application and distribute it to the customers, create a desktop enviroment and boot it off your CD whenever you cannot access your own computer or maybe you have a diskless router and you want to run your O.S off the CD.
Implementation
There are two ways to create a LiveCD running NetBSD.
The “old” way is to create a boot floppy sized image.
The boot image must be exactly the size of either a 1200, 1440, or a 2880 kB floppy, and mkisofs will use this size when creating the output iso9660 filesystem.
The image will have a kernel with root file system inserted into it.
For i386, compile your custom kernel or you can use kernel config from /usr/src/sys/arch/i386/conf/INSTALL.
Then do following:

Create a directory where you will build your image and cd to it.
# cd /my_build/dir
Copy your custom kernel to this directory.
# cp /usr/src/sys/arch/i386/compile/obj/${MYKERNEL}/netbsd .
Create file system of the directory with files for your LiveCD.
# makefs -s ${FS_SIZE} -t ffs md.img ${IMG_DIR}
where ${FS_SIZE} is the size of your md.img and IMG_DIR is where you have your file system.

Now you need to insert the image into your kernel, wich then will get extracted of the kernel and mounted as memory file system:
# mdsetimage -v -s netbsd md.img
Compress your kernel to save space and rename it (optional step):
# gzip -f -9 netbsd ; mv netbsd.gz netbsd
For vnconfig, newfs and disklabel to “understand” the notion of floppy288 you need to edit your /etc/disktab and add there:

floppy288|2.88MB 3.5in Extra High Density Floppy:\
:ty=floppy:se#512:nt#2:rm#300:ns#36:nc#80:\
:pa#5760:oa#0:ba#4096:fa#512:ta=4.2BSD:\
:pb#5760:ob#0:\
:pc#5760:oc#0:

Create virtual disk and file system on it.
# dd if=/dev/zero of=image.fs count=5760
# vnconfig -t floppy288 -v -c /dev/vnd0d image.fs
# disklabel -rw /dev/vnd0d floppy288
# newfs -m 0 -o space -i 204800 /dev/rvnd0a

Bootstrap your virtual disk:
# /usr/sbin/installboot -v -m i386 -o timeout=3,console=pc -t ffs /dev/rvnd0a /usr/mdec/bootxx_ffsv1
Mount the virtual disk you just created and copy over your kernel and second stage boot loader.
# mount /dev/vnd0a /mnt
# cp /boot /mnt/
# cp netbsd /mnt/
# umount /mnt
# vnconfig -u vnd0d

Create a directory for your ISO image and copy your image there.
# cp image.fs cdisodir/
You can put some additional files to the cdisodir, they will be avaliable when you mounted your CD.

Create ISO image.
# mkisofs -l -J -R -o livecd.iso -c boot.catalog -b image.fs cdisodir

The new way is to use cdboot file instead of boot floppy.
This will allow you to use kernel beyond 2880 kB.
To compile cdboot, run:
# cd /usr/src/sys/arch/i386/stand/cdboot ; make
This time we will not create a floppy image. We dont need it since we can use cdboot instead.
Put cdboot to your cdisodir.
# cp /usr/src/sys/arch/i386/stand/cdboot/cdboot cdisodir/
Copy over your kernel with rootfs inserted into it and second stage boot loader to your ISO directory.
# cp netbsd cdisodir/
# cp /boot cdisodir/

Create ISO image
# mkisofs -l -J -R -o livecd.iso -c boot.catalog -b cdboot -no-emul-boot cdisodir
Notice the -no-emul-boot option. It’s becouse the boot image is not an image of a floppy.

To check your ISO image, you can mount it as virtual device:
# vnconfig -v -c /dev/vnd0d livecd.iso
# mount -t cd9660 /dev/vnd0a /mnt

When you’re done:
# umount /mnt
# vnconfig -u vnd0d

Thats all, its done. :)

Special thanks to Yazzy :)