Páginas

miércoles, 10 de febrero de 2016

OpenSMTPD OpenBSD

OpenSMTPD Redirigir mail



smtpd.conf es el archivo de configuración para el demonio de correo smtpd

El archivo predeterminado smtpd.conf que se suministra con OpenBSD escucha en la interfaz de red de bucle de retorno (lo0), y permite correo de usuarios y demonios en la máquina local, así como el correo electrónico a servidores remotos.

En este caso todo el correo saliente se reenvía a una cuenta de correo Gmail. Se necesita un fichero de claves para especificar un nombre de usuario y contraseña:

Archivo /etc/rc.conf.local

# echo 'sendmail_flags=NO' >> /etc/rc.conf.local
# echo 'smtpd_flags=""' >> /etc/rc.conf.local

Crear un nuevo /etc/mailer.conf

# mv /etc/mailer.conf /etc/mailer.conf.backup
# touch /etc/mailer.conf

Archivo /etc/mailer.conf

# vim /etc/mailer.conf
sendmail /usr/sbin/smtpctl
send-mail /usr/sbin/smtpctl
mailq /usr/sbin/smtpctl
makemap /usr/libexec/smtpd/makemap
newaliases /usr/libexec/smtpd/makemap

# mv /etc/mail/smtpd.conf /etc/mail/smtpd.conf.backup
# touch /etc/mail/smtpd.conf

Archivo /etc/mail/smtpd.conf

# vim /etc/mail/smtpd.conf

listen on lo0
table aliases db:/etc/mail/aliases.db
table secrets db:/etc/mail/secrets.db
accept for local deliver to mbox
accept from local for any relay via tls+auth://gmail321@smtp.gmail.com:587 auth

# touch /etc/mail/secrets
# chmod 640 /etc/mail/secrets
# chown root:_smtpd /etc/mail/secrets
# echo "label gmail_login@gmail.com:password" > /etc/mail/secrets
# cat /etc/mail/secrets
label gmail_login@gmail.com:password
# /usr/libexec/smtpd/makemap /etc/mail/secrets

Cambios en el archivo /etc/mail/aliases

# vim /etc/mail/alisases

root: gmail_login@gmail.com

# /usr/libexec/smtpd/makemap /etc/mail/aliases
# /etc/rc.d/smtpd start

Enviar correo de prueba:
# echo "Hola Mundo" | mail -s "Hola" root@localhost; tail -f /var/log/maillog

Enviar salida dmesg:
# echo `dmesg` | mail -s "openbsd machine" root@localhost; tail -f /var/log/maillog
...
Feb 11 11:35:43 soekris smtpd[1774]: relay: Ok for b923b84f934ad760: session=87fd5613745bfb86, from=, to=, rcpt=, source=192.168.1.200, relay=64.233.184.109 (wa-in-f109.1e100.net), delay=3s, stat=250 2.0.0 OK 1455186943 i5sm6903045wja.23 - gsmtp
Feb 11 11:35:53 soekris smtpd[1774]: smtp-out: Closing session 87fd5613745bfb86:
1 message sent.
...

Consultar reporte diario:









Referencia: https://www.opensmtpd.org/smtpd.conf.5.html

OpenBSD es genial!.

sábado, 16 de enero de 2016

OpenBSD Soekris Ralink AP

Cambiar la tarjeta wireless (AP) Atheros (estandard a/b 11 Mbps) por Ralink (estandard a/b/g 54 Mbps)

Contribuir con el projecto OpenBSD

1.- http://gnulinuxcodigo.blogspot.com.es/2015/12/pxe-servidor-freebsd.html
2.- http://gnulinuxcodigo.blogspot.com.es/2015/12/openbsd-soekris-router.html
3.- http://gnulinuxcodigo.blogspot.com.es/2015/12/scums-bruteforce-openbsd-pf.html
4.- http://gnulinuxcodigo.blogspot.com.es/2016/01/punto-de-aceso-tiene-las-funciones-de.html
5.- http://gnulinuxcodigo.blogspot.com.es/2016/01/openbsd-soekris-ralink-ap.html

