Flags del Kernel para Firewall o Tuneando el /proc

Opciones de Seguridad en el kernel de Linux (proc)

 

IpTables es la herramienta en espacio de usuario, que permite establecer filtros con NetFilter, el cual es parte del kernel de Linux. Pero independientemente de las herramientas en espacio de usuario, existe una forma de indicar al kernel, como manejar ciertas cosas. Esta forma es, a saber, mediente variables del kernel que pueden modificarse desde el directorio /proc.

/proc

No tengo que detenerme mucho sobre le directorio /proc, ya que basta googlear para encontrar información sobre este pseudo sistema de ficheros. Solo hay que decir que mediante el proc podemos acceder a información del kernel, y modificar “on the fly” ciertas configuraciones.

Por ejemplo en /proc/sys/kernel/hostname encontramos el hostname de nuestro linux, y lo cambiamos haciendo

echo otroHostname > /proc/sys/kernel/hostname

De esta misma manera, podremos cambiar “a mano” ciertos valores del funcionamiento del kernel, y consecuentemente, el comportamiento del networking del mismo. Sin embargo, existe una manera mas “prolija”: sysctl

Sysctl, nos permite configurar las mismas variables (ver mas abajo) que esten configuradas en el /proc/sys , de forma centralizada en el archivo /etc/sysctl.conf. Siendo su sintaxis muy simple:

clave.a.configurar = valor

Para no ahondar mucho sobre el tema, simplemente hagamos un breve repaso y vayamos a lo importante

Breve repaso:

 

sysctl -a # muestra todas las variables configurada
sysctl -w kernel.hostname=MyHaxorName # asigna "MyHaxorName" como hostname del sistema
sysctl kernel.hostname # muestra el valor asignado a la variable
echo "kernel.hostname = MyHaxorName" >> /etc/sysctl.conf # cada vez que se inicie el sistema, sysctl configurará
las variables como se encuentran en este archivo 

A continuación, una lista de las variables mas importantes a tener en cuenta para la seguridad de nuestro firewall

Filtro anti-spoof

/proc/sys/net/ipv4/conf/eth0/rp_filter

En /proc/sys/net/ipv4/conf tenemos una carpeta por cada interfaz de red (eth0, lo, wlan0.. etc, además de las carpetas default y all). En cada una de ellas, encontramos archivos que configuran comportamiento especifico de cada interfaz, en el caso de rp_filter, es un filtro anti spoof: solo permite que la respuesta a un paquete sea enviada por la misma interfaz por la cual se recibió el paquete.

Habilitamos con 1, deshabilitamos con 0.

Ignorar pings

/proc/sys/net/ipv4/icmp_echo_ignore_all

Bastante conocido, con un 1 en este archivo, ignoramos todos los paqutes ICMP tipo echo, es decir, los pings.

El no responder pings, permite que pasemos desapercibidos en algunos escaneos simples, pero también nos bloquea la posibilidad de hacer pruebas de pings.

Syn Cookies

/proc/sys/net/ipv4/tcp_syncookies

El ataque syncooky conciste en enviar muchos paquetes TCP con el flag SYN activado,  pero no completa el HandShake, por lo que ocupa memoria en conexiones que quedan a la espera, causando un DoS. Colocando un 1 en este archivo, le pedimos al kernel, que no abra un buffer hasta que la conexión este abierta.

Paquetes Marcianos

/proc/sys/net/ipv4/conf/all/log_martians

Envia señales a syslog cuando entran paquetes de redes ilegales (cuando el kernel no sabe como rutearlas).

Paquetes Icmp Redirect

/proc/sys/net/ipv4/conf/all/accept_redirects

Un paquete ICMP Redirect, informa cuando hemos mandado un paquete a travez de una ruta que no es la optima.

Un ejemplo casero, es cuando tenemos ROUTER1 conectado a internet y a la LAN, en la cual existen 2 pc (PC1 y PC2), la configuración normal seria configurar a PC1 y PC2 con Default Gatewat en ROUTER1. Si cometieramos la tontera configurar PC2 con su default gateway en PC1 (teniendo por Default Gateway a ROUTER1 en esta pc) PC1 nos informaria que hay una ruta mas directa, y es atravez de ROUTER1. Esa funcion de anunciar esa ruta la cumple los paquetes ICMP Redirect. Con este tipo de paquetes, “alguien” podría realizarte un MITM.

ICMP Send_Reditect

/proc/sys/net/ipv4/conf/all/send_redirects

La explicación de esta variable esta explicada en Paquetes ICMP Redirect, pero en este caso, implica no enviar dichos paquetes ICMP.

Si tu linux no actua como ruter, en una red con varios routers, lo mas aconsejable es deshabilitarlo, poniendo un 0.

Ip Connection Tracking

/proc/sys/net/ipv4/ip_conntrack_max ó

/proc/sys/net/ipv4/netfilter/ip_conntrack_max

En este archivo podemos colocar un numero, el cual será la cantidad máxima de conexiones IP que el kernel puede manejar. Este numero suele estar fijado segun la cantidad de memoria ram que poseamos. Esto puede ser un punto clave a la hora de lidiar con DoS. Asi mismo, podemos encontrar unos cuantos archivos similares, pero más especificos, haciendo ls /proc/sys/net/ipv4/netfilter/ip_conntrack*, los nombres de cada uno dan una idea de funcionalidad, y si conoces bien el funcionamiento del protocolo IP podrás retocar estos valores.

Source Route

/proc/sys/net/ipv4/conf/all/accept_source_route

Cuando internet nacio, inocentemente creia que todos serían buenas personas, por lo que sus protocolos, permitian a cualquiera obtener mucha información, en este caso, Ipv4,  permite que solicitemos a un determinado host, una ruta especifica por donde enviar paquetes, pudiendo ser utilizada esta información para conocer las “Relaciones de Confianza” entre routers. Fuera de eso, hoy en dia no se usa. Lo deshabilitamos con un 0

ICMP Broadcasting  (protección smurf)

/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

ICMP tiene la facultad de poder enviar paquetes Broadcast, es decir, enviar un paquete, el cual todos los hots reconoceran como enviados hacia si mismos, ya que el destino de dicho paquete es una dirección de broadcast. Al recibir este paquete, el host actua en consecuencia y lo responde. Si todo funcionara como corresponde, no habria problema con esta funcionalidad… pero si “alguien” decide enviar paquetes ICMP Broadcast a una gran lista de IPs con un “source” spoofeado, todos los IPs de la lista enviarian una respuesta a la IP inocente (la spoofeada), causandole probablemente un DoS. Para evitar que nos usen como “reflector” enviandonos paquetes broadcast, ignoramos dichos paquetes colocando un 1 en este archivo.

ICMP Dead Error Messages

/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

El RFC 1122, nos pide que los paquetes ICMP erroneos sean completamente descartados silenciosamente, para no probocar tormentas de broadcast.  Para cumplir con dicho requerimiento, colocamos un 1 en dicho archivo.

IP Forward

/proc/sys/net/ipv4/ip_forward

