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!.
Estuve mirando los articulos que subiste de OpenBSD, muy buenos. En genearal todo el contenido del blog es genial, te felicito.
ResponderEliminarGracias por tus palabras. Un saludo.
ResponderEliminar