Un cortafuegos permite filtrar tráfico que puede llegar o salir a un computador conectado a una red como Internet.
El siguiente ejemplo ejemplifica parte del archivo
/etc/pf.conf
para que
permita toda conexión que salga de la red privada hacia Internet, y
para que bloquee toda conexión que llegue excepto tráfico TCP
por los puertos para ssh (22) y dns (53), también permite llegada de tráfico
UDP por el puerto 53 y tráfico ICMP (para responder ping).
Suponemos
que ya se han configurado las variables int_if
y
ext_if
con las
interfaces de red interna y externa respectivamente:
servicios_tcp="{ssh,domain} servicios_udp="{domain}" servicios_icmp="echoreq" block in log all pass out keep state pass quick on { lo $int_if } antispoof quick for { lo $int_if } pass in on $ext_if inet proto tcp from any to ($ext_if) \ port $servicios_tcp keep state pass in on $ext_if inet proto udp from any to ($ext_if) \ port $servicios_udp keep state pass in inet proto icmp all icmp-type $servicios_icmp keep state
Si tiene un servidor interno (por ejemplo en una DMZ con IP 192.168.2.2) y necesita que este preste servicios visibles al exterior como: web (80), https (443), imaps (993), smtp (25) y ldap (389), deberá establecer un túnel para cada uno de estos puertos, de forma que las conexiones que lleguen al cortafuegos sean redirigidas al servidor interno. El siguiente ejemplo presenta como puede hacerse:
serv_ip="192.168.2.2" servicios_serv="{ldap,smtp,www,https,imaps}" #En la sección rdr/nat: rdr pass on $ext_if proto tcp from any to any port 80 -> $serv_ip port 80 rdr pass on $ext_if proto tcp from any to any port 443 -> $serv_ip port 443 rdr pass on $ext_if proto tcp from any to any port 993 -> $serv_ip port 993 rdr pass on $ext_if proto tcp from any to any port 10022 -> $serv_ip port 22 rdr pass on $ext_if proto tcp from any to any port 10465 -> $serv_ip port 465 rdr pass on $ext_if proto tcp from any to any port smtp -> $serv_ip port smtp rdr pass on $ext_if proto tcp from any to any port 389 -> $serv_ip port 389 #En la sección de reglas de filtrado pass in on $ext_if proto tcp from any to $serv_ip port $servicios_serv \ flags S/SA synproxy state