Conocida por todos, esta variable, habilita o deshabilita el reenvio de paquetes. En los casos donde nuestro linux haga NAT, debe estar habilitada, en caso contrario, es recomendable deshabilitarlo.

TCP FIN TimeOut

/proc/sys/net/ipv4/tcp_fin_timeout

Tiempo en segundos que esperaremos antes de descartar una conexión parcialmente cerrada, por defecto 60 segundos, ya que así lo pide el RFC correspondiente a TCP, pero si queremos podemos disminuirlo a fin de evitar algún DoS.

TCP KeepAlive Time

/proc/sys/net/ipv4/tcp_keepalive_time

Cantidad de segundos que esperará el kernel, antes de enviar un paquete para mantener abierta la conexión, a pesar de que no esta siendo utilizada momentaneamente. Por defecto el valor es 7200 (2 horas),  pudiendo ser reducido en algunos casos a 1 hora o 1/2 hora, en segundos 3600 o 1800.

Proxy Arp

/proc/sys/net/ipv4/conf/all/proxy_arp

Con un 0 podemos deshabilitar esta funcionalidad, que no suele ser necesaria, a menos que seamos servidor de VPN, Firewall o Router que lo requiera.

Cache ARP

/proc/sys/net/ipv4/neigh/[interfaz de red]/gc_stale_time

Los segundos que configuremos en esta variable, definiran el tiempo en que se actualiza el cache ARP. Dicho cache, es el que se envenena cuando se realiza un ARP Poisoning Attack, por lo que cuanto mas bajo sea, mas vulnerable a este ataque, pero al mismo tiempo,  mas rapido sabremos cuando una IP quedo fuera de servicio o una MAC cambio de IP (arp -n para verificar las entradas del cache y su estado)

Escalado de Ventana

/proc/sys/net/ipv4/tcp_window_scaling

Dicha variable, habilita (con un 1) o deshabilita (con un 0) la posibilidad de que la conexión TCP negocie el tamaño de la ventana. Dependiendo del segmento de la red y la topologia de la misma, suele ser conveniente que esté habilitada, sin embargo, nos expone a ciertos escaneos (nmap windows scaling) y a posibles DoS.

Algoritmo SACK

/proc/sys/net/ipv4/tcp_sack

SACK es un algoritmo para detectar perdidas de paquetes. Si habilitamos dicha opción (colocando un 1) siempre y cuando pueda, TCP lo utilizará, en caso contrario, ignorará dicha opción. Es recomendable habilitar dicha opción, ecepto que nuestras conexiones TCP las hagamos en un ambito sin demasiadas perdidas de paquetes.

Rango de Puertos Locales

/proc/sys/net/ipv4/ip_local_port_range

En este archivo no colocaremos ni un 1 ni un 0, si no que colocaremos de números, que definiran un rango de puertos, el cual será utilizado para puertos locales, es decir, puertos desde donde comenzaremos conexiones hacia el exterior. En general el rago es 1024 a 4999, pero es conveniente ejecutar:

#echo "32768 61000" > /proc/sys/net/ipv4/ip_local_port_range

en sistemas donde se usen los puertos 1024 a 4999 para brindar servicios.

TTL de nuestros paquetes

/proc/sys/net/ipv4/ip_default_ttl

TTL es Time To Live, o bien, el tiempo de vida que le otorgaremos a los paquetes generados por nuestro host. Este “tiempo” no se cuenta en segundos, sino en cantidad de routers que puede atravesar antes de ser descartado (morir). Es asi que cada router, descuenta uno a dicho valor.

Llegar de sudamerica a china nos cuesta de 12 a 20 saltos, por lo que un paquete que tenga mas de 30 saltos es un tanto raro. El valor mas recomendado en general es 64 (traceroute y a sacarnos las dudas)

Explicit Congestion Notification

/proc/sys/net/ipv4/tcp_ecn

Como lo recita su nombre, ECN es una opción de TCP que permitenotificar cuando un host esta congestionado, para que se busque otra ruta. Algunos firewalls o routers pueden llegar a filtrar los paquetes que tengan esta opción habilitada, pero son los menos. Habilitamos con un 1, que sería lo mas recomendable.

Conclusión:

A la hora de armar un Firewall para nuestro linux, no es cuestión de ejecutar cualquier script a fin, si no conocer bien que es lo que necesitamos, para que y como. El conocer estas variables nos permite conocer donde debemos tocar en caso de ser necesario.

Sentimentalismo de la #Eko10 episodio 2 (o generación del 80-90)

En el panel de comienzo de la #eko10, se hablo de como comenzo todo (el hacking en Argnetina), una charla bastante sentimental, sobre las primeras experiencias de quienes hoy son referentes en la seguridad infromática en argentina. Ahora bien, no soy de la misma generación, yo no me conecte nunca a una BBS, ni leí virus report. Pero soy de una generación (calculo yo, no seré el único) que leía la EKO y HBO magazines en txt (algunas bajadas de zinestore), que aún compilaba kernels, que uso el NetBUS, el Sub7, que jugaba al AgeOfEmpires, que instalo el “Caldera Linux” y leyó el libro de Facundo Arena de Linux Avanzado (con cd slackware 7!) y las primeras 3 ediciones de USER Linux (antes del relanzamiento), y de los que maldijeron los “winmodems”.

Los recuerdos son muchos, y similares a los que se presentaron en ese panel. Para ambos el inframundo era mas inocente, para ambos la cuenta de teléfono fue un problema. Ellos abrieron un camino,  nosotros lo continuamos y abrimos los propios.  El hacking no sólo se trata de lo que suele suponerse, si no de descubrir nuevos caminos, cada uno a su manera y en lo que le gusta.

En fin, además del sentimentalismo y la nostalgia, esta edición de la EKO me dejó un par de conocidos muy interesantes. Si no fuiste te animo a que pienses en hacerlo la próxima edición, no solo se trata de seguridad informática, si no de un lugar de encuentro para SysAdmins, Frikis, Hackers, Developers, y todo tipo de Nerds/Informáticos jugando a abrir candados, capturar paquetes wifi, pegandolé al muñeco de SysARmy, etc etc.

Seguridad en archivos

Proteger tus archivos en GNU/Linux puede es la roca fundamental de la seguridad

Los Firewalls, rootkit hunters, IDS, Itrusion prevention systems, etc etc no sirve si el administrador del sistema no sabe lo que esta haciendo. Una de las tareas mas importantes en la seguridad que el administrador debe conocer, es controlar la seguridad en nuestros sistemas de archivos.

En este post haremos un repaso de las medidas de seguridad disponibles en GNU/Linux, a la hora de cuidar nuestros archivos:

UGO

