PF, Encolado y Priorización

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

PF, Encolado y Priorización

Hermes Ojeda Ruiz
Hola a los miembros del grupo, tengo una duda:

He revisado la documentación de PF en la parte de encolado y
priorización, pero no entiendo como podría resolver un problema que
tengo con eso, sin tener que hacer una gran cantidad de reglas:

- Lo que necesito es repartir equitativamente el ancho de banda del
enlace a internet en una red local con aprox. 150 usuarios de manera
equitativa. Y que si alguien más no está ocupando su cuota que los demás
puedan ocupar más ancho de banda (eso no hay problema con el parámetro
borrow)

La parte que no entiendo, es cómo podría hacerlo para tantas ip's (todas
asignadas por DHCP ese es un requisito). Sin tener que hacer una regla
para cada una. (Esto lo he realizado en otros firewalls con openbsd que
he montado pero para 5 usuarios, o para priorizar ssh, para lo cuál no
es mucho problema hacer las reglas)

Gracias de antemano por el apoyo

Saludos

--
Has recibido este mensaje porque estás suscrito al grupo "OpenBSD México" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a [hidden email].
Para anular tu suscripción a este grupo, envía un correo electrónico a [hidden email]
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/openbsd-mexico?hl=es.

Reply | Threaded
Open this post in threaded view
|

Re: PF, Encolado y Priorización

Peques
Desconozco la versión que tienes pero esto funciona para 4.2, si esta in

####### Configuración de las tarjetas de red            ######### 
ext_if   = "dc0" 
int_if   = "rl0" 

######  Identificación del servicio que brindan         ######## 
internet = "dc0" 
local    = $int_if:network 

######  Tablas para evitar ataques SSH                  ######## 
table <bloquear_ssh> persist 

#####   Lista de protocolos permitidos                  ######## 

servicio_tcp = "{www,https,ftp,ftp-data,2083,2096}" 
servicio_icmp= "{echoreq}" 
servicio_dhcp= "{bootps,bootpc}" 

#####   Opciones de packet filter                       ######## 
set block-policy drop 
set limit states 10000 
set limit frags 10000 
set optimization aggressive 
set require-order yes 

set limit { states 10000, frags 10000, src-nodes 1000 } 
set timeout { frag 10 } 
set timeout { tcp.first 30, tcp.opening 30, tcp.established 3600 } 
set timeout { tcp.closing 30, tcp.closed 30, tcp.finwait 30 } 
set timeout { udp.first 30, udp.single 30, udp.multiple 30 } 
set timeout { icmp.first 3, icmp.error 3} 
set timeout { adaptive.start 8000, adaptive.end 14000 } 

set debug urgent 
set skip on lo0 
set loginterface $ext_if 

#####   Normalización de paquetes                       ######## 
scrub all 

####    Administración del ancho de banda               ######## 

altq on $ext_if bandwidth 1000Kb hfsc queue { ack, dns, ssh, bulk } 
        queue ack        bandwidth 80% priority 7 qlimit 500 \ 
                                hfsc (ecn realtime 58%  upperlimit 60%) 
        queue dns        bandwidth  7% priority 6 qlimit 500 \ 
                                hfsc (ecn realtime  7%) 
        queue ssh        bandwidth 10% priority 5 qlimit 500 \ 
                                hfsc (ecn realtime 10%) {ssh_bulk, 
ssh_login} 
                         queue ssh_login  bandwidth 90% \ 
                                priority 5 qlimit 500 hfsc 
                         queue ssh_bulk   bandwidth 10% \ 
                                priority 4 qlimit 500 hfsc 
        queue bulk       bandwidth  3% priority 4 qlimit 500 \ 
                                hfsc (ecn realtime 3% default) 

#####   Se realiza NAT de la red interna a la externa   ######## 
nat on $ext_if inet from $local to any -> ($ext_if) 

#####   Habilitar FTP proxy                             ####### 
nat-anchor "ftp-proxy/*" 
rdr-anchor "ftp-proxy/*" 
rdr pass on $int_if proto tcp from $local to any port ftp -> 127.0.0.1 port 8021 

#####   La politica por defecto todo bloquea            ######## 
block log (all) all 
block quick inet6 all 

block return-rst in log inet proto tcp from any to any 
block return-icmp in log inet proto udp from any to any 

####    El orden es importante la ultima regla manda    ######## 
#####   Empezamos abrir los puertos para lo necesario   ######## 
####    Reglas para permitir el tráfico de FTP          ######## 
anchor "ftp-proxy/*" 

#####   Bloqueamos los hosts que esten en la tabla      ######## 
block in log quick from <bloquear_ssh> 

####    Permitimos el paso de ciertos paquetes icmp     ######## 
pass inet proto icmp all icmp-type $servicio_icmp queue bulk 

####    Se permite el paso ssh a ip no ofensivos        ######## 
pass quick proto tcp from any to any port 2222 \ 
                keep state (max-src-conn 10, max-src-conn-rate 5/3, \ 
                overload <bloquear_ssh> flush ) queue ssh 

#####   pass proto tcp to any port $servicio_tcp        ######## 
pass quick proto {tcp udp} to any port domain queue domain 
pass quick proto tcp to any port $servicio_tcp queue ack 

antispoof for $ext_if 
antispoof for $int_if 


--
Has recibido este mensaje porque estás suscrito al grupo "OpenBSD México" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a [hidden email].
Para anular tu suscripción a este grupo, envía un correo electrónico a [hidden email]
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/openbsd-mexico?hl=es.
Reply | Threaded
Open this post in threaded view
|

Re: PF, Encolado y Priorización

Hermes Ojeda Ruiz
Disculpen mi distracción con respecto a los detalles:
- Usaré OpenBSD 4.7

