Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Jun 2016 15:20:01 +0200
From:      Miroslav Lachman <000.fbsd@quip.cz>
To:        atar <atar.yosef@gmail.com>, "freebsd-pf@freebsd.org" <freebsd-pf@freebsd.org>
Subject:   Re: Filter connections based on the hostname.
Message-ID:  <57600481.6080204@quip.cz>
In-Reply-To: <5858A82C-FB66-4D67-A676-47EABED976CE@gmail.com>
References:  <5858A82C-FB66-4D67-A676-47EABED976CE@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
atar wrote on 06/14/2016 14:52:
> Hi there,
>
> In the pf.conf man page, it is stated that it's possible to write inside a rule a hostname instead of an IP address and the resolver will take care of converting the hostname into its IP address when the pf process loads its configuration file.
>
> The problem arises when a particular hostname have many ip addresses like in the case of "google.com", "gmail.com" etc, and the ip address that "google.com" - for instance - is now (at the time that the user navigate his Internet browser to "google.com") resolved to isn't in the list of the ip addresses that the resolver has putted in the rule when the pf configuration file has been loaded.
>
> Now assuming that I have created a rule that is looked something like this:
>
> 'block from any to "google.con"'
>
> The hostname "google.com" isn't blocked since its current ip differs from its previous ip when pf has loaded the rule, what can I do in order to be able to block such sites (with many ip addresses)?

I would use tables and populate them periodically from shell script 
which can do FQDN to many IPs resolution.

It can be simple as this

host yahoo.com | awk '$0 ~ /has address/ { print $4 }' > 
/var/run/pf.yahoo_table
pfctl -t yahoo_table -T replace -f /var/run/pf.yahoo.table

I am sure you will find better solution :)

Miroslav Lachman




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?57600481.6080204>