Páginas

sábado, 2 de enero de 2016

Punto de Acceso OpenBSD

Punto de Aceso (tiene las funciones de un puente, conecta dos redes con niveles de enlace parecidos o distintos) Soekris net5501 OpenBSD 5.7.

Contribuir con el projecto OpenBSD


OpenBSD Soekris router instalación y configuración

OpenBSD y su fabuloso firewall "PF" para hacer un gran punto de acceso inalámbrico, (estación base) para otras tarjetas wireless.

OpenBSD es confiable, segura y para alguien que esté familiarizado con UNIX OS muy intuitivo de usar. Todo es sencillo, bien diseñado y documentado. El principal esfuerzo del proyecto es mantener el source base libre de vulnerabilidades mediante el mantenimiento de un código fuente de alta calidad.

La tarjeta de red mini-PCI inalámbrica está basada en el chipset Atheros (ath), posee dos conectores UFL para la conexión de dos antenas externa. Soporta estándar a/b. Los chipsets basados en Realtek (rl0) funcionan mejor en OpenBSD (p.e, Ralink RT2561 mini-PCI):
OpenBSD chipsets Realtek
Soporte OpenBSD chipsets Wireless

Identificar la tarjeta inalámbrica

# /usr/sbin/pcidump |grep -i atheros
 0:17:0: Atheros AR5413

# dmesg | grep -i ath0            
mpath0 at root
scsibus0 at mpath0: 256 targets
ath0 at pci0 dev 17 function 0 "Atheros AR5413" rev 0x01: irq 15
ath0: AR5413 10.4 phy 6.1 rf 6.3 eeprom 5.3, FCC2A*, address 00:80:48:69:7f:cc



Para poder utilizar algunas de estas tarjetas, tendrá que adquirir los archivos de firmware que los fabricantes se niegan a permitir la libre distribución, por lo que no puede incluirse en OpenBSD. Para facilitarnos la vida, OpenBSD nos proporciona el comando fw_update para instalar o actualizar paquetes de firmware non-free

Calcular los rangos de IP, dos segmentos de red (ethernet, wireless)


Archivo configuración /etc/hostname.ath0 encriptación WPA
inet 192.168.3.129 255.255.255.128 NONE media autoselect mediaopt hostap \
mode 11b nwid soekris wpakey speak%#frie45 chan 4

Permisos de /etc/hostname.ath0
# chmod 0600 /etc/hostname.ath0

Cambios en el archivo /etc/hostname.vether0
inet 192.168.3.1 255.255.255.128 NONE
up

Archivo /etc/dhcpd.interfaces

# cat dhcpd.interfaces
vether0 ath0

Los clientes recibirán una ip del servidor DHCP

shared-network LOCAL-NET {
option domain-name "unix.bcn";
option domain-name-servers 208.67.222.222, 208.67.220.220;

# ethernet network
subnet 192.168.3.0 netmask 255.255.255.128 {
        option routers 192.168.3.1;
        range 192.168.3.10 192.168.3.100;
        default-lease-time 3600;
        max-lease-time 1200;
    }

# wireless network
subnet 192.168.3.128 netmask 255.255.255.128 {
        option routers 192.168.3.129;
        range 192.168.3.130 192.168.3.250;   
     }
}

dhcpd.leases* archivo(s) donde se almacena un log con todas las peticiones:

CREAR EL ARCHIVO /va/db/dhcpd.leases.ral0, interfaz inalámbrica

# touch /var/db/dhcpd.leases.ath0
# /usr/sbin/dhcpd -l /var/db/dhcpd.leases.ath0 ath0
Añadir al archivo /etc/rc.conf.local dhcpd_flags ath0:

dhcpd_flags="vether0 ath0"


Configurar unbound

# wget ftp://FTP.INTERNIC.NET/domain/named.cache -O \
/var/unbound/etc/root.hints

Archivo de configuración