Ralink RT2561T tarjeta mini PCI Soekris


El adaptador de red elegido es soportado por OpenBSD


Características

CNet CWM-854 54 Mbps 802.11a/b/g Wireless Mini PC
802.11g: OFDM
Tipo de factor de forma III B
Modulación: 802.11b: CCK, DQPSK, DBPSK
no compatible con ranuras mini PCI express

Desde un terminal entrar vía ssh al router Soekris

$ ssh 192.168.3.1
Last login: Sat Jan 16 09:05:46 2016 from 192.168.3.22
OpenBSD 5.7 (GENERIC.MP) #0: Tue Jan  5 11:47:15 CET 2016

Welcome to OpenBSD: The proactively secure Unix-like operating system.
...

Apagar la máquina

$ su
password

# halt -p

Cambiar tarjeta wireless

Despues de apagar, desconectar la fuente de alimentación, abrir y sustituir la tarjeta atheros por la ralink.

El cable serie se conecta al portátil (FreeBSD) y teclear (como usuario root):

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

Encender router Soekris

Poner en marcha el router conectando el cable de alimentación. Cargará comBios, oprimir Ctrl-P para entrar en el monitor.

> boot
> stty com0 19200
> set tty com0
> Intro

Cuando termine de cargar el sistema, entrar vía ssh desde un cliente de la red autorizado:

$ ssh 192.168.3.1

$ uname -a
OpenBSD soekris.unix.bcn 5.7 GENERIC.MP#0 i386

Si no ha creado el archivo /etc/boot.conf con anterioridad, hágalo ahora para evitar introducir estos comandos manualmente: 
$ su
Password:

CREAR ARCHIVO /etc/boot.conf:

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

Algunas consideraciones:

El script fw_update, utiliza el sistema de paquetes para buscar a través de Internet. Donde quiera que el firmware proviene, se almacena en /etc/firmware por defecto.

# ls /etc/firmware/ral-*
/etc/firmware/ral-license  /etc/firmware/ral-rt2561s  /etc/firmware/ral-rt2860
/etc/firmware/ral-rt2561   /etc/firmware/ral-rt2661

fw_update se ejecuta en el primer arranque después de instalar o actualizar OpenBSD, pero se puede ejecutar en cualquier momento que se desee (se almacena en /usr/sbin). Soporta WPA 256 bits.

En la FAQ de OpenBSD vemos que esta inalámbrica soporta el modo Access Point (AP). El chipset Ralink RT2561 consiste en dos chipsets integrados, RT2561 MAC/BBP y un transceptor de radio RT2527. Soporta cifrado WPA-PSK de 264 bits.

$ dmesg | grep -i ral0

ral0 at pci0 dev 17 function 0 "Ralink RT2561" rev 0x00: irq 15, address 00:08:a1:c0:6e:e6
ral0: MAC/BBP RT2561C, RF RT2527


Averiguar el tipo de medio físico compatible con la interfaz:

# ifconfig ral0 media

supported media:

...

media autoselect
media autoselect mediaopt ibss
media autoselect mediaopt hostap
media autoselect mediaopt monitor
media autoselect mode 11b
media autoselect mode 11b mediaopt ibss
media autoselect mode 11b mediaopt hostap
media autoselect mode 11b mediaopt monitor
media autoselect mode 11g
media OFDM48 mode 11g mediaopt ibss
media OFDM48 mode 11g mediaopt hostap
media OFDM48 mode 11g mediaopt monitor
media OFDM54 mode 11g
media OFDM54 mode 11g mediaopt ibss
media OFDM54 mode 11g mediaopt hostap
media OFDM54 mode 11g mediaopt monitor
...

El archivo /etc/hostname.ral0 queda así

# cat /etc/hostname.ral0      
                                          
inet 192.168.3.129 255.255.255.128 192.168.3.255 media OFDM54 mode 11g \
mediaopt hostap \
nwid soekris wpakey 08xK78gBuY952euO \
priority 0 \
chan 1 \
up

El archivo /etc/dhcpd.conf

