no FreeBSD, como eu abro uma porta na WAN, mas não na LAN?

2

Eu tenho uma máquina FreeBSD que eu uso como playbox / server / torrentbox. Faz parte da minha LAN. Aqui está a semântica (alterada a partir de um exemplo no site do OpenBSD):

[ desktop ]    [ laptop ]
    |            |                               
 ---+------+-----+------- [switch] -------- ( DSL modem )
           |
       [ FreeBSD playbox ]

Eu configurei IPs estáticos em todos os dispositivos no intervalo 10.0.0.0/24. Então meu modem DSL é 10.0.0.1, meu desktop é 10.0.0.2, e a caixa FreeBSD é 10.0.0.3. Também há DHCP habilitado, então cada máquina que não tem um IP estático (um amigo traz um laptop) é atribuída pelo modem DSL, no intervalo 10.0.0.30 - 10.0.0.60.

Eu tenho apenas uma placa Ethernet (em0) e quero abrir uma porta na WAN, mas não na LAN. Fazendo isso:

block in all
pass out all keep state
pass in proto tcp from any to any port 22

Também abrirá a porta na LAN.

Em todos os exemplos que vi que separavam WAN e LAN, era com dois NICs e o FreeBSD desempenhava o papel de um intermediário (um firewall).

Então, como eu abro uma porta somente na WAN?

Esta questão tem um acompanhamento. Haverá algumas portas que eu quero abrir em ambos, LAN e WAN, mas quero impor alguns limites na WAN. Aqui está um exemplo que encontrei online:

# Setup a table and ruleset that prevents excessive abuse by hosts
# that attempt to brute force the ssh daemon with repeated requests.
# any host that hammers more than 3 connections in 5 seconds gets
# all their packet states killed and dropped into a blackhole table.
table <wan_abuse> persist
block in quick from <wan_abuse>
pass in on $eth proto tcp to any port $wan_servers_tcp flags S/SA keep \
state (max-src-conn 10, max-src-conn-rate 3/5, overload <wan_abuse> flush)
    
por swapjim 24.08.2015 / 15:38

1 resposta

1

Bloqueando o acesso à LAN : Se pf.conf souber qual é a sua sub-rede da LAN, você pode bloquear seletivamente o tráfego dela. Usando seu exemplo:

block in all
pass out all keep state

lan_subnet = "10.0.0.0/24"
block in quick proto tcp from $lan_subnet to any port 22
pass in proto tcp from any to any port 22

WAN limitadora de taxa, mas não LAN : Digamos, por exemplo, que você queira limitar o tráfego da Internet nas portas 80 e 8080, mas não imponha limitação de taxa da LAN nessas portas. Este snippet rastrearia e bloquearia hosts WAN abusivos enquanto permitia o acesso da LAN:

table <http_abuse> persist
http_ports = "{ 80 8080 }"

pass in quick proto tcp from $lan_subnet to any port $http_ports
block in quick proto tcp from <http_abuse> to any port $http_ports

pass in proto tcp from any to any port $http_ports \
    flags S/SA keep state \
    (source-track rule, max-src-conn 50, max-src-conn-rate 25/2, \
     overload <http_abuse> flush)

Para um bloqueio e limitação de taxa mais flexível, você pode usar uma ferramenta como sshguard , que está convenientemente disponível em portas e pacotes .

    
por 24.08.2015 / 19:53

Tags