## Simple recursive caching DNS
## /var/unbound/etc/unbound.conf 
#
server:
    # log verbosity
    verbosity: 1

    interface: 192.168.3.1
    interface: 192.168.3.129
    interface: 127.0.0.1
    do-ip6: no
        access-control: 127.0.0.0/8 allow
        access-control: 192.168.3.0/25 allow
        access-control: 192.168.3.128/25 allow

# file.  get one from ftp://FTP.INTERNIC.NET/domain/named.cache
    root-hints: "/var/unbound/etc/root.hints"

# nombre de usuario por defecto
    username: "_unbound"

# enable to not answer id.server and hostname.bind queries.
    hide-identity: yes

# enable to not answer version.server and version.bind queries.
    hide-version: yes

    do-not-query-localhost: no

    do-ip4: yes
    directory: "/var/unbound/etc"

forward-zone:
      name: "."
      forward-addr: 127.0.0.1@40 



Archivos creados durante la instalación del Router  que no cambiarán
# cat /etc/hostname.vr0
inet 192.168.1.200 255.255.255.0
# cat /etc/hostname.vr1
up
# cat /etc/hostname.vr2
up
# cat /etc/hostname.vr3
up                                                    


Reiniciar todas las interfaces de red:
# sh /etc/netstart


dnscrypt-proxy

Instalar desde ports
# pkg_add -v dnscrypt-proxy

# echo 'pkg_scripts="dnscrypt_proxy"' >> /etc/rc.conf.local
# echo 'dnscrypt_proxy_flags="-l /dev/null -R dnscrypt.eu-nl -a \
127.0.0.1:40"' >> /etc/rc.conf.local
# echo 'nameserver 127.0.0.1' > /etc/resolv.conf

Crear el archivo log y hacer al usuario _dnscrypt-proxy propietario del archivo

# touch /var/log/dnscrypt-proxy.log
# chown _dnscrypt-proxy:_dnscrypt-proxy /var/log/dnscrypt-proxy.log

Lo siguiente es iniciar dnscrypt-proxy como usuario _dnscrypt-proxy. La opción -l /var/log/dnscrypt-proxy.log permite monitorear errores. La opción por defecto es -l /dev/null.

# /usr/local/sbin/dnscrypt-proxy -d --user=_dnscrypt-proxy -l \
/var/log/dnscrypt-proxy.log -R dnscrypt.eu-nl -a 127.0.0.1:40

Visualizar el registro

# tail -n 20 /var/log/dnscrypt-proxy.log  
[NOTICE] Starting dnscrypt-proxy 1.4.3
[INFO] Initializing libsodium for optimal performance
[INFO] Generating a new key pair
[INFO] Done
[INFO] Server certificate #808464433 received
[INFO] This certificate looks valid
[INFO] Chosen certificate #808464433 is valid from [2015-09-11] to [2016-09-10]
[INFO] Server key fingerprint is E7AC:5C21:A4E6:6A90:B254:DD73:5229:3BA1:5BE9:8EB3:4E8F:E538:52DE:A2FB:DDB6:1357
[NOTICE] Proxying from 127.0.0.1:40 to 176.56.237.171:443                                                              
[INFO] Generating a new key pair
[INFO] Done
[NOTICE] Starting dnscrypt-proxy 1.4.3
[INFO] Initializing libsodium for optimal performance
[INFO] Generating a new key pair
[INFO] Done

 Cambios en el archivo de conguración /etc/pf.conf

# cat /etc/pf.conf                                                             
#       $OpenBSD: pf.conf,v 1.54 2014/08/23 05:49:42 deraadt Exp $
#
# See pf.conf(5) and /etc/examples/pf.conf
int_if="{ vether0 vr1 vr2 vr3 ath0 }"
ext_if="vr0"
int_net="192.168.3.0/24"
table <bruteforce> persist file "/var/db/bruteforce"
table <scums> persist file "/var/db/scums"
broken="224.0.0.22 127.0.0.0/8 172.16.0.0/12 \
        10.0.0.0/8 169.254.0.0/16 192.0.2.0/24 \
        192.0.2.0/24 198.51.100.0/24 203.0.113.0/24 \
        169.254.0.0/16 0.0.0.0/8 240.0.0.0/4 255.255.255.255/32"
