On 2026-04-02, Janne Johansson <[email protected]> wrote:
> Den ons 1 apr. 2026 kl 23:47 skrev <[email protected]>:
>> Hi all,
>> I am looking to run a process on my machine that I do not fully trust.
>> I would like to avoid the penalty cost of spinning a VM to run it, and would 
>> like instead to sandbox it.
>> As far as I know, `pledge` is nice to create a sandbox, but it's 
>> coarse-grained, it either allow access to all ips, or it allows no access at 
>> all.
>> I need to give this untrusted app network access, but to avoid it being a 
>> spyware/trojan horse, I'd like to restrict its network connection to a 
>> specific list of ips.
>> The idea I have for now is to create a user dedicated to it, and add an 
>> anchor in pf that filters for that user, and only allow that user to speak 
>> to that list of ip.
>> Is that a reasonable approach? Is there a better way to do that?
>
> For processes running on an obsd machine, PF supports matching on a
> specifik user, like the user _pbuild for ports which is not allowed to
> talk network at all.
>
> So make a table or a macro of the allowed destinations, allow any
> traffic matching this user to those destinations, and block all other
> traffic from this user that did not match the previous rule.
>
> See some examples in the pf.conf manpage:
> https://man.ifconfig.se/pf.conf.5#user
>
> Yours would be a bit more specific than the examples, but you should
> be able to get a hint from them at least.

Just be aware that this is only for tcp/udp, and also consider that
if it needs DNS, you'll need something fancy to avoid exfiltration via
DNS queries.




-- 
Please keep replies on the mailing list.

Reply via email to