NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Block a single connection with npf
On dic 12 12:48, Greg Troxel wrote:
> First, you are talking about "gateway" so I am guessing you have the
> usual computer with two interfaces, one to your ISP with a single IPv4
> address and one that is your home LAN, where is is .1, does dhcp, and is
> running npf. If not please explain.
You perfectly guessed and depicted the scenario. (I omitted this because
I took this typical configuration as granted, but maybe it was necessary
to briefly mention it).
> Normally, people set up nat from LAN to WAN
Yes, exactly, and that's my case, too.
> and a firewall for incoming
> WAN packets that blocks most things except for what they want, and
> usually a stateful pass out rule so that matching packets from outgoing
> things are allowed.
I jumped straight to the second step, not having (so far) specific needs
to block something from the outside (there are no services exposed to my
public IP address):
pass stateful out all
> I am not an npf expert yet -- still on the steep part of the learning
> curve
Me neither. I'm even behind you, probably, on the very beginning of that
steep part :).
> -- but I think stateful rules only on syn packets and then apply
> to others.
Sorry, I can't understand what you meant here.
> This is a normal desire, to stop "phoning home" and "exfiltration" by
> your adversary-controlled proprietary-software-infested IOT things :-)
Yes exactly! :)
> Steppping, back, the real goal is to stop the packet from going to the
> ISP and onwards to the destination. So you can block the packet
> inbound to if_mylan or outbound on if_mywan. But outbound on wan, you
> have to be careful about if NAT is applied when the rule is evaluated so
> you can match. Or you can just block target_address entirely.
I think that blocking the packet inbound to $if_mylan is the best
solution. This action should be as narrow as possible, blocking only
this connection (blocking entirely <target_address> seems to be overkill).
> I would add
>
> block in family inet4 proto tcp from <not_nice_host> to <target_address> port 443
>
> instead. Basically you want to drop all packets on that port from
> <not_nice_host> to <target_address> and you don't care if the connection
> is open or not.
> Generally I find I want to use stateful rules only to allow a reverse flow,
> and this isn't one of those times.
Ok, so basically (comparing it with my solution) you would not use
`stateful'. This makes sense.
> Another strategy, that works with ipfilter, is to have (pseudocode for example)
>
> block out log on wan from 10.0.0.IOT1 to any
> block out log on wan from 10.0.0.IOT1 to <unwanted-known-place>
> pass out on wan from 10.0.0.IOT1 to [exactly what I want to allow]
>
> With ipf, the rule is evaluated before nat.
I think that it would be before NAT even with npf.
> However, for block-all pass-some, you need to do it outbound, because
> you might want these devices to be able to do DNS or NTP to your router
> box, even if you don't want them to communicate externally in general.
This would be a very careful strategy. However, in this specific case I
don't want to block anything, so I prefer the "block-some" approach.
Another issue I'm struggling with is to block not a single IP, but a
custom bunch of IPs, so not a ip/subnet couple, but a range:
block in family inet4 proto tcp from <not_nice_host> to <first_IP_of_range>-<last_IP_of_range>
This gives a syntax error in npf. Also, I would like to use the
namespace, for example:
block in family inet4 proto tcp from <not_nice_host> to *.netbsd.org
But this gives error as well. I still don't know if this is just a
syntax error, or if npf does not support these two features at all.
If you dealt with this, let me know.
Thanks for your thorough message.
Rocky
Home |
Main Index |
Thread Index |
Old Index