set block-policy drop
set loginterface egress
set skip on lo0
# scrub proporciona una medida de proteccion contra ciertos tipos
# de los ataques basados en la manipulacion incorrecta de fragmentos
# de paquetes .
match in all scrub (no-df max-mss 1440)

block return    # block stateless traffic
pass            # establish keep-state

# By default, do not permit remote connections to X11
block return in on ! lo0 proto tcp to port 6000:6010

# Pass all traffic on internal interfaces
# vether0 is necessary here, but bridge0 is not
# pass quick on { vether0 vr1 vr2 vr3 }
pass quick on $int_if

# permitir ICMP entrante sobre todas las interfaces
pass in inet proto icmp all icmp-type echoreq

# port forwarding
match out on egress inet from !(egress:network) to any nat-to (egress:0) 

# Es recomendable desactivar el filtrado en las interfaces de
# loopback, pero esto se convierte en necesidad cuando se utilizan
# reglas contra  falsificaciones: antispoof for vr0 inet
antispoof quick for ($ext_if) inet

# bloquear todo el trafico IPv6 evaluar y soltar, sin perder el tiempo
block return out quick inet6 all
block in quick inet6 all

# fuerza redireccion de toda la LAN al servidor ntpd que corre en soekris
pass in quick on $int_if proto udp from any to ! 192.168.3.1 port 123 \
rdr-to 192.168.3.1

# proteger el puerto 22 (SSH ) a partir de intentos no autorizados 
# para escribir logins fuerza bruta
block quick log from <bruteforce>
pass in quick log on vr0 inet proto tcp to (egress) port ssh flags S/SA \
keep state (max-src-conn 3, max-src-conn-rate 3/50, overload \
<bruteforce> flush global)

# bloquear spam ip's
block quick log from <scums>

# Asegurese de que usted no esta realmente utilizando estos rangos de 
# direcciones o puede romper la conectividad.
block in quick on egress from { $broken no-route urpf-failed } to any

# Permitir conexiones SSH desde el exterior y rdr a maquina interna
pass in on egress inet proto tcp to (egress) port ssh flags S/SA \
synproxy state rdr-to 192.168.3.130



Conectar un cliente al AP

Tablas de enrutamiento ipv4

# netstart -rn





OpenBSD es genial!.

sábado, 26 de diciembre de 2015

scums bruteforce OpenBSD pf


SCUMS soekris pf openbsd

IPs para las listas de bloqueo del firewall. Estas provienen de :

Redes de spam identificados por Spamhaus ( www.spamhaus.org )
Top atacantes listados por DShield ( www.dshield.org )
Abuse.ch
Más información disponible en www.emergingthreats.net

Descargar una lista.

# wget http://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt
# mv emerging-Block-IPs.txt scums
# mv scums /var/db/

Añadir entradas a /etc/pf.conf
# vim /etc/pf.conf




Recargar pf
# pfctl -f /etc/pf.conf

Comprobando si se han añadido las direcciones IP:
# pfctl -t scums -T show | wc -l
    1315

BRUTEFORCE

Este tutorial ilustra la protección de puerto 22 (SSH) a partir de los intentos no autorizados para escribir logins utilizando fuerza bruta.

Crear un archivo en el que almacenar las direcciones IP abusadoras.

# touch /var/db/bruteforce

Vamos a añadir entradas a /etc/pf.conf. max- src-conn 3 significa hasta 3 conexiones desde una sola dirección IP, -conn-tasa max-src 3/50 significa hasta 3 conexiones por dirección IP dentro de 50 segundos. El cuarto intento dentro de los 50 segundos acabará añadiendo y bloqueando la IP a la db bruteforce.

# vim /etc/pf.conf


Recargar pf

# pfctl -f /etc/pf.conf

Agregar una entrada en el crontab para añadir la IP en la tabla. Se añaden al archivo /var/db/bruteforce . ¿Cómo va a agregar la nuevoa IP Abuse?, todos los días a las 1:30 cron lo sumará a /var/db/bruteforce . ¿Por qué debería añadir IP?, para evitar perder la IP al recargar pf o reiniciar el sistema.

