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!.