Open benjvfr opened 11 months ago
After further troubleshooting, here is what I found :
So for my use case :
It seems to be a bug.
Hello @benjvfr, this is the current behavior of network routes; there is no access control for routed networks.
The access control rule you created only affects traffic targeting the edge node.
We have plans to add support to access control for routed networks this quarter.
Hello, thank you for your answer.
Okay, I asked because in your documentation related to "Manage DNS in your network" it is indicated to add an ACL for UDP/53 to the routing peer, suggesting that ACLs can filter traffic by port/protocol to the private network.
In fact, any ACL can be added here, not specifically UDP/53 to routing peer : there must simply be an ACL authorizing some kind of connection to the routing peer (anything, can be: ICMP, HTTP...).
Hello @benjvfr, this is the current behavior of network routes; there is no access control for routed networks.
The access control rule you created only affects traffic targeting the edge node.
We have plans to add support to access control for routed networks this quarter.
Does it means that we could just do an acl like: src group_a -> dst 192.168.1.0/20 proto tcp port 22 action allow
where 192.168.1.0/24 is a network route
Could i also have an acl like src group_a -> dst 192.168.1.1/32 proto tcp port 22 action allow where 192.168.1.1/32 is only an ip under network route reachable tru network routes.
Thx
We have plans to add support to access control for routed networks this quarter.
Hi @mlsmaycon , any chance there has been progress on this? I really want to start using netbird at my org, but can't until we can lock down routed networks.
I did some additional experimentation with this. My initial main concern was being able to restrict what ports users could speak to on the routed network when they had access, however I think it is even more critical now.
If a connected peer routes a network, any client that has access to talk to that peer can pass traffic to the routed network, even if that client is not in any of the "distribution groups" for the routed network as long as:
To "manually" activate access to that routed network:
sudo ip route add <NETWORK/NETMASK> dev wt0 table netbird
sudo wg set wt0 peer <ROUTING_PEER_KEY> allowed-ips <EXISTING_ALLOWED_IPS>,<NETWORK/NETMASK>
This makes sense, because the Netbird documentation talks about "route distribution", and does not make any claims that it is a security boundary. However, I would expect many users would have a similar assumption as I did that there is some security checks preventing traffic being passed if the user's peer is not in the "distribution groups".
I am also affected by this.
From my findings, clients only can access peers behind the routing peer, if you have any ACL which allows some protocol like ICMP to the network group where the advertising node sits:
Hello @benjvfr, this is the current behavior of network routes; there is no access control for routed networks.
The access control rule you created only affects traffic targeting the edge node.
We have plans to add support to access control for routed networks this quarter.
I am curious on how you are tackling the routed network filtering. Are there any updates? Just looking into the current IPTables logic on routers, I understand that these iptable routes need to be updated with a more fine-grained rules.
Is that correct?
Thanks @mlsmaycon!
We are also waiting on an update on this as it's kind of a show stopper for us.
Same, we're currently testing Netbird and won't be able to deploy if network routes are not secured.
@mlsmaycon @braginini When will this PR https://github.com/netbirdio/netbird/pull/2100 be merged?
We plan it for the 0.30 release in the coming weeks.
@mlsmaycon ❤️
We currently use a subnet router and a firewall in between.
We announce routes without masquerading so we can use the Netbird static client IPs in firewall rules.
this has been released since 0.30.0
were you able to test it? You can now assign a Network Route ACL; the name you pic there will need to be in the destination section of the Policy you create.
this has been released since
0.30.0
were you able to test it? You can now assign a Network Route ACL; the name you pic there will need to be in the destination section of the Policy you create.
I see the network routes now as selectable objects in the policy page. But what happens if i would just create a policy having for example as destination 192.168.1.1/32 and NOT the whole 192.168.1.0/24 of a network routes ?
I've upgraded to 0.30.3
but cannot find the group tab to specify the access control group. This is on a self hosted server.
Did you also upgrade the dashboard? You need at least https://github.com/netbirdio/dashboard/releases/tag/v2.6.0
The docker compose file has image: netbirdio/dashboard:latest
. Should I use a different one?
# netbird_version_check.sh
MGMTCID=$(docker ps|grep management|awk '{print $1}')
if [[ -z $MGMTCID ]] ; then
echo No MGMT container found...
exit 1
fi
nbversion=$(docker inspect $MGMTCID |grep "org.opencontainers.image.version"|awk -F: '{print $2}')
echo Server is running Netbird MGMT version: $nbversion
DASHBOARDCID=$(docker ps|grep dashboard|awk '{print $1}')
if [[ -z $DASHBOARDCID ]] ; then
echo No MGMT container found...
exit 1
fi
nbversion=$(docker inspect $DASHBOARDCID |grep "org.opencontainers.image.version"|awk -F: '{print $2}')
echo Server is running Netbird Dashboard version: $nbversion
Server is running Netbird MGMT version: "0.30.3"
Server is running Netbird Dashboard version: "v2.6.1"
Check your version with this script.
Thanks for the script. The output was
Server is running Netbird MGMT version: "0.30.1"
Server is running Netbird Dashboard version: "v2.5.0"
Running docker compose pull management dashboard signal
and docker compose up -d --force-recreate management dashboard signal
upgrade changed it to.
Server is running Netbird MGMT version: "0.30.3"
Server is running Netbird Dashboard version: "v2.6.2"
Now I have the option to specify the Access Control Groups
and will test more.
Describe the problem When adding a network route with a routing peer, the ACL do not seems to apply. See below for the complete use case. (NetBird 0.25.2)
To Reproduce Steps to reproduce the behavior:
Add a routing peer named "edge-gw" (Docker) which is placed in the DMZ of the private network. The underlying network is configured to let this routing peer being able to route to a service (my-private-service) hosted in the private network at 10.50.0.4/32 (web service on TCP 443).
Tag the "edge-gw" routing peer with "Edge" tag.
In "Network Routes", click "Add route" :
In "Access Control" :
On a "dev-peer" machine, which belongs to the 'Developers" group :
Expected behavior If no ACL are enabled, traffic should not be forwarded to the private network via routing peer (even if route is distributed). As no ACL route exists for "Developers > Edge" on TCP 443, traffic should be dropped. This is not the case.
Screenshots
Network routes
ACL
Dev peer
Is this the normal behavior ? Or I misconfigured something ?