samba and pf (full access rule)

Vasadi I. Claudiu Florin claudiu.vasadi at gmail.com
Sun Apr 5 06:38:02 PDT 2009


Hello guys,

I have a strange situation here. I'm aware of the issues samba has with  
firewalling and decided to grant full access to the samba server from 1  
IP. Added a line like:

pass in on $ext_if from <my_ip> to <samba_ip> port {0:65535}

and it worked. Yesterday I decided to play around with NAT, so I added an  
extra network card (rl1) ans started reading. Managed to get NAT up and  
running but when returning to my box (the <my_ip> box) I've noticed that I  
could not access ther samba server any more. So I backtraced my steps and  
commented out just about everything that could interfere with samba.  
Nothing worked. Maybe I have some syntax error (none pointed by pfctl  
-(n)f <file>) that I didn't figure out yet.

Ow, and one more thing. I changed the rule to macros. Read the pf.conf  
file and ypu will understand


#####################
##   Macros I  ######
###   Global      ###
#####################

me = "192.168.0.2"
ext_if = "rl0"
int_if = "rl1"
lo_if = "lo0"
int_net = "192.168.1.0/24"
router = "192.168.0.1"
allowed_ports = "{ ftp, ssh, smtp, 80, 443, pop3, 65530:65535 }"
allowed_protocols = "{ tcp, udp }"
ks = "keep state"
ss = "synproxy state"
ms = "modulate state"



####################
###  Macros II #####
# !! Exceptions !! #
####################


# Allow all ports from 192.168.0.6 to 192.168.0.2 (for SAMBA)

exception_if_1_src = "rl0"                # Interface
exception_ip_1_src = "192.168.0.6"      # !!! ATTENTION !!! These IP's get  
access to ALL ports
exception_ip_1_dst = "192.168.0.2"      #
exception_proto_1 = "{ tcp, udp }"      # Protocols
exception_port_1 = "{ 0:65535 }"        # Ports


# Edit use      # Remeber to uncoment @ Automated rules

#exception_if_2_src =           # Interface
#exception_ip_2_src = ""        # !!! ATTENTION !!! These IP's get access  
to ALL ports
#exception_ip_2_dst = ""        #
#exception_proto_2 = ""         # Protocols
#exception_port_2 = ""          # Ports


# Edit use      # Remeber to uncoment @ Automated rules

#exception_if_3_src =           # Interface
#exception_ip_3_src = ""        # !!! ATTENTION !!! These IP's get access  
to ALL ports
#exception_ip_3_dst = ""        #
#exception_proto_3 = ""         # Protocols
#exception_port_3 = ""          # Ports




## Tables




## Options
set skip on $lo_if
set debug urgent
set loginterface $ext_if
set ruleset-optimization basic
set state-policy if-bound


## Scrub
#scrub in on $ext_if all no-df random-id max-mss 1500 fragment reassemble
#scrub on $ext_if reassemble tcp

## Queueing



## Translation (NAT/RDR)

#nat on $ext_if from 192.168.1.0/24 to any -> ($ext_if)


#############################
#####   Filter Rules   ######
#############################

block in log all
pass out all


# Samba from/to 192.168.1.30

#pass in on $int_if proto udp from 192.168.1.30/32 to $int_if port {137,  
138}
#pass out on $int_if proto udp from 192.168.1.30/32 to $int_if port {137,  
138}
#pass in on $int_if proto tcp from 192.168.1.30/32 to $int_if port {139,  
445}
#pass out on $int_if proto tcp from 192.168.1.30/32 to $int_if port {139,  
445}






###############################
#####   Automated Rules   #####
# No editing past this point  #
###############################

# Globals

pass in on $ext_if proto $allowed_protocols from any to $ext_if port  
$allowed_ports


# Exceptions (1,2,3 ... )

pass in on $exception_if_1_src proto $exception_proto_1 from  
$exception_ip_1_src \
to $exception_ip_1_dst port $exception_port_1

#pass in on $exception_if_2_src proto $exception_proto_2 from  
$exception_ip_2_src \
to $exception_ip_2_dst port $exception_port_2

#pass in on $exception_if_3_src proto $exception_proto_3 from  
$exception_ip_3_src \
to $exception_ip_3_dst port $exception_port_3





Also tryed with scrub on/pff. Didn't work. the <my_ip> box is 192.168.0.6  
and the samba server is 192.168.0.2


pfctl -sr shows the rulles being loaded:

pass in on rl0 inet proto tcp from 192.168.0.6 to 192.168.0.2 port 0:65535  
flags S/SA keep state (if-bound)
pass in on rl0 inet proto udp from 192.168.0.6 to 192.168.0.2 port 0:65535  
keep state (if-bound)

Also I have block in all and pass out all:
block drop in log all
pass out all flags S/SA keep state (if-bound)

Thought that maybe I've mispelled something so I commented out  
"exception1" and added:
pass in on rl0 from <my_ip> to <samba_svr> port {0:65535}

it was the same....


So I thought that maybe it's samba's fault... well, it's not. Not with pf  
disable it's not.....

so.... ideas ?


More information about the freebsd-pf mailing list