On Saturday 09 September 2006 15:21, you wrote:
> I would only filter traffic on ONE interface, as is often recommended
> in applicable documentation -- e.g. just filter traffic on your $WAN
> interface. It's very hard to get things right when filtering on two
> interfaces.

Agreed. Oops, the pass in on $LAN was just a test to see if it made a 
difference. It's not there anymore.

> So I would default deny (block all), then pass quick on 
> $LAN and then pass on $WAN as required.

Since I'm not blocking on LAN I did not bother, but I included it to see if it 
helps. It does not.

> Also, you don't seem to be passing proto tcp, port 80 traffic from
> <managers> (ie. 192.168.0.2) to the 10.1.0.34 box on the $WAN
> interface?  Keep in mind that <http-managers> contains only google.com

Ah, an out of date note I forgot to update during my testing. 

> and <admins> is empty.

I also added proper data to all table files to ensure it does not mess things 
up. Though the persist command should allow for empty files.

> You're passing traffic from 10.1.0.34 to any
> port 80 on the $LAN interface, but not on the $WAN one. I think
> there's your reason you can't websurf to 10.1.0.34.

That's what "pass out log on $WAN proto tcp from <managers> to <http-managers> 
port $Web keep state" is supposed to do. 

Managers contain 192.168.0.2, which I'm testing from, and http-managers 
contain google.com. If I replace the <manager> statement with 192.168.0.2 it 
works. 

> As for google.com, I'm not sure, but I think it might have something
> to do with the fact that google.com resolves to multiple IPs in a
> round robin fashion -- and your <http-managers> only resolves to just

Nah, that does not seem to be a problem. But I added openbsd.com.

>
> cheers,
> Jens

-- UPDATED --

## Macros
# Interfaces
WAN="bge0"
LAN="xl0"
LANip="192.168.0.0/24"
RFC1918="{ 127.0.0.0/8 192.168.0.0/16 172.16.0.0/12 10.0.0.0/24 }"
#RFC1918="{ 127.0.0.0/8 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8  }"

Web="{ 80, 443 }"
Web-server="192.168.0.10"
Ftp="21"
Ftp-server="192.168.0.11"

## Tables
table <admins> persist file "/etc/tAdmins"
#table <managers> persist file "/etc/tManagers"
table <managers> { 192.168.0.2 }
table <operators> persist file "/etc/tOperators"
#table <http-managers> persist file "/etc/tHttp-managers"
table <http-managers> { google.com, openbsd.com }
table <http-operators> persist file "/etc/tHttp-operators"
table <customers> persist file "/etc/tCustomers"
table <extadmin> persist file "/etc/tExtadmin"

## Options

## Traffic Normalization
scrub in all

## Bandwidth Management
# External Queues we usually have 1000Mb internal, 4Mb on cable, and 3Mb on 
DSL
altq on $WAN cbq bandwidth 3000Kb queue { ssh, http-out, http-in, ftp-in, 
mail, dns, ftp, misc }
#queue LOCAL bandwidth 98456Kb cbq(borrow)

queue ftp-in bandwidth 12% priority 4 cbq(borrow red)
queue http-in bandwidth 13% priority 4 cbq(borrow red)
queue http-out bandwidth 25% priority 3 cbq(borrow red) { develusers, 
normalusers }
queue  develusers bandwidth 50% cbq(borrow)
queue  normalusers bandwidth 50% cbq(borrow)
queue mail bandwidth 10% priority 1 cbq(borrow ecn)
queue dns bandwidth 5% priority 5 cbq(borrow ecn)
queue ftp bandwidth 15% priority 2 cbq(borrow ecn)
queue ssh bandwidth 10% priority 6 cbq(borrow) { ssh_interactive, ssh_bulk }
queue  ssh_interactive bandwidth 50% cbq(borrow)
queue  ssh_bulk bandwidth 50% cbq(borrow)
queue misc bandwidth 10% cbq(borrow,default)

## Translations
#special = "{ 10.2.1.10 }"
#no nat on $WAN from $special to any
#nat on $WAN from $LAN to any -> $WAN
#binat on $WAN from $special to any -> $WAN
nat on $WAN from $LAN:network to any -> $WAN

## Redirection

## Packet Filtering
# Allow all loopback traffic.
pass quick on lo0
pass quick   on $LAN

# Allow all loopback traffic.
pass quick on lo0

# Pass all on LAN i/f
pass quick on $LAN

# Default deny.
block in  log quick on $WAN from $RFC1918
block in  log on $WAN
block out log on $WAN

# Allow basic networking communication
pass in  log on $WAN proto icmp from any to any keep state
pass out log on $WAN inet proto icmp all icmp-type 8 code 0 keep state

# Allow dns and ntp out
pass out log on $WAN proto udp from any to any port 53 keep state
pass out log on $WAN proto udp from any to any port 123 keep state

# Allow ssh in and out
pass in  log on $WAN proto tcp from any to any port 22 keep state
pass out log on $WAN proto tcp from any to any port 22 keep state

# Allow web out based on tables
pass out log on $WAN proto tcp from <admins> to any port $Web keep state
pass out log on $WAN proto tcp from <managers> to <http-managers> port $Web 
keep state
pass out log on $WAN proto tcp from <operators> to <http-operators> port $Web 
keep state

# Allow web and ftp in based on table
#pass in log on $WAN proto tcp from <customers> to $Web-server port $Web
#pass in log on $WAN proto tcp from <customers> to $Ftp-server port $Ftp
-- 

Steve Szmidt

"To enjoy the right of political self-government, men must be 
capable of personal self-government - the virtue of self-control. 
A people without decency cannot be secure in its liberty.
                        From the Declaration Principles

Reply via email to