# crontab -e

30  7  *  *  *  /sbin/pfctl -t bruteforce -T show | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" > /var/db/bruteforce

Comprobar que todo marcha como debiera.

# pfctl -t bruteforce -T show
   60.173.26.206
   113.73.61.113
   222.186.15.200
   222.186.31.237
   222.186.52.158

Redireccionar conexiones SSH: archivo /etc/pf.conf

Cada vez que una conexión entrante desde Internet hacia el puerto TCP 22 en la interfaz de salida, redireccionar a la IP 192.168.3.130 del cliente LAN.

pass in on egress inet proto tcp to (egress) port ssh rdr-to 192.168.3.130

ARCHIVO /etc/pf.conf

Bibliografía:
http://www.tw.openbsd.org/faq/es/faq6.html
http://www.bsdweb.org/bruteforce.html

OpenBSD es genial!.

jueves, 10 de diciembre de 2015

OpenBSD Soekris router

Originally written by TJ for bsdnow.tv 

Los routers domésticos para uso masivo son particularmente deficiente, son de propiedad, ofrecen muy poca flexibilidad y tienen problemas de seguridad.

Vamos a construir nuestra propia puerta de entrada basado en OpenBSD (5.7 i386), PF y Soekris net5501 para recuperar el control de la red.


Porqué Soekris?: Es compacto, bajo consumo de energía, comunicación avanzada, no utiliza partes móviles, larga vida y compatible con todos los sistemas basados en BSD (OpenBSD, FreeBSD, NetBSD, Pfsense).


Hardware:
- Soekris net5501-60 (net5501-60: 433 Mhz CPU, 256 Mbyte DDR-SDRAM, 4 Ethernet puertos)
- Cargador alimentación
- Disco duro SSD Intel 40GB serie 320 Sata II
- Tarjeta red PCI adicional (4 Ethernet puertos)
- Cables de red Cat6
- USB a serial convertidor
- null modem cable


Medios de instalación:

1. Una de los medios de instalación de OpenBSD en una Soekris utiliza un cable serie (hembra hembra) más un adaptador USB serial converter (el puerto serie ha desaparecido de los portátiles), un servidor FreeBSD con dhcp, tftp y arrancar a través de la tarjeta Ethernet (PXE).