Heredado de Unix, los sistemas de archivos en linux, tienen una lista de control de acceso. Esta lista, enumera a tres sujetos. El usuario (el dueño del archivo), el grupo (grupo dueño del archivo) y otros (es decir, todos los que no son ni dueños ni pertenecientes al grupo dueño del archivo. Cada uno de estos sujetos puede tener permiso para, leer (r de read), escribir (w de write) y ejecución (x de eXecution).  Todo esto ya lo sabemos y si no, la wikipedia puede ser una ayuda.

Hay algunas peculiaridades que debes conocer de este sistema:

Falsa restricción de lectura en carpeta

Si una carpeta no tiene permiso de lectura (r), no podrás listar su contenido (hacer un ls), pero si conoces de la existencia de un archivo dentro de ella, podrás listarlo y leerlo (si tienes permisos sobre el mismo).
Ejemplo:

# ls -ld  test
drwxr-xr-x 1 user group 0 sep 1 12:00 test
# ls -l test/
-rwxr-xr-x 1 user group 0 sep 1 12:00 file
# chmod u-r test
# ls -l test/
ls: no se puede acceder a test: No existe el fichero o el directorio
# ls -l test/file
-rwxr-xr-x 1 user group 0 sep 1 12:00 file

Para evitar esto, la correcta manera de denegar el acceso a una carpeta, es quitando el permiso de ejecución (x):

# ls -ld  test
drwxr-xr-x 1 user group 0 sep 1 12:00 test
# chmod u-x test
# ls -l test/
-????????? ? ? ? ? ? file

De esta manera, si bien podríamos listar los archivos contenidos en la carpeta, no podríamos acceder a ellos, ni a las carpetas que estén dentro.

Falsa restricción de ejecución de scripts

Si queremos que un script no se ejecutable por ciertas personas, debemos tener mucho cuidado. Solamente quitar el permiso de ejecución no siempre sirve ya que si otro usuario tiene permiso de lectura del script puede copiarlo y ejecutarlo. Otra forma de hacer esto mismo es ejecutandoló como “source”

# ls -l script.sh
-rwxr--r-- 1 user group 0 sep 1 12:00 script.sh
# chmod -x script.sh
# . script.sh 

Con un . o bien con el comando source, podemos ejecutar el script como si estuviéramos tirando los comandos directamente desde la consola.

El comando perdido

Pocos conocen le uso del comando ‘newgrp’.  Este comando nos permite cambiar nuestro grupo por defecto momentáneamente. Veamos un ejemplo:

# id user
uid=10000(user) gid=10000(group) groups=10000(group),11000(oracle)
# newgrp oracle
# touch newfile
# ls -l newfile
-rwxr--r-- 1 user oracle 0 sep 1 12:00 newfile

Como verán, el archivo newfile fué escrito con el grupo oracle. Para terminar este switch momentaneo podemos ejecutar exit, ya que newgrp en realidad ha abierto una nueva shell, donde nuestro grupo por defecto es oracle.

Bits especiales

Aunque conocidos, no siempre son bien comprendidos.  El sistema de control de lista de acceso a los archivos tiene unas exenciones llamadas SUID, SGID y Sticky Bit. Los tres bit especiales son mostrados (cuando estan activados) en lugar de la x de ejecución.

El SUID, es un bit que permita que un binario o script, sea ejecutable con los permisos del dueño (user) de dicho archivo (effective user id). Es decir:

#ls -l script.sh
-rwsr-xr-- 1 user group 0 sep 1 12:00 script.sh

Si alguien del grupo group ejecuta dicho script, lo hará con los permisos del usuario (user)  y no con sus permisos.
Esto requiere especial atención dadas sus implicaciones!
El SGID, es igual que el SUID, pero aplicado al grupo.

Y finalmente el Stiky bit, se utiliza hoy en dia, solo para directorios. La wikipedia reza:

Cuando se le asigna a un directorio, significa que los elementos que hay en ese directorio sólo pueden ser renombrados o borrados por el propietario del elemento, el propietario del directorio o el usuario root, aunque el resto de usuarios tenga permisos de escritura y, por tanto, puedan modificar el contenido de esos elementos.

El sticky bit está a menudo configurado para el directorio /tmp.

Estos bits, son un parche, a las limitaciones del sistema de control de acceso, y se complementan con los atributos extendidos que veremos a continuación.

Extended Attributes

Los atributos extendidos es una característica soportada por la mayoría de los sistemas de archivos (tanto en linux, como en los unix, y en windows). Por supuesto, cada cual tiene su propia implementación. En este caso, veremos la implementación de ext2,3 y 4 dado que son los sistemas de archivos mas comunes en GNU/Linux.

Estos atributos extendidos nos permiten añadir peculiaridades al comportamiento de acceso a los archivos.  Veamos cuales son:

  • a : append only 
  • c : compressed
  • d : no dump
  • e : extent format
  • i : immutable
  • j : data journalling
  • s : secure deletion
  • t : no tail-merging
  • u : undeletable
  • A : no atime updates
  • C : no copy on write
  • D : synchronous directory updates
  • S : synchronous updates
  • T : top of directory hierarchy

He señalado sólo dos que están mas relacionados con la seguridad. Los otros, o bien no tienen relevancia en la seguridad, o bien no están realmente implementados.  Cada atributo tiene su explicación y uso, y para mas info les recomiendo este link.

El atributo de Append Only, sirve, por ejemplo, para archivos de logs, a los que se les agrega continuamente información. Adicionalmente no estamos interesados en que sean borrados. Para esto podemos utilizar este atributo, de la siguiente manera:

# lsattr file
---------------- file
#chattr +a file
#lsattr file
-----a---------- file
#echo "more data" > file
bash: file: Operación no permitida
#echo "more data" >> file
#

Como verán, podemos agregar mas data, pero no sobre escribirla. Así mismo si utilizamos el atributo inmutable, el archivo no puede ser modificado en absoluto.
Estos atributos pueden ser asignados sólo por el root, y quitados con el mismo comando chattr.
Si bien no son un garantía, son una barrera mas que ayudan a securizar cierta data.

ACL

El sistema UGO, tiene sus limitaciones, y ACL es la respuesta.
Por ejemplo, una limitación clásica del sistema UGO, es que no podemos dar distintos permisos a distintos usuarios, indistintamente del grupo al que pertenezcan. Esto, si se puede hacer con las ACL.
Para que nuestro sistema de archivos soporte esta característica, hay que montarlo con el flag “acl”, ya sea desde el comando mount o desde el fstab.

/dev/sdb1 /pendrive ext3 acl 1 2

ó

mount -o acl /dev/sdb1 /pendrive

En todo caso, al montar el sistema de archivos con soporte de acl, podemos configurar permisos avanzados (siempre utilizando la metodología de lista de control de acceso)
Archivos con ACLs
Cuando listamos archivos que tienen ACLs, los visualizaremos con un + al final de los permisos:

#ls -l script.sh
-rwxr-xr--+ 1 user group 0 sep 1 12:00 script.sh

Listar ACLs

Para conocer que ACLs tiene un archivo, utilizmos getfacl:

# getfacl script.sh
# file: script.sh
# owner: user
# group: group
user::rw-
user:john:rwx
group::r--
mask::rwx
other::r--

Como ven, en este caso, el usuario john, tiene permisos de lectura,escritura y ejecución.

Establecer ACLs
Finalmente, para establecer una ACL, utilizamos setfacl

# setfacl -m "u:john:r-x" script.sh

En este caso, quitamos el permiso de ejecución a john.
Para su uso mas extedido, te recomiendo leas la doco de RedHat

Conclusiones

Configurar correctamente nuestros archivos, es fundamental. Un bit de permisos mal configurados puede ser la ruina del servidor, por consiguiente de la red..
Aunque estos temas son muy básicos para los administradores avanzados, aveces se pierde de vista su importancia. Además de los sistemas repasados, existen medidas mas avanzadas, como por ejemplo, selinux, tripwire, encriptación LUKE, etc. Estas van mas allá de los sistemas de archivos, pero estan muy relacionadas. Las veremos mas adelante.

Antes de dormir hoy, no olvides revisar tu file sytems 😛

~have fun!

EFI Shell – Itanium – HP-UX/Linux

Que es y para que sirve? que podemos hacer con la EFI shell?

La EFI es la precursora de la UEFI, hoy en dia bastante difundida en equipos de uso hogareño. Pero este no es por lejos el tema que nos ocupa, si no mas bien la utilidad de la EFI Shell en servidores del tipo Itanium. Encontrarás en este post, el uso básico y algunos tips de utilidad a la hora de instalar o recuperar sistemas operativos.

Introducción

Si te primera pregunta es: Que es EFI?
La respuesta mas clara la tiene Wikipedia cuando dice:

La Interfaz Extensible del Firmware, Extensible Firmware Interface (EFI), es una especificación desarrollada por Intel dirigida a reemplazar la antigua interfaz del estándar IBM PC BIOS, interactúa como puente entre el sistema operativo y el firmware base.

Básicamente cuando HP decidió vender servidores con procesadores Intel, se comenzó a desarrollar un sistema que permita a los servidores tener altas prestaciones (esto fue cerca del 2002), por ejemplo soportar hasta 9,4 Zetta Bytes en lugar de los 10 Teras que podia llegar a soportar la BIOS en el mejor de los casos. Otro excelente ejemplo es la posibilidad de funcionar nativamente con 32 y 64 bits, cuando BIOS fue diseñada originalmente para andar con 16 bits.

AmiBios2
Server con iLO 2 Booteando con BIOS AMIBIOS

Ademas de estas y otras adelantos que conlleva el uso de la EFI, esta posee un Boot manager y una shell desde donde se pueden ejecutar ciertos programas prescindiendo de un OS.

En este post nos centraremos en esos beneficios, los commandos de EFI y el Boot Manager.

EFI Standard Commands

EFI tiene un set de comandos específicos, los cuales podemos observarlos utilizando el comando help -?. También pueden encontrar una lista completa de los comandos de la EFI en este link.

El funcionamiento de esta “shell” es muy al estilo DOS, aunque tiene un par de ayudas para los que venimos del mundo unix, y escribir ‘dir’ en lugar de ‘ls’ nos cuesta muchísimo.
La primer ayuda que tenemos es el comando ‘alias’, el cual nos mostrará los alias de los comandos y crear nuestros propios ‘comandos’.

La mayoria de las descripciones de los comandos en el comando help -? son muy explicativas, en caso de que necesitemos mas información sobre un comando en particular podemos ejecutar ‘help commando’ o bien ‘commando -?’.

Aquí les dejo algunos comandos básicos:

ver

Existen varias versiones de EFI, por lo que te recomiendo ejecutar el comando ver, para saber que versión de EFI estas usando. Una de las diferencias entre versión y versión es la lista de comando. Quizás alguno de los comandos que tratamos aquí no estén disponibles en tu EFI.

Hardware desde la EFI

A la hora de configurar el hardware del servidor, tenemos algunos comando muy útiles.

map

El comando map, nos muestra una lista de dispositivos reconocidos por la EFI.

Shell> map
Device mapping table
fs0 : Acpi(HWP0002,100)/Pci(1|0)/Scsi(Pun0,Lun0)/HD(Part1,Sig8E89981A-0B97-11D7-9C4C-AF87605217DA)
blk1: Acpi(HWP0002,100)/Pci(1|0)/Scsi(Pun0,Lun0)
blk2: Acpi(HWP0002,100)/Pci(1|0)/Scsi(Pun0,Lun0)/HD(Part1,Sig8E89981A-0B97-11D7-9C4C-AF87605217DA)
blk3: Acpi(HWP0002,100)/Pci(1|0)/Scsi(Pun0,Lun0)/HD(Part3,SigC9D7945C-0BA7-11D7-9B31-FBA1AECDAF7E)

Este listado, por supuesto varía de servidor en servidor, dependiendo de que dispositivos (discos, fibras, placas de red, etc etc)
Puedes encontrar aquí una explicación de la nomenclatura usada.

Si quisiéramos refrescar (escanear nuevamente) el listado

map -r

Si quisiéramos listar sólo los filesystems

map -Fs

Si quisiéramos listar sólo los dispositivos de bloque

map -Blk
devices
Este comando, nos hará un listado de todos los dispositivos administrados por la efi (es decir la efi tiene drivers para esos dispositivos). Este comando es muy útil para poder saber que hard tenemos en el servidor.
devtree
Complementario al comando devices, con devtree podemos hacer prácticamente el mismo listado, pero con vista de árbol.

Acceso a un disco/lun

Para acceder a un filesystem, ejecutamos (muy al estilo MS-DOS):

Shell> fs0
fs0:>

Una vez dentro del filesystem podemos hacer uso de los siguientes comandos:
cd, comp, cp, edit, eficompress, efidecompress, hexedit, ls, mkdir, mode, mv, rm

Detallar estos comandos sería un despilfarro de letras, ya que son lo que todos queremos que sean, sin mas ni menos. Sin embargo, estos mismos comandos son útiles para scripts que podemos realizar con el fin de acortar ciertas tareas (tema que quedará pendiente para un futuro post).

Termino dejando un manual de la UEFI en servers proliants

~have fun!

EFI Devices Mapping

Esta es una pequeña explicación de la nomenclatura utilizada por intel en la EFI Shell.

Un ejemplo, es cuando utilizamos el comando map, una de las entradas se vería algo así:

fs0 : Acpi(HWP0002,100)/Pci(1|0)/Scsi(Pun0,Lun0)/HD(Part1,Sig8E89981A-0B97-11D7-9C4C-AF87605217DA)

Explicación:

Acpi(HWP0002,100):

  • Tipo de dispositivo HWP0002 (= Logical Block Address (LBA) device)
  • PCI número de host 100 (“ROPE“ = circuitry handling I/O for PCI; defines I/O card slot)

Pci(1|0):

  • device/slot número 1
  • función numero 0

Scsi(Pun0,Lun0):

  • Pun: Physical Unit (SCSI address)
  • Lun: Logical Unit

HD(PartX,SigY):

  • Partición X
  • Disco con código Y

Hacking desde Debian 7

Uso Debian, ni Ubuntu, ni Backtrak, ni Kali Linux, Debian. Y no es que sea caprichoso, solo es que mi laptop no solo es una herramienta de pentesting, si no tambíen mi herramienta de estudio, mi centro multimedia, me enviroment de programación, y mi herramienta de trabajo diario ademas de mi laboratorio de experimentos. Y es que Debian es “The universal operating system”.

En fin, sea por la razón que sea, en este post haré una lista de programas disponibles en el repositorio de Debian, que nos sirven para utilizar nuestra pc como herramienta de pentesting, preparando nos para la guerra!

El escenario es el siguiente:

Debian 7 Testing en amd64.
Repositorios con main, non-free y contrib (puritanos por favor no se peguen un tiro en la cabeza… o si.. )

Agregamos la arquitectura i386 usando:

dpkg --add-architecture i386

Básico

Una vez que tenemos nuestro sistema al dia, procederemos a la instalación de los paquetes básicos, que no son de pentesting en sí, si no de uso general, pero muy útiles para trabajar.

fluxbox
terminator
guake
tint2
vim
dia
keepassx
keepnote
gedit + gedit plugins

Packet crafting

A la hora de crear paquetes  tenemos varias opciones, dependiendo de la profundidad y el tipo de análisis que necesitemos:

yersinia
python-scapy
netexpect
netwox + netwag
hping3
netexpect
packeth
arping
irpas
macchanger

Sniffing

Para saber exactamente que es lo que pasa por nuestras redes, nada mejor que unos buenos sniffers

wireshark
tshark
dsniff
tcpdump

Scanning / Discovering

Una herramienta típica e infaltable, los scanners:

nmap + zenmap
pnscan
sslscan
sshscan
doscan
netdiscover
dnstracer
dnswalk
smb-nat
xprobe
p0f
cdpr

Brutefoce

Con inteligencia mas la fuerza bruta podemos llegar lejos

hydra + hydra-gtk  (xhydra)
medusa
john
aircrack-ng

Web

Algo de analisis web
w3af
whatweb
wapiti
nikto
aria2
ratproxy
wget
httest
links2
webhttrack

Otros (no menos importante)

corkscrew
tor
privoxy
ipcalc
netmask
gns3

Resumiendo todo en una linea:

apt-get install fluxbox terminator guake tint2 vim dia keepassx keepnote
gedit gedit-plugins yersinia python-scapy netexpect netwox netwag hping3 netexpect
packeth arping irpas macchanger wireshark tshark dsniff tcpdump nmap zenmap pnscan
sslscan sshscan doscan netdiscover dnstracer dnswalk smb-nat xprobe p0f hydra hydra-gtk
medusa john aircrack-ng cdpr w3af whatweb wapiti nikto aria2 ratproxy wget httest
links2 webhttrack corkscrew tor privoxy ipcalc netmask gns3

Conclusiones: Esta no es una lista exhaustiva, pero contiene muchas herramientas que podemos instalar de forma prolija desde los repositorios de debian. Ahora les toca estudiar el uso correcto de cada herramienta!

~ have fun!

Aclaración sobre que es Unix

Al igual que el último post (PCs y Servidores), quiero hacer una excepción en la temática general de mi blog, y escribir un tema sobre el que veo mucha confusión. Aunque principalmente se da en los usuarios nuevos de linux, hay muchos usuarios avanzados de linux y *BSD que también están des informados al respecto, y cuando alguien pregunta sobre UNIX se dicen barbaridades.

Que es UNIX®?

Para contestar, hay que explicar primero que existen dos respuestas válidas, pero muchas veces mal entendidas o interpretadas:

El histórico sistema operativo Unix: Escuetamente podemos decir que en 1969, un par de  geeks de los ‘Bell labs’ de AT&T desarrollaron un sistema operativo básico, al que llamaron UNICS al principio y luego UNIX. AT&T distribuyo este sistema en algunas universidades (que era donde había computadoras en aquellos momentos), posteriormente la universidad de California, con sede en Berkeley, sacaba su versión bajo licencia BSD.
AT&T siguió desarrollando versiones de Unix y comercializandolas. En 1993 Unix pasó a manos de Novell, y en 1995 a SCO. La última versión de este antiquísimo sistema operativo se llama UnixWare 7.1.4… Pero la verdad es que nadie le presta mucha atención.

Unix como estándar: Existe un estándar basado en Unix, se llama Single Unix Specification (SUS). Este estándar es manejado por el OpenGroup, cuyos Patinium partners son HP, IBM, Oracle y Philips. La última versión de la SUS es la “UNIX 03” y los sistemas operativos certificados como “UNIX 03” son:

Apple Inc. Mac OS X 10.5 y 10.6
HP-UX 11i V3 Release B.11.31 y posteriores
IBM AIX 5L V5.3 (y V5.2 con ciertas actualizaciones) y 6 v6.1.2 SP1
Sun (y Fujitsu) Solaris 10, versiones de 32 y 64 bits para SPARC y para Intel x86

Es decir estos sistemas operativos son los famosos Unix like.
Tambien existen otras versiones anteriores a la “UNIX 03” en la cual otros sistemas operativos están certificados (vean los links de abajo).

Para que sirve el estándar? Para que un programa/sistema que utilice los métodos sugeridos por el estándar pueda ser fácilmente portado de un sistema a otro.

Ahora bien, existe algo así como un equivalente abierto, este es POSIX. POSIX es una serie de estándares definido por la IEEE. Actualmente la SUS UNIX 03 tiene como base la POSIX y son casi lo mismo, aunque UNIX03 abarca un poco mas.

Mas especificamente: POSIX:2008 = IEEE Std. 1003.1-2008 = SUSv4 = The Open Group Specification Issue 7.

Vale aclarar:
Un sistema UNIX 03, es POSIX.
Un sistema POSIX no necesariamente es un UNIX 03
Certificar POSIX o UNIX 03 es caro.
UnixWare, el heredero directo del sistema operativo Unix, no esta certificado como Unix03!!!

Vamos a las conclusiones y preguntas mas frecuentes…

Conclusiones

Cuando hablamos propiamente, un sistema Unix, es solo aquel que certifica con OpenGroup, actualmente AIX, HP-UX, Solaris y Mac OS (en sus versiones mas recientes).
Y Linux?
Linux es un sistema que se adhiere casi completamente POSIX, esto depende de la distribución, y aunque alguna distribución pueda ser 100% probablemente no este certificada como POSIX ya que cuesta mucho dinero.
Y *BSD?
Esta en la misma situación que linux.
Yo quiero saber Unix para ser un hacker, como hago?
Linux y *BSD son mas que suficiente para tí. Cuando conozcas bien Linux, o mejor aún *BSD, conocerás bastante sobre Unix.
Quiero saber Unix para programar sistemas portables en Unix, que hago?
En el caso de quien quiere programar, le vale estudiar un poco mas los estándares, pero para comenzar Linux y *BSD le sobran. Luego estudia sobre POSIX.

Links de interés para ahondar mucho mas:
Sitio del estandar UNIX 03: http://www.unix.org/
Listado de partners de Open Group: http://reports.opengroup.org/membership_report_all.pdf
Productos registrados bajo UNIX 03: http://www.opengroup.org/openbrand/register/xy.htm
Especificaciones SUS: http://www.unix.org/what_is_unix/single_unix_specification.html
Mas sobre POSIX: http://es.wikipedia.org/wiki/POSIX

~ have fun!

Primeros pasos con NetBSD – I

Que es NetBSD?

NetBSD logo NetBSD es un Unix con estilo, cualquiera que quiera aprender ‘Unix Basics’ esta invitado a utilizar NetBSD, es simple, es liviano, es portable, es seguro, su codigo es muy elegante, y su flexibilidad nos permitirá utilizarlo como un desktop o como un router/firewall dedicado, o incluso hacerlo andar en un celular… En lo siguiente haremos una introducción somera sobre NetBSD y luego nos iremos adentrando en algunas configuraciones básicas. En caso de necesitar ayuda con la instalación te recomiendo este turorial.

Historia

NetBSD es spin off the 386BSD 0.1, fundado por Chris Demetriou, Theo de Raadt, Adam Glass y Charles M. Hannum, estuvo orientado desde sus origenes a ser portable a muchas plataformas. Al dia de hoy, NetBSD se publica oficialmente para 53 plataformas, por lo que puede correr en una PC, en un SPARC, en una consola de juegos Dreamcast, o en un flamante servidor IBM o HP. De hecho su eslogan es “of course it runs NetBSD” ( han hecho correr NetBSD en una tostadora)

Para que me sirve?

Una respuesta un poco intrépida pero bastante certera, es que NetBSD sirve para todo. Claro, tiene sus limitaciones, en algunos sentidos, pero NetBSD tiene un punto muy fuerte, y es su portabilidad. Esta le permite que pueda ser OS indicado para proyectos donde se necesita un sistema operativo que tenga minimos requerimientos, y brinde grandes prestaciones, por ejemplo para sistemas con software embebido puede llegar a ser una de las pocas alternativas.

En mi experiencia, recomiendo NetBSD para:

– PCs antiguas donde un linux 2.6 o 3.0 les queda grande, NetBSD 6.0 es mas liviano.
– Experimentos que requieran software tipo embebido, seguramente NetBSD tiene un port.
– Estudiantes de Unix: NetBSD conserva mucho de los unix originales (*BSD), en mi opinion es mejor empezar con algo mas unix like que windows like.
Existe una gran cantidad de productos basados en NetBSD, podes verificarla aca.

Configuración básica

La guia de configuración de NetBSD, ya sea en pdf o en html, puede evacuar seguramente el 99% de tus dudas. En este post haremos un primer acercamiento con  algunas de las explicaciones y configuraciones minimas que facilitan el comienzo en NetBSD.

Inicio: El inicio de NetBSD esta controlado por el rc.conf, este inicio no tiene runlevels como en el caso de los sistemas que utilizan system v. Para determinar los servicios que se ejecutaran en tiempo de booteo, debemos editar el rc.conf. Por ejemplo la variable sshd=YES, habilita el servidor ssh. Para mas info, man rc.conf.

Si bien la configuración inicial es casi optima, en caso de que no estemos usando NetBSD como un servidor productivo, podemos hacer algunos pequeños cambios que aceleraran el incio. Esto sirve sobre todo en maquinas muy chicas, ya que de por si NetBSD incia muy rápido. Abrimos el rc.conf con el vi, y agregamos las siguientes lineas:

#Para que no borre el tmp en cada booteo. 
clear_tmp=NO 
#Para que no verifique los limites de quotas
quota=NO 
#Para que no utilice genere volcados de memoria del kernel en caso de un crash.
savecore=NO
#Para que no inicie el postfix. 
postfix=NO
#Para que no mande notificación en caso de encontrar algún archivo mal cerrado por vi.
virecover=NO

Disco: El particionado de BSD es distinto que en Linux. Lo que en Linux llamamos particiones (por ejemplo /dev/hda, /dev/hdb etc), en BSD se llaman ‘slices’ . Al instalar NetBSD habremos definido una slice donde se encontrará el esquema de particionado llamado disklabel. El estandar de etiquetas (labels) dice que:

a       Contiene al root file system
b       Contiene la particion swap
c       No se monta, y es un puntero a toda la slice
d       Usualmente apunta a todo el disco
El resto de las particiones son para disponer a gusto (por ejemplo se pueden destinar para el tmp, el usr etc)
Para listar los discos utilizamos fdisk a secas:

Vipper# fdisk
Disk: /dev/rwd0d
NetBSD disklabel disk geometry:
cylinders: 10402, heads: 16, sectors/track: 63 (1008 sectors/cylinder)
total sectors: 10485760

BIOS disk geometry:
cylinders: 652, heads: 255, sectors/track: 63 (16065 sectors/cylinder)
total sectors: 10485760

Partitions aligned to 2048 sector boundaries, offset 2048

Partition table:
0: NetBSD (sysid 169)
start 2048, size 10483712 (5119 MB, Cyls 0-652/180/40), Active
1: <UNUSED>
2: <UNUSED>
3: <UNUSED>
Bootselector disabled.
First active partition: 0

Para ver las particions BSD usamos disklabel:

Vipper# disklabel /dev/wd0
# /dev/wd0d:
type: unknown
disk: ROOTDISK
label: 
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 10402
total sectors: 10485760
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0		# microseconds
track-to-track seek: 0	# microseconds
drivedata: 0 

16 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:   4362624      2048     4.2BSD   2048 16384     0  # (Cyl.      2*-   4330*)
 b:   1049328   4364672       swap                     # (Cyl.   4330*-   5371*)
 c:  10483712      2048     unused      0     0        # (Cyl.      2*-  10402*)
 d:  10485760         0     unused      0     0        # (Cyl.      0 -  10402*)
 e:   2973600   5414000     4.2BSD   2048 16384     0  # (Cyl.   5371*-   8321*)
 f:   2098160   8387600     4.2BSD   2048 16384     0  # (Cyl.   8321*-  10402*)

Configurar la red: Sin duda lo primero que querras hacer una vez instalado NetBSD, es tener acceso a internet. Si tu red no usa DHCP (edita el rc.conf agregando dhclient=NO), podes seguir estos pasos para configurar la red. En la instalación el hostname queda configurado en el /etc/rc.conf en la variable ‘hostname’ y el dominio en la variable ‘domainname’. Sin embargo es mas prolijo utilizar otros archivos fuera del rc.conf:
Para el hostname:

echo "hostname-elegido" >  /etc/myname

Para el dominio:

echo "dominio-elegido" > /etc/defaultdomain

Para la puerta de enlace por defecto (o gateway):

echo "puerta de enlace por defecto" > /etc/mygate

Para configurar cada interfaz: Hemos de crear un archivo llamado /etc/ifconfig.iface-name por cada interfaz (en mi caso wm0, quedaria como /etc/ifconfig.wm0), en este archivo colocaremos parámetros de ifconfig que serán ejecutados contra la interfaz, un ejemplo sencillo sería:

up
192.168.1.1 netmask 255.255.255.0

Estas lineas haran que se ejecuten los siguientes comandos:

ifconfig wm0 up
ifconfig wm0 192.168.1.1 netmask 255.255.255.0

Software: NetBSD utiliza un sistema de paquetes precompilados. Para poder utilizarlo, hay que setear la variable PKG_PATH, la cual contiene el url del mirror del repositorio. En caso de un NetBSD  6.1 sobre i386 esta configuración sería válida.

 PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/6.1/All

Para no hacer un ‘export PKG_PATH=…’ cada vez que necesitemos instalar un paquete, simplemente copiamos este comando en el .profile para que quede así:

export PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/6.1/All

Al abrir una nueva terminal, podremos verificar con el comando ‘env’ que la variable queda definida. En caso de que haya que pasar por un proxy, hay que setear la variable FTP_PROXY con el proxy correspondiente.
Finalmente para agregar software a nuestro OS, utilizamos pkg_add.
Aca van un par de ejemplos de soft que siempre utilizo

pkg_add -v nmap
pkg_add -v wget
pkg_add -v links
pkg_add -v fping

Con pkg_info podemos listar los paquetes instalados y obtener información de cada paquete:

Vipper# pkg_info
pcre-8.33           Perl Compatible Regular Expressions library
fontconfig-2.10.93nb2 Library for configuring and customizing font access
nmap-6.25nb3        Network/port scanner with OS detection
fluxbox-1.3.2nb5    Window Manager for X based on Blackbox
sessreg-1.0.8       Manage utmp/wtmp entries for xdm
libXft-2.3.1nb3     Library for configuring and customizing font access
xdm-1.1.11nb4       X Display Manager from modular X.org
libidn-1.27         Internationalized Domain Names command line tool
wget-1.14nb3        Retrieve files from the 'net via HTTP and FTP
links-2.7nb1        Lynx-like text WWW browser
fping-2.4b2nb1      Quickly ping many hosts w/o flooding the network
pkgfind-20111022    Find packages by package name in pkgsrc

Vipper# pkg_info fping-2.4b2nb1
Information for fping-2.4b2nb1:

Comment:
Quickly ping many hosts w/o flooding the network

Description:
A tool to quickly ping N number of hosts to determine their reachability
without flooding the network.

     fping is different from ping in that you can specify any number of
	 hosts on the command line, or specify a file containing the lists
	 of hosts to ping. Instead of trying one host until it timeouts or
	 replies, fping will send out a ping packet and move on to the next
	 host in a round-robin fashion. If a host replies, it is noted and
	 removed from the list of hosts to check. If a host does not respond
	 within a certain time limit and/or retry limit it will be considered
	 unreachable.

     Unlike ping, fping is meant to be used in scripts and its
     output is easy to parse.

Homepage:
http://www.fping.com/

Bien, hasta aquí con este post, en el siguiente veremos con configurar este OS como un firewall/router y como configurar el desktop. Espero que les sirva como punta de ovillo. Cualquier duda será bien recibida.

~ have fun!

VxVM volume manager on HP-UX

Pequeño machete para el uso de VxVM en HP-UX

Verificar instalación de VxVM

swlist -l bundle B9116*
swlist -l bundle Base-V?VM*
swlist -l bundle B3929*

Luego de instalar updatear el path:
PATH=$PATH:/usr/lib/vxvm/bin:/etc/vx/bin:/opt/VRTSob/bin

Iniciar daemons vxvm
vxinstall

Para verificar:
ls -l /etc/vx/reconfig.d/state.d/install-db
vxdctl list

Verificar que vxconfigd esta corriendo:
vxdctl mode

Parar vxconfigd:
vxdctl stop

Reiniciar vxconfig:
vxconfigd -m enable

Verificar features
vxdctl license

Escanear discos:
vxdctl enable
vxdisk -o alldgs list

Crear Disk Group
– Buscar vacios:
vxdisk -o alldgs list
– Preparar disco
vxdisksetup -i cxtxdx
vxdisk -s list cxtxdx

– Crear el disk group
vxdg init datadg cds=on datadg01=cxtxdx
– Chquear
vxprint -htg datadg
vxdisk -s list cxtxdx
vxdisk list

Crear volumenes
– Nuevo volumen en datadg
vxassist -g datadg maxsize
vxassist -g datadg make datavol 16m
ll /dev/vx/*/datadg/datavol
newfs /dev/vx/rdsk/datadg/datavol

– Crear swap volume
vxassist -g datadg maxsize layout=contig
vxassist -g datadg make swapvol 16m layout=contig
swapon -f /dev/vx/dsk/datadg/swapvol
vxprint -htg datadg

swapinfo -dtm
– Extender volumen
vxassist -g datadg maxgrow datavol
vxresize -g datadg datavol 32m
vxprint -htg datadg

– Extender swap volume
vxassist -g datadg growto swapvol 64m
Esto requiere reboot

– Reducir volumen
vxresize -g datadg datavol -16m
– Reducir swap
Requiere quitar la swap del fstab y reinciar
vxasist -g datadg -f shrinkby swapvol 16m
Volver a hubicarla en fstab
swapon -f /dev/vx/dsk/datadg/swapvol

– Eliminar logical volume y disk group
vxassist -g datadg remove volume datavol
vxdg -g datadg rmdisk datadg02
vxevac -g datadg datadg02 datadg01
vxdg destroy datadg

– Mirror de un volumen
vxassist -g datadg -b make datavol 500m layout=mirror nmirror=3
vxtask monitor

– Split mirror
vxplex -g datadg dis datavol-02
vxmake -g datadg -U gen vol tempvol plex=datavol-02
vxvol -g datadg start tempvol
fsck -F vxfs /dev/vx/rdsk/datadg/tempvol
mkdir /backupdata
mount -ro /dev/vx/dsk/datadg/tempvo /backupdata
umount /backupdata
vxvol -g datadg stop tempvol
vxplex -g datadg dis datavol-02
vxprint -htg datadg

~ have fun!

Instalación de HP-UX 11i v2

A continuación haremos una instalación de HP-UX 11i v2 desde el DVD (descartando cualquier otro sistema operativo o dato que haya en los discos) de forma MUY básica, con software adicional para DMZs, ya que ese será el environment del servidor. La idea es hacer un simple acercamiento a HP-UX, que sirva como referencia, para luego poder ahondar sobre otros temas, como los OEs, el LVM, el hardware etc en futuros posts.

Nota preliminar: Recuerda que si quieren hacer RAID 1 o RAID 0, antes deben hacerlo mediante la configuración de la controladora de los discos.

Escenario

Vamos a instalar un HP-UX 11i v2 desde DVD sobre un RX2600 (puede llevar uno o dos procesadores Itanium 2 (64 bits) y de 1GB a 24GB de RAM).  Este pequeño servidor es muy común en medianas y grandes empresa y la instalación debería ser igual para la mayoria del hardware HP.

En este caso vamos a seleccionar el Mission Critical OE con LVM y VxFS

Booteo

Nuestro primer objetivo es seleccionar ‘Boot Option Maintenance Menu’

boot option

Tenemos que asegurarnos de seleccionar las siguientes 2 lineas con un enter en cada una:
Acpi(HWP0002,700)/Pci(1|1)/Uart(9600 N81)/VenMsg(Vt100)
Acpi(HWP0002,700)/Pci(2|0)

Esto nos asegura poder visualizar correctamente la consola y no perder ninguna de las opciones cuanto nos conectamos mediante telnet o ssh. En particular la última linea nos asegura no perder la consola una vez que el sistema operativo ha sido instalado.
Luego seleccionaremos ‘Save Settings to NVRAM’ para guardar la selección.
efi save nvram

Luego seleccionamos exit, para volver al menú anterior y nuevamente exit para poder, luego, seleccionar la ‘EFI Shell (built in)’

EFI Shell

Entramos en el EFI shell con el fin de bootear desde el DVD.
Al entrar en la EFI shell se listaran los dispositivos disponibles para el booteo, en mi caso el output es el siguiente:

EFI list

Si el DVD esta ya insertado va a bootear automáticamente, si aún no lo insertaste este es el momento para hacerlo.
Una vez que localizamos el dispositivo del dvd, tipeamos el nombre de la unidad (muy al estilo DOS), para poder ejecutar desde la unidad el comando ‘install’. En mi caso, la unidad del dvd es la siguiente:
blk1 : Acpi(HWP0002,0)/Pci(2|0)/Ata(Primary,Master)/CDROM(Entry0)
Por lo que tipeo ‘blk1:’ para hubicarme en la unidad y luego tipeo install para iniciar la instalación desde el DVD.

dvd install

Si todo ha ido bien, la instalación ha comenzado.

Tipo de instalación

Idioma: El primer parámetro que nos pide la instalación no debería presentarnos demasiada dificultad, es el lenguaje del teclado de la terminal, el cual utilizaremos para el proceso de instalación, no para el OS en si.

Inicio de instalación: A continuación veremos una ‘cálida’ bienvenida, donde tenemos un resumen del hardware disponible, con la opción iniciar la instalación, una consola de rescate y algunas opciones avanzadas.
instalacion

Iniciaremos la instalación propiamente dicha.
Interfaces de instalación: La siguiente pantalla nos permitirá seleccionar que tipo de instalación vamos a ejecutar. ‘Source Location Options‘ nos permite seleccionar desde donde instalaremos el sistema. En este caso queremos hacerlo directamente desde el DVD, por lo que usaremos ‘Media only installation‘, pero si disponemos de algún Depot en la red, la segunda opción (‘Media with Network‘) sería lo que necesitamos, y si fuera que queremos una instalación desde Ignite-UX la tercera sería nuestra opción.
En ‘User Interface Options’, seleccionaremos cuan avanzada será nuestra instalación:
Guided Installation: para una instalación típica guiada
Advanced Installation: útil para modificar los sistemas de archivos por defecto, servicios de red, y parámetros del sistema.
No user interface: instalación por defecto que no requiere de nuestra intereacción.

Utilicemos la opción por defecto (Media only + guided installation). La siguiente pantalla también es facil de decidir, por que en general solo tendremos una opción ‘HP-UX B.11.23 Default’ . Luego veremos que la instalación nos permite elegir el Operatin Enviroment.

Personalización

OE

Como saben, HP-UX dispone de distintos OEs para distintos tipos de servidores que necesitemos desarrollar. Con un enter, podremos visualizar los distintos OEs (aquí una explicación de los OEs) disponibles en el DVD utilizado:
OE selection

Utilizaremos MCOE:

HP-UX 11i v2 Mission Critical OE (MCOE) Designed for the large, powerful back-end application servers and database servers that access customer files and handle transaction processing, this OE contains the Enterprise OE bundles, plus applications such as MC/ServiceGuard and Workload Manager to enable a mission-critical server. This OE is bundled as HP-UX 11i MCOE.

Discos y File Systems
Una vez seleccionado el OE, la instalación nos pedirá seleccionar el disco, seguido configuraremos la cantidad de swap. El sistema pre calcula una cierta cantidad pero podemos modificarla a gusto.
El próximo paso será seleccionar el sistema de archivos de los discos:
FS

Las opciones posibles son:
Whole disk with VxFS: Significa utilizar todo el disco con VxFS (es decir Veritas File System, u OnlineJFS), sin ningún gestor de volúmenes. Esto implica que las distintas particiones serán completamente estáticas (contrario a las otras dos opciones restantes)
Veritas Volume Manager with VxFS: Esta opción nos permite utilizar Veritas volume manager en lugar del clásico y conocido LVM, no es la opción que utilizaremos, pero les dejo una guia de referencia por si les interesa.
LVM with VxFS: En este caso, ademas de VxFS utilizaremos LVM, el cual nos permite administrar las partciones de forma dinámica, es decir aumentar o disminuir sus tamaño según lo necesitemos. Esta es la opción por defecto y la estándar en HP-UX y es la que seleccionaremos

En la siguiente pantalla, podremos configurar la cantidad de discos que formaran el volume group principal del OS.  Esto dependerá de los discos que tengamos y del espacio que necesitemos. Recuerden que al usar LVM, si quieren hacer la adición posterior mente a la instalación también es posible.

Idiomas

langs

Posterior a la configuración de los discos, podemos seleccionar que idiomas queremos presentes en el OS y cual será el utilizado por defecto. En el screen de ejemplo, seleccione con la barra espaciadora el español, pero deje como idioma por defecto del sistema el ingles.

Software adicional – Seguridad

Esta pantalla sirve para agregar software que no viene instalado por defecto.
Como dijimos al principio, esta instalación básica la destinaremos a un servidor en una DMZ, por lo que en ‘SecurityChoices’, seleccionaremos con la barra espaciadora Sec30DMZ. Esta configuración bloqueará todo el tráfico, excepto el  SSH.

dmz

Confirmaciones finales

Las siguientes pantallas, nos permitirán confirmar que borraremos los discos del sistema, y nos mostrará un sumario del software instalado, el tamaño de las particiones y el hardware disponible. Una vez confirmado todo, comenzará la instalación

Post Instalación

Finalmente, luego de una larga espera tenemos el HP-UX instalado
bootinh

Al terminar el booteo, nuevamente nos pedirá seleccionar un idioma de una lista, esta vez, es para configurar algunos parámetros más. Nuevamente seleccionaremos 26.
Luego, el sistema nos dará una hermosa bienvenida, y nos preguntará si queremos correr un ‘wizard’ para configurar ciertos parametros de red. Este mismo asistente se puede correr luego con ‘set_parms’.

Les recomiendo elegir que si.
Al terminar de configurar los parámetros (hostname, time zone, ips, root password) el sistema reiniciará, y quedará a disposición nuestra una vez que pasemos el login.

Hasta aquí este simple guia de instalación. A medida que agregue guias y tips las ire linkeando para que la información sea mayor.

~ have fun!