ZeroTier 流规则:如何阻止没有特定标签的成员发起的所有连接?

问题描述 投票:0回答:1

我正在尝试在 ZeroTier 网络上设置流规则,其中仅允许某些端口,并且不允许未标记为“操作员”的成员在彼此之间发起连接。

我正在寻找的特定功能类型:

  • 操作员可以通过 SSH 连接到非操作员
  • 操作员可以通过 SSH 连接到另一个操作员
  • 非操作员无法通过 SSH 连接到操作员
  • 非操作员无法通过 SSH 连接到另一个非操作员

这是我到目前为止所拥有的:

tag operator
    id 0
    flag 1 yes
    default 0
;

# Drop traffic that isn't IPv4, ARP or IPv6
drop not ethertype ipv4 and not ethertype arp and not ethertype ipv6;

# Prevent IP spoofing
# NOTE: Blocks manual IP management at the OS level and bridging
drop not chr ipauth;

# Accept inbound connections on specific ports
accept dport 53   # DNS
accept dport 22   # SSH
accept dport 3389 # RDP

# Drop TCP SYN, !ACK packets (new connections) on other ports
break chr tcp_syn and not chr tcp_ack;

# Prevent non-operators from initiating connections
#break not tseq operator 1; # Doesn't work (not that this one seemed likely to work)

# Allow all other traffic
accept;

我尝试了许多不同的配置,但没有一个配置适用于我上面列出的所有情况。

我束手无策,不知道还能尝试什么。可能只是我的配置在其他地方遇到了另一个问题。

我将非常感谢任何有关这方面的帮助,因为我最近才开始学习如何编写流程规则。

提前谢谢您。

firewall
1个回答
0
投票

我 99% 确定我通过使用枚举并阅读了一些 TCP 连接来修复它。

tag device_type
  id 0
  enum 0 instrument
  enum 1 operator
  enum 2 superuser
;

drop
  not ethertype ipv4 and not ethertype arp and not ethertype ipv6
  or not chr ipauth # Prevent IP spoofing
  or tseq device_type instrument and chr tcp_syn and not chr tcp_ack # Drop TCP SYN,!ACK packets (new connections) from instruments
;

# Accept inbound connections on specific ports
accept
  ipprotocol tcp
  and dport 22   # SSH
  or dport 3389  # RDP
;

# Accept all connections from superusers
accept tseq device_type superuser;

# Drop TCP SYN,!ACK packets (new connections) on other ports
break chr tcp_syn and not chr tcp_ack;

accept;

我认为需要将规则放置在第一个

accept
之上。

我还删除了不必要的允许 DNS 端口条目并添加了超级用户枚举(因为为什么不呢)。

仪器仍然可以 ping 其他设备,但这完全没问题。

请随时就我如何改进这一点发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.