On Thu, Oct 17, 2019 at 10:33:41PM -0600, Theo de Raadt wrote:
> > Setting net.inet.ip.check_interface=1 on FreeBSD stopped any ICMP Echo
> > replies immediately.
> > 
> > On NetBSD I set net.inet.ip.checkinterface=1 and it showed the same
> > behaviour like FreeBSD. No replies anymore, whenever the "wrong"
> > interface was contacted.
> 
> How many users set those variables?
> 
> A global seems this is a misguided place to establish such a policy.
> 
> If it was good and neccessary for everyone on all interfaces and had no
> downsides, they would have turned it on.  But they didn't.
> 
> A similar feature "urpf-failed" which is more nuanced is available in
> pf.conf, and you can properly use it on a per-interface basis, also
> selecting to do so based un other per-rule options, rather than having
> a 'global rule'.
> 
> Something blocked FreeBSD or NetBSD from turning this into the default.
> What was that reason -- was it too damaging?
> 
> (I'm going to assume the people with so-called 'strong' views didn't win
> the battle, and the so-called 'weak' view pervailed, probably because
> the 'strong' option created breakage and prevents the dominant
> operational model of Getting-Shit-Done.  That's why I ask how many
> people in real life subscribe the 'strong' view by turning on this
> option in FreeBSD/NetBSD.  3 people or is it 2?  In my experience,
> everyone is so busy getting on about their lives they don't flip any
> knobs which don't provide an immediately confirmable and neccessary
> value).
> 
>      from source port source os source to dest port dest
>              This rule applies only to packets with the specified source and
>              destination addresses and ports.
> 
>              Addresses can be specified in CIDR notation (matching netblocks),
>              as symbolic host names, interface names or interface group names,
>              or as any of the following keywords:
> 
>              any          Any address.
>              no-route     Any address which is not currently routable.
>              route label  Any address matching the given route(8) label.
>              self         Expands to all addresses assigned to all interfaces.
>              <table>      Any address matching the given table.
>              urpf-failed  Any source address that fails a unicast reverse path
>                           forwarding (URPF) check, i.e. packets coming in on
>                           an interface other than that which holds the route
>                           back to the packet's source address.
> 
> Convince us we should change to the strong model, and I'll embrace it.
> 
> You won't convince us to make a global which people don't understand...
> 

This "strong" model is a bad fit for routers.

When this model is needed we have pf (antispoof or urpf-failed).
Alternatively rdomains can be used (put a network interface with management
services on it in a separate rdomain).

Remi

Reply via email to