Firewall pour station : Pf

Pf (firewall à filtrage de paquet avec conservation d'Etat - statefull inspection)

Pf (via pfctl) est l'interface utilisateur permettant d'administrer le firewall présent à partir de la version 3.0 d'OpenBSD.


Quelques rappels :


Scripts présentés :

Les deux fichiers de configuration présentés ont les caractéristiques suivantes :


Exemples de logs :

Nov 07 21:53:48.703280 rule 15/0(match): block in on ep1: 10.1.1.43.137 > 10.1.1.3.137: udp 88
Nov 07 21:54:04.742276 rule 13/0(match): block in on ep1: 10.1.1.42.4668 > 10.1.1.3.22: S 2918997:2918997(0) win 8192 (DF)

pf_rules_down.conf :

### BEGIN

pass in all
pass out all

pf_rules_up.conf :

### VARIABLES

INT="ep1" # Interface

# Addresses
ADM_IP="{ 10.1.1.77 }" # Ip Address of the remote allowed administration station

DNS_IP="{ 10.1.1.10 , 10.1.1.11 }"
PROXY_IP="{ 10.1.1.20 , 10.1.1.21 }"
MAIL_IP="{ 10.1.1.30 , 10.1.1.31 }"

# Ports
GP_SSH="{ 22 }"
GP_PROXY="{ 8080 }"
GP_MAIL="{ 25 , 110 }"
GP_DNS="{ 53 }"

### BEGIN

# Normalization
scrub in all

# Default Policie : Deny
block in on $INT all
block out on $INT all

### REMOTE MANAGEMENT

# Allow SSH remote management and log connections
pass in log quick on $INT inet proto tcp from $ADM_IP to any port $GP_SSH flags S/SA keep state

### ALLOW THESE TCP CONNECTIONS

# Allow SSH anywhere
pass out quick on $INT inet proto tcp from any port > 1024 to any port $GP_SSH flags S/SA keep state

# Allow HTTP/HTTPS to HTTP proxy servers
pass out quick on $INT inet proto tcp from any port > 1024 to $PROXY_IP port $GP_PROXY flags S/SA keep state

# Allow SMTP/POP to MailServers
pass out quick on $INT inet proto tcp from any port > 1024 to $MAIL_IP port $GP_MAIL flags S/SA keep state

### ALLOW THESE UDP CONNECTIONS

# Allow DNS Protocol to DNS Servers
pass out quick on $INT inet proto udp from any port $GP_DNS to $DNS_IP port $GP_DNS keep state

### ALLOW THESE ICMP CONNECTIONS

# Allow that kind of ICMP packets
pass out quick on $INT inet proto icmp from any to any icmp-type echoreq keep state

### AND LAST : LOG AND DENY

block in log quick on $INT inet proto tcp from any to any
block out log quick on $INT inet proto tcp from any to any
block in log quick on $INT inet proto udp from any to any
block out log quick on $INT inet proto udp from any to any
block in log quick on $INT inet proto icmp from any to any
block out log quick on $INT inet proto icmp from any to any

Simon Castro
Maj le 27 novembre 2002