shared-network LOCAL-NET {
option domain-name "unix.bcn";
option domain-name-servers 192.168.3.1, 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;
        max-lease-time 1200;
        host portatil {
            fixed-address 192.168.3.2;
            hardware ethernet 00:21:9b:e2:cd:44;
         }
        host servidor {
            fixed-address 192.168.3.10;
            hardware ethernet 00:1f:3c:bf:a0:3c;
         }
    }

# 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; 
        max-lease-time 1200;
     }
}

Iniciar el servidor dhcp
# /etc/rc.d/dhcpd start


Desde el cliente
# killall -9 dhclient
# dhclient msk0
# ifconfig msk0



Crear el archivo /var/db/dhcp.leases para ral0

# touch /var/db/dhcpd.leases.ral0
# /usr/sbin/dhcpd -l /var/db/dhcpd.leases.ral0 ral0


Permisos de /etc/hostname.ral0

# chmod 600 /etc/hostname.ral0

Sin cambios /etc/hostname.vether0

# cat /etc/hostname.vether0                                                  
inet 192.168.3.1 255.255.255.128 192.168.3.127
up

El formato para IP estática versión 4

inet => IPv4
ipaddress => 192.168.3.1
netmask => 255.255.255.128
broadcast => 192.168.3.127

# cambios en el archivo /etc/hostname.bridge0

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

Reiniciar todas las interfaces de red

# sh /etc/netstart

Sustituir en los archivos /etc/rc.conf.local, /etc/pf.conf ath0 por ral0

Los archivos restantes (dhcpd.conf, unbound.conf), no precisan cambios.

unbound dnscrypt-proxy

# cat /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: 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


# 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, -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

$ ifconfig ral0


Conectar smartphone a la red inalámbrica


Nota: Los teléfonos inteligentes Android utilizan el archivo /system/etc/resolv.conf para decirle al sistema los servidores de nombre a utilizar, (por defecto los de Google: 8.8.8.8 y 8.8.4.4). Para cambiarlos se utliza la app Terminal (Terminal emulador para Android, solo dispositivos rooteados) y desde alli remontar /system en modo rw y cambiar el contenido del archivo. También puede remontar /system con, por ejemplo, el explorador de archivos root explorer (para dispositivos rooteados):

Dentro de Terminal
> su
# mount -o remount, rw /system 
# cat /system/etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

Que permisos tiene el archivo?
# ls -l /system/etc/resolv.conf
-rwsr-xr-x root root 58 2016-03-24 20:33 resolv.conf
# chmod 4755 /system/etc/resolv.conf

Cambiar el contenido del archivo
# echo 'search unix.bcn'>/system/etc/resolv.conf
# echo 'nameserver 192.168.3.1'>>/system/etc/resolv.conf


Ahora el contenido ha cambiado:
# cat /system/etc/resolv.conf
search unix.bcn
nameserver 192.168.3.1
# mantiene compatibilidad con otras redes wifi fuera del entorno del router configurado anteriormente
nameserver 8.8.8.8 

Remontar /system en modo ro
# mount -o remount, ro /system/

Otro cambio más, esta vez en el firewall Soekris. Desactivamos dhcpd en la interfaz ral0 (wifi) en el archivo rc.conf.local y en el archivo /etc/dhcpd.interfaces. Por último otorgamos IP's fijas a los dispositivos inalámbricos.






PF /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 ral0 }"
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

# 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 $int_if
antispoof quick for egress

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

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

# para escribir logins fuerza bruta
block quick log from <bruteforce>

# 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

# bloquea todas las conexiones salientes en el puerto 53 si no se destinan
# a nuestra memoria caché DNS
block return in log on $int_if inet proto { tcp udp } from any to ! 192.168.3.1 port 53

block in all

# proteger el puerto 22 (SSH ) a partir de intentos no autorizados 
pass in quick log on $ext_if 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)

# Pass all traffic on internal interfaces
# vether0 is necessary here, but bridge0 is not
pass out quick inet
pass in on $int_if inet

# 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

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





ifconfig -a 

Mostrar todas las direcciones MAC e IPv4 que Soekris conoce

# arp -a

OpenBSD es genial!.

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