2. La flexibilidad de OpenBSD es tal que puede instalar el sistema baśico (i386) en un portátil (aunque el portátil es x64 bits), reiniciar, autenticarse como root, cambiar el nombre de la tarjeta de red (en mi caso, msk0 por /etc/hostname.vr0), conectar el disco ssd a la soekris (apagada). Luego conectar el cable serie teclear en un terminal (en este caso el sistema operativo del cliente es FreeBSD 10.1 y teclear lo siguiente :

# cu -l /dev/ttyU0 -s 19200
conected

conectar la soekris y en ls terminal verá iniciar el sistema de la soekris. Antes de terminar la cuenta atrás de 5 segundos teclear Ctrl + p luego teclear:

> boot
> stty com0 19200
> set tty com0
> intro

Verá el proceso de arranque, veremos la IP asignada a la tarjeta de red vr0 (externa), por el router ADSL (192.168.1.139). Abrir otra terminal y entrar vía ssh desde una estación de trabajo. Nos ponemos en la misma red, conectando un cable directamente al router. Esto porque?,  la interfaz LAN (192.168.3.1) aún no ha sido creada.

Las tarjetas de red se muestran como vr0, vr1, vr2, vr3, sis0, sis1, sis2, sis3, La primera (vr0) será la interfaz externa y las tres siguientes como interfaces internas de la LAN. El resto de interfaces (sis0, sis1, sis2, sis3) se agrega al conectar más equipos. La interfaz ath0 es la inalámbrica.

Proveedor y producto integrado en la imagen de la BIOS

# sysctl hw.vendor && sysctl hw.product
hw.vendor=Soekris Engineering
hw.product=net5501

RED:

La reducción de las tarjetas de red internas con la interfaz Ethernet virtual permite a las máquinas cliente conectar directamente a la puerta de entrada, sin la necesidad de un interruptor (switch).

# echo dhcp > /etc/hostname.vr0                                               
# echo up > /etc/hostname.vr1                                                 
# echo up > /etc/hostname.vr2                                                 
# echo up > /etc/hostname.vr3                                                 
# echo 'inet 192.168.3.1 255.255.255.0 NONE' > /etc/hostname.vether0 
# echo 'up'>>/etc/hostname.vether0

Usando la opción blocknonip se puede evitar que cuele tráfico no IP. Los puentes de red funcionan para todo tipo de tráfico no solo IP. Requiere que los NIC esten en modo PROMISCUO (a la escucha para todo el tráfico de red, no solo para la interfaz redireccionada).

# cat /etc/hostname.bridge0

add vether0
add vr1
add vr2
add vr3
blocknonip vether0
blocknonip vr1
blocknonip vr2
blocknonip vr3
up

Reiniciar interfaces de red:
# sh /etc/netstart vether0 vr1 vr2 vr3 bridge0

# cat /etc/sysctl.conf
net.inet.ip.forwarding=1
net.inet.ip.redirect=0
kern.bufcachepercent=50
net.inet.ip.ifq.maxlen=1024
net.inet.tcp.mssdflt=1440


DHCP

Los clientes de LAN necesitan una ip, vamos a configurar un servidor dhcp e iniciarlo al arranque:

# echo 'dhcpd_flags="vether0"' >> /etc/rc.conf.local

# cat /etc/dhcpd.conf
subnet 192.168.3.0 netmask 255.255.255.0 {
        option domain-name "unix.bcn";
        option domain-name-servers 1.1.1.1, 1.0.0.1;
        option routers 192.168.3.1;
        range 192.168.3.2 192.168.3.100;
        default-lease-time 604800;
}


DNS

Un servidor de almacenamiento en caché de DNS local es bastante fácil utilizando unbound, que es parte del sistema base, junto con DNSCrypt para mantener nuestras búsquedas en privado.

# echo 'unbound_flags=""' >> /etc/rc.conf.local
# ee /var/unbound/etc/unbound.conf

# wget ftp://FTP.INTERNIC.NET/domain/named.cache -O \

/var/unbound/etc/root.hints


## Simple recursive caching DNS
## /var/unbound/etc/unbound.conf
#
server:
    # log verbosity
    verbosity: 1

    interface: 192.168.3.1
    interface: 127.0.0.1
    do-ip6: no
        access-control: 127.0.0.0/8 allow
        access-control: 192.168.3.0/24 allow


# file.  get one from ftp://FTP.INTERNIC.NET/domain/named.cache
    root-hints: "/var/unbound/etc/root.hints"

# nombre de usuario por defecto
    username: "_unbound"

# enable to not answer id.server and hostname.bind queries.
    hide-identity: yes

# enable to not answer version.server and version.bind queries.
    hide-version: yes

    do-not-query-localhost: no

    do-ip4: yes
    directory: "/var/unbound/etc"

forward-zone:
      name: "."
      forward-addr: 127.0.0.1@40


Habilitar e iniciar el servicio utilizando rcctl como root

 
# rcctl enable unbound
# rcctl start unbound
unbound(ok)
unbound(ok)




dnscryp-proxy

Vamos a configurar dnscryt-proxy, se instala desde ports o paquetes:

# export PKG_PATH="http://ftp.eu.openbsd.org/pub/OpenBSD/5.7/packages/`machine -a`/"

# echo 'pkg_scripts="dnscrypt_proxy"' >> /etc/rc.conf.local
# echo 'dnscrypt_proxy_flags="-l /dev/null -R dnscrypt.eu-nl -a \
127.0.0.1:40"' >> /etc/rc.conf.local
# echo 'nameserver 127.0.0.1' > /etc/resolv.conf


Crear el archivo log y hacer al usuario _dnscrypt-proxy propietario del archivo

# touch /var/log/dnscrypt-proxy.log
# chown _dnscrypt-proxy:_dnscrypt-proxy /var/log/dnscrypt-proxy.log

Lo siguiente es iniciar dnscrypt-proxy como usuario _dnscrypt-proxy. La opción -l /var/log/dnscrypt-proxy.log permite monitorear errores. La opción por defecto es -l /dev/null.

# /usr/local/sbin/dnscrypt-proxy -d --user=_dnscrypt-proxy -l \
/var/log/dnscrypt-proxy.log -R dnscrypt.eu-nl -a 127.0.0.1:40

Visualizar el registro



# tail -n 20 /var/log/dnscrypt-proxy.log  
[NOTICE] Starting dnscrypt-proxy 1.4.3
[INFO] Initializing libsodium for optimal performance
[INFO] Generating a new key pair
[INFO] Done
[INFO] Server certificate #808464433 received
[INFO] This certificate looks valid
[INFO] Chosen certificate #808464433 is valid from [2015-09-11] to [2016-09-10]
[INFO] Server key fingerprint is E7AC:5C21:A4E6:6A90:B254:DD73:5229:3BA1:5BE9:8EB3:4E8F:E538:52DE:A2FB:DDB6:1357
[NOTICE] Proxying from 127.0.0.1:40 to 176.56.237.171:443                                                              
[INFO] Generating a new key pair
[INFO] Done
[NOTICE] Starting dnscrypt-proxy 1.4.3
[INFO] Initializing libsodium for optimal performance
[INFO] Generating a new key pair
[INFO] Done

Puede editar /etc/dhclient.conf por lo que no sobrescribe el servidor de nombres local.
# echo 'ignore domain-name-servers;' >> /etc/dhclient.conf

o evitar cambios en el fichero /etc/resolv.conf
# chflags schg /etc/resolv.conf

# /etc/rc.d/dhcpd start

Archivo /etc/resolv.conf cliente freebsd

$ cat /etc/resolv.conf
# /etc/resolv.conf
search unix.bcn
nameserver 192.168.3.1

Impedir cambios en el archivo /etc/resolv.conf
# chflags schg /etc/resolv.conf

NTPD

ntpd OpenBSD archivo de configuración:
# cp /etc/examples/ntpd.conf /etc



# echo 'ntpd_flags="-s"'>>/etc/rc.conf.local

# ntpctl -sa

Redirigir a la fuerza las peticiones de todos los clientes LAN al servidor ntpd que se está ejecutando en la máquina soekris con una línea como esta en /etc/pf.conf:

pass in quick on $int_if proto udp from any to ! 192.168.3.1 \ port 123 rdr-to 192.168.3.1

Sincronizar la hora de un cliente de la red:

# ntpdate -u 192.168.3.1
9 Dec 07:51:41 ntpdate[1548]: step time server 192.168.3.1 offset -3557.387959 sec

PF /etc/pf.conf

# cat /etc/pf.conf                                                             
#       $OpenBSD: pf.conf,v 1.54 2014/08/23 05:49:42 deraadt Exp $
#
# See pf.conf(5) and /etc/examples/pf.conf
int_if="{ vether0 vr1 vr2 vr3 }"
ext_if="vr0"
int_net="192.168.3.0/24"
broken="224.0.0.22 127.0.0.0/8 192.168.0.0/16 172.16.0.0/12, \
        10.0.0.0/8 169.254.0.0/16 192.0.2.0/24, \
        198.51.100.0/24, 203.0.113.0/24, \
        169.254.0.0/16 0.0.0.0/8 240.0.0.0/4 255.255.255.255/32"
set block-policy drop
set loginterface egress
set skip on lo0
# scrub proporciona una medida de protección contra ciertos tipos
# de ataques basados en la manipulación incorrecta de fragmentos
# de paquetes .
match in all scrub (no-df max-mss 1440)

block return    # block stateless traffic
pass            # establish keep-state

# Por defecto, no permita conexiones remotas a X11
block return in on ! lo0 proto tcp to port 6000:6010

# Dejar pasar todo el tráfico en las interfaces internas
# vether0 es necesario aquí, pero no bridge0
# pass quick on { vether0 vr1 vr2 vr3 }
pass quick on $int_if

# permitir ICMP entrante sobre todas las interfaces
pass in inet proto icmp all icmp-type echoreq

# Traduccion de direcciones de red
match out on egress inet from !(egress:network) to any nat-to (egress:0) 

# Es recomendable desactivar el filtrado en las interfaces de
# loopback, pero esto se convierte en necesidad cuando se utilizan
# reglas contra  falsificaciones: antispoof for vr0 inet
antispoof quick for ($ext_if) inet

# bloquear todo el trafico IPv6 evaluar y soltar, sin perder el tiempo
block return out quick inet6 all
block in quick inet6 all

# fuerza redireccion de toda la LAN al servidor ntpd que corre en soekris
pass in quick on $int_if proto udp from any to ! 192.168.3.1 port 123 \
rdr-to 192.168.3.1

# Asegurese de que usted no esta realmente utilizando estos rangos de 
# direcciones o puede romper la conectividad.
block in quick on egress from { $broken no-route urpf-failed } to any

# Estas reglas se evaluan de una forma algo diferente. Si un paquete
# concuerda con la linea block, debido a la naturaleza de la opcion
# quick, se bloquea el paso a dicho paquete y se ignora el resto
# del grupo de reglas.
block in quick on $ext_if proto tcp to port ssh
pass in all

# permitir conexiones ssh desde la red interna
# pass in quick on $int_if proto tcp to port ssh



Traceroute

# traceroute www.google.es



Ajustes disco duro SSD:
Para minimizar el número de escrituras en el disco SSD vamos a el flag noatime al punto de montaje y habilitar soft updates:


SONIDO

El servidor de sonido no tiene utilidad en un router, vamos a desactivarlo:

# echo 'sndiod_flags=NO'>>/etc/rc.conf.local

CREAR ARCHIVO /etc/boot.conf antes del primer reinicio:

# echo 'stty com0 19200'>/etc/boot.conf
# echo 'set tty com0'>>/etc/boot.conf
# chmod 644 /etc/boot.conf
# reboot

APMD (net5501 no lo soporta)

También es posible habilitar apmd para ahorrar energía si el hardware lo soporta. La CPU hacia abajo en momentos de inactividad hacia arriba cuando la carga alcanza un cierto punto.

# echo 'apmd_flags="-A"' >> /etc/rc.conf.local
# /etc/rc.d/apmd start

USB SERIE NULL MODEM

Reinicio alternativo - sin archivo /etc/boot.conf

Por último vamos a detener el sistema, conectar el cable USB serial converter + null modem a una estación de trabajo (portátil FreeBSD 10.2) reiniciar y visualizar la secuencia de arranque. Conectar el cable USB serial convert y teclear en la primera terminal (1):

cu -l /dev/ttyU0 -s 19200
Conected

En una segunda terminal (2):
# ssh 192.168.3.1
# halt -p

En la terminal 1 verá - "Sistema halt teclee cualquier tecla para reicinicar". 
Siga el proceso:

- Ctrl+P
> boot
> stty com0 19200
> set tty com0
> Intro

# dmesg
...
ugen4.3: at usbus4
uftdi0: on usbus4
...

Abrir otra terminal entrar en el dispositivo via ssh y apagar. En la primera terminal saldrá un mensaje que dice el sistema fué apagado presione cualquier tecla para reiniciar.


PRUEBA MD5
A partir de la versión 5.2 de OpenBSD añade soporte a la escala de frecuencia SpeedStep.

El índice de referencia a tener en cuenta utiliza el comando md5 (1), y time trial test:

# md5 -ttt

Se puede apreciar que estoy recibiendo aproximadamente 34 Mbytes/segundo. La velocidad contratada con el proveedor ISP es de 30 MB/s.



Archivo para cambiar nivel de seguridad (securelevel)


Instalar vim no_x11 OpenBSD:

Archivo de inicialización personal ~/.vimrc:


$ cat ~/.vimrc                                                                  
set nocompatible
set et
set sw=4
set smarttab
set number

filetype plugin on
syntax on

set background=dark
colorscheme desert


Bibliografía:

http://www.tw.openbsd.org/faq/es/faq6.html
http://bodgitandscarper.co.uk/
http://www.openbsd.org/faq/

OpenBSD es genial!.

PXE Servidor FreeBSD

Instalar OpenBSD Soekris net 5501 FreeBSD.

Disco duro Intel SSD Serie 320 Sata II - 40 GB

Creación de un servidor de arranque de Red FreeBSD PXE

Necesita:
Habilitar SSH
Servidor DHCP
Servidor TFTP
Null modem cable
USB serial converter cable
Es un servidor FreeBSD con dos NIC una para el acceso desde la red externa
(em1 - WAN = 192.168.1.0/24), y otra para actuar como servidor de la red de arranque
(em0 - LAN = 192.168.3.0/24). IPFilter Firewall.
Salida VGA

Conectar al servidor para su configuración :
# ssh 192.168.3.1

Servidor dhcp

# pkg install isc-dhcp42-server
# echo 'dhcpd_enable="YES"'>>/etc/rc.conf
# echo 'dhcpd_ifaces="em0"'>>/etc/rc.conf

$ sed -e '/^[ ]*#/d' -e '/^$/d' /usr/local/etc/dhcpd.conf


Archivo /etc/rc.conf

Servidor tftpd

# sed -e '/^[ ]*#/d' -e '/^$/d' /etc/inetd.conf
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot


Archivo /etc/resolv.conf servidor

search unix.bcn
nameserver 127.0.0.1
nameserver 208.67.222.222
nameserver 208.67.220.220
options edns0

Archivo /etc/resolv.conf cliente
search unix.bcn
nameserver 192.168.1.1
lookup file bind

# sockstat -4 | grep inetd
root     inetd      702   5  udp4   *:69  *:*
# mkdir /tftpboot
# chmod 755 /tftpboot

Comprobar tftp desde el cliente:
$ hostname
openBSD.unix.bcn
$ tftp 192.168.3.1
tftp> get index.txt
Received 1380 bytes in 0.1 seconds
tftp> quit
$

Descargar archivos del servidor OpenBSD 5.7 i386 (soekris net5501)

# cd /tftpboot
# fetch http://mirror.codigo23.net/pub/OpenBSD/5.7/i386/index.txt
index.txt                                     100% of 1489  B   35 kBps 00m00s
Successfully retrieved file.

Bajar todos los ficheros listados dentro de index.txt
# cat index.txt | grep -v '.iso' | tee index.txt | while read file ;  do \
>  ftp http://mirror.roothell.org/pub/OpenBSD/5.7/i386/"$file" \
> done
100% |********************************************************************************|   106 KB    00:00  
100% |********************************************************************************| 22356       00:00  
100% |********************************************************************************|  1022       00:00  
100% |********************************************************************************| 46941 KB    00:27  
100% |********************************************************************************|  6539 KB    00:02  
100% |********************************************************************************|  6558 KB    00:03  
100% |********************************************************************************|  5461 KB    00:02  
100% |********************************************************************************|
...

Ahora crear el fichero /etc/boot.conf con este contenido:
stty com0 19200
set tty com0

Soekris utiliza esta configuración para poder acceder a la consola serie. Después de que su servidor de instalación se haya reiniciado, el proceso es el mismo que en una instalación normal.

Nota: Las tarjetas Compact Flash conectan a 115,200. Algo así:
# cu -l /dev/ttyU0 -s 115,200

Bibliografía:
http://wiki.soekris.info/Connecting_to_the_serial_console
http://dustingram.com/articles/2009/08/25/creating-a-freebsd-pxe-network-boot-server/
http://meinit.nl/install-your-soekris-or-any-other-machine-openbsd-using-openbsd

Unix es genial!.