En la configuración que envías de PF el detalle es que estás priorizando por tipo de protocolo. Puedo entender las reglas que pusiste, pero me sigue quedando la duda:

- ¿Con eso garantizaría distribuir equititativamente el ancho de banda entre los usuarios de la red?. (Afortunada, o desafortunadamente aquí no habría problema en utilizar los diferentes protocolos, si acaso priorizarlos, ya que es para proveer de internet cuyo uso es muy variado, desde llamadas por voip hasta acceso a páginas, mensajero, y no debe tener ninguna restricción). ¿Se puede hacer algo así?

También revisé el libro de PF, en la parte de priorización, y también encontré la regla que tienes para botar los "ssh" indeseables cuando te hacen un ataque.


On 06/09/10 13:46, Peques wrote:
Desconozco la versión que tienes pero esto funciona para 4.2, si esta in

####### Configuración de las tarjetas de red            ######### 
ext_if   = "dc0" 
int_if   = "rl0" 

######  Identificación del servicio que brindan         ######## 
internet = "dc0" 
local    = $int_if:network 

######  Tablas para evitar ataques SSH                  ######## 
table <bloquear_ssh> persist 

#####   Lista de protocolos permitidos                  ######## 

servicio_tcp = "{www,https,ftp,ftp-data,2083,2096}" 
servicio_icmp= "{echoreq}" 
servicio_dhcp= "{bootps,bootpc}" 

#####   Opciones de packet filter                       ######## 
set block-policy drop 
set limit states 10000 
set limit frags 10000 
set optimization aggressive 
set require-order yes 

set limit { states 10000, frags 10000, src-nodes 1000 } 
set timeout { frag 10 } 
set timeout { tcp.first 30, tcp.opening 30, tcp.established 3600 } 
set timeout { tcp.closing 30, tcp.closed 30, tcp.finwait 30 } 
set timeout { udp.first 30, udp.single 30, udp.multiple 30 } 
set timeout { icmp.first 3, icmp.error 3} 
set timeout { adaptive.start 8000, adaptive.end 14000 } 

set debug urgent 
set skip on lo0 
set loginterface $ext_if 

#####   Normalización de paquetes                       ######## 
scrub all 

####    Administración del ancho de banda               ######## 

altq on $ext_if bandwidth 1000Kb hfsc queue { ack, dns, ssh, bulk } 
        queue ack        bandwidth 80% priority 7 qlimit 500 \ 
                                hfsc (ecn realtime 58%  upperlimit 60%) 
        queue dns        bandwidth  7% priority 6 qlimit 500 \ 
                                hfsc (ecn realtime  7%) 
        queue ssh        bandwidth 10% priority 5 qlimit 500 \ 
                                hfsc (ecn realtime 10%) {ssh_bulk, 
ssh_login} 
                         queue ssh_login  bandwidth 90% \ 
                                priority 5 qlimit 500 hfsc 
                         queue ssh_bulk   bandwidth 10% \ 
                                priority 4 qlimit 500 hfsc 
        queue bulk       bandwidth  3% priority 4 qlimit 500 \ 
                                hfsc (ecn realtime 3% default) 

#####   Se realiza NAT de la red interna a la externa   ######## 
nat on $ext_if inet from $local to any -> ($ext_if) 

#####   Habilitar FTP proxy                             ####### 
nat-anchor "ftp-proxy/*" 
rdr-anchor "ftp-proxy/*" 
rdr pass on $int_if proto tcp from $local to any port ftp -> 127.0.0.1 port 8021 

#####   La politica por defecto todo bloquea            ######## 
block log (all) all 
block quick inet6 all 

block return-rst in log inet proto tcp from any to any 
block return-icmp in log inet proto udp from any to any 

####    El orden es importante la ultima regla manda    ######## 
#####   Empezamos abrir los puertos para lo necesario   ######## 
####    Reglas para permitir el tráfico de FTP          ######## 
anchor "ftp-proxy/*" 

#####   Bloqueamos los hosts que esten en la tabla      ######## 
block in log quick from <bloquear_ssh> 

####    Permitimos el paso de ciertos paquetes icmp     ######## 
pass inet proto icmp all icmp-type $servicio_icmp queue bulk 

####    Se permite el paso ssh a ip no ofensivos        ######## 
pass quick proto tcp from any to any port 2222 \ 
                keep state (max-src-conn 10, max-src-conn-rate 5/3, \ 
                overload <bloquear_ssh> flush ) queue ssh 

#####   pass proto tcp to any port $servicio_tcp        ######## 
pass quick proto {tcp udp} to any port domain queue domain 
pass quick proto tcp to any port $servicio_tcp queue ack 

antispoof for $ext_if 
antispoof for $int_if 


--
Has recibido este mensaje porque estás suscrito al grupo "OpenBSD México" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a [hidden email].
Para anular tu suscripción a este grupo, envía un correo electrónico a [hidden email]
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/openbsd-mexico?hl=es.

--
Has recibido este mensaje porque estás suscrito al grupo "OpenBSD México" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a [hidden email].
Para anular tu suscripción a este grupo, envía un correo electrónico a [hidden email]
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/openbsd-mexico?hl=es.
Reply | Threaded
Open this post in threaded view
|

Re: PF, Encolado y Priorización

Peques
tienes razón, con eso no garantizas que los usuarios tienen ancho de banda equitativo con eso garantizas que ciertos protocolos serán atendidos antes que otros. Estoy seguro que esto puede ser posible solo que no lo he intentado, quizá alguien más no podrá guiar.

saludos.

--
Has recibido este mensaje porque estás suscrito al grupo "OpenBSD México" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a [hidden email].
Para anular tu suscripción a este grupo, envía un correo electrónico a [hidden email]
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/openbsd-mexico?hl=es.