ML
    • Recent
    • Categories
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Solved ZeroTier Flow Rules

    IT Discussion
    zerotier flow rules
    4
    15
    5.4k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • JaredBuschJ
      JaredBusch @black3dynamite
      last edited by

      @black3dynamite said in ZeroTier Flow Rules:

      Add "and" before "not ethertype arp" and "not ethertype ipv6"
      b33ccbac-6435-412a-b1a1-717e84d5f500-image.png

      Yes, I have that as it is the default rule set. The above was a typo when I redid a the default after breaking things..

      That is not my question though.

      FYI, this is the full default rule set with comments on a new ZT network.

      #
      # This is a default rule set that allows IPv4 and IPv6 traffic but otherwise
      # behaves like a standard Ethernet switch.
      #
      # Please keep in mind that ZeroTier versions prior to 1.2.0 do NOT support advanced
      # network rules.
      #
      # Since both senders and receivers enforce rules, you will get the following
      # behavior in a network with both old and new versions:
      #
      # (old: 1.1.14 and older, new: 1.2.0 and newer)
      #
      # old <--> old: No rules are honored.
      # old <--> new: Rules work but are only enforced by new side. Tags will NOT work, and
      #               capabilities will only work if assigned to the new side.
      # new <--> new: Full rules engine support including tags and capabilities.
      #
      # We recommend upgrading all your devices to 1.2.0 as soon as convenient. Version
      # 1.2.0 also includes a significantly improved software update mechanism that is
      # turned on by default on Mac and Windows. (Linux and mobile are typically kept up
      # to date using package/app management.)
      #
      
      #
      # Allow only IPv4, IPv4 ARP, and IPv6 Ethernet frames.
      #
      drop
      	not ethertype ipv4
      	and not ethertype arp
      	and not ethertype ipv6
      ;
      
      #
      # Uncomment to drop non-ZeroTier issued and managed IP addresses.
      #
      # This prevents IP spoofing but also blocks manual IP management at the OS level and
      # bridging unless special rules to exempt certain hosts or traffic are added before
      # this rule.
      #
      #drop
      #	not chr ipauth
      #;
      
      # Accept anything else. This is required since default is 'drop'.
      accept;
      
      1 Reply Last reply Reply Quote 0
      • M
        manxam
        last edited by

        This is strictly a guess by looking through their documentation as I do not have a ZT node here to test.

        drop                      # drop cannot be overridden by capabilities
          not ethertype ipv4      # frame is not ipv4
          and not ethertype arp   # AND is not ARP
          and not ethertype ipv6  # AND is not ipv6
        
        accept			  # but accept
          ipprotocol rdp	  # RDP (not sure if this is both TCP AND UDP)
        
        accept			  # and accept
          ipprotocol icmp     	  # ICMP
        
        accept;			  # This is required since default is 'drop'.
        
        black3dynamiteB 1 Reply Last reply Reply Quote 0
        • black3dynamiteB
          black3dynamite @manxam
          last edited by

          @manxam said in ZeroTier Flow Rules:

          This is strictly a guess by looking through their documentation as I do not have a ZT node here to test.

          drop                      # drop cannot be overridden by capabilities
            not ethertype ipv4      # frame is not ipv4
            and not ethertype arp   # AND is not ARP
            and not ethertype ipv6  # AND is not ipv6
          
          accept			  # but accept
            ipprotocol rdp	  # RDP (not sure if this is both TCP AND UDP)
          
          accept			  # and accept
            ipprotocol icmp     	  # ICMP
          
          accept;			  # This is required since default is 'drop'.
          

          Has soon as you add accept; those other accept rules isn't necessary.

          JaredBuschJ 1 Reply Last reply Reply Quote 0
          • JaredBuschJ
            JaredBusch @black3dynamite
            last edited by

            @black3dynamite said in ZeroTier Flow Rules:

            @manxam said in ZeroTier Flow Rules:

            This is strictly a guess by looking through their documentation as I do not have a ZT node here to test.

            drop                      # drop cannot be overridden by capabilities
              not ethertype ipv4      # frame is not ipv4
              and not ethertype arp   # AND is not ARP
              and not ethertype ipv6  # AND is not ipv6
            
            accept			  # but accept
              ipprotocol rdp	  # RDP (not sure if this is both TCP AND UDP)
            
            accept			  # and accept
              ipprotocol icmp     	  # ICMP
            
            accept;			  # This is required since default is 'drop'.
            

            Has soon as you add accept; those other accept rules isn't necessary.

            Most examples have a break rule before the final accept.

            1 Reply Last reply Reply Quote 0
            • M
              manxam
              last edited by manxam

              That runs counterintuitive to their site and confused me as well.
              They have a sample showing basic layout with the BLOCK at first, ACCEPT after and explain what they're allowing, and then at the end they have ACCEPT;

              They then go on to say that this blocks X, but allows Y. When, with that final ACCEPT, you'd think it would also allow Z.

              I dunno..

              EDIT : maybe I missed a "break"?

              1 Reply Last reply Reply Quote 0
              • M
                manxam
                last edited by

                I am curious to see what works for @JaredBusch as I could see this coming in handy very soon...

                1 Reply Last reply Reply Quote 0
                • black3dynamiteB
                  black3dynamite
                  last edited by black3dynamite

                  Here's what I have so far.

                  # Whitelist only IPv4 (/ARP) and IPv6 traffic and allow only ZeroTier-assigned IP addresses
                  drop                      # drop cannot be overridden by capabilities
                    not ethertype ipv4      # frame is not ipv4
                    and not ethertype arp   # AND is not ARP
                    and not ethertype ipv6  # AND is not ipv6
                  #  or not chr ipauth      # OR IP addresses are not authenticated (1.2.0+ only!)
                  ;
                  
                  # Allow SSH and RDP by allowing all TCP packets (including SYN/!ACK) to these ports
                  accept
                    ipprotocol tcp
                    and dport 22 or dport 3389
                  ;
                  
                  # Drop TCP SYN,!ACK packets (new connections) not explicitly whitelisted above
                  break                     # break can be overridden by a capability
                    chr tcp_syn             # TCP SYN (TCP flags will never match non-TCP packets)
                    and not chr tcp_ack     # AND not TCP ACK
                  ;
                  
                  # Accept other packets
                  accept;
                  
                  JaredBuschJ 1 Reply Last reply Reply Quote 0
                  • JaredBuschJ
                    JaredBusch @black3dynamite
                    last edited by

                    @black3dynamite need ICMP also. I thought that was

                    accept 
                      icmp 4 -1
                    ;
                    

                    but it did not work.
                    That or I broke something else at the time. Iw ill be back on this shortly myself.

                    black3dynamiteB 1 Reply Last reply Reply Quote 0
                    • black3dynamiteB
                      black3dynamite @JaredBusch
                      last edited by black3dynamite

                      @JaredBusch said in ZeroTier Flow Rules:

                      @black3dynamite need ICMP also. I thought that was

                      accept 
                        icmp 4 -1
                      ;
                      

                      but it did not work.
                      That or I broke something else at the time. Iw ill be back on this shortly myself.

                      I was still able to ping without adding icmp.

                      1 Reply Last reply Reply Quote 0
                      • black3dynamiteB
                        black3dynamite
                        last edited by

                        https://www.ibm.com/support/knowledgecenter/en/SS42VS_7.3.1/com.ibm.qradar.doc/c_DefAppCfg_guide_ICMP_intro.html

                        icmp 0 -1 and icmp 8 -1

                        JaredBuschJ 1 Reply Last reply Reply Quote 0
                        • JaredBuschJ
                          JaredBusch @black3dynamite
                          last edited by JaredBusch

                          @black3dynamite said in ZeroTier Flow Rules:

                          https://www.ibm.com/support/knowledgecenter/en/SS42VS_7.3.1/com.ibm.qradar.doc/c_DefAppCfg_guide_ICMP_intro.html

                          icmp 0 -1 and icmp 8 -1

                          ok I have RDP but no ping to a desktop.
                          but I can ssh and ping a server.
                          so likely my lack of ping is the windows firewall.

                          So all working.
                          without the icmp rule.

                          this looks all but identical to what I setup last night, but could not get working.
                          so I'm going with typo or something that was in the rules parser, but not right.

                          1 Reply Last reply Reply Quote 0
                          • JaredBuschJ
                            JaredBusch
                            last edited by

                            Here is my updated rule set that I use on my personal ZT network.

                            # Whitelist only IPv4 (/ARP) and IPv6 traffic and allow only ZeroTier-assigned IP addresses
                            drop                      # drop cannot be overridden by capabilities
                              not ethertype ipv4      # frame is not ipv4
                              and not ethertype arp   # AND is not ARP
                              and not ethertype ipv6  # AND is not ipv6
                            #  or not chr ipauth      # OR IP addresses are not authenticated (1.2.0+ only!)
                            ;
                            
                            # Allow SSH, SMTP, HTTP, HTTPS, and Cockpit by allowing all TCP packets (including SYN/!ACK) to these ports
                            accept
                              ipprotocol tcp
                              and dport 22 or dport 25 or dport 80 or dport 443 or dport 9090
                            ;
                            
                            # Drop TCP SYN,!ACK packets (new connections) not explicitly whitelisted above
                            break                     # break can be overridden by a capability
                              chr tcp_syn             # TCP SYN (TCP flags will never match non-TCP packets)
                              and not chr tcp_ack     # AND not TCP ACK
                            ;
                            
                            # Accept other packets
                            accept;
                            
                            1 Reply Last reply Reply Quote 2
                            • I
                              ICantIT
                              last edited by

                              Sorry about dragging this old topic back but, it is probably the most relevant to what I'm looking for.

                              I have been trying to get the ZeroTier FlowRules to work but must be doing something wrong. My ruleset is very close to what @JaredBusch has but, the ZeroTier nodes don't work as expected.

                              When I leave the final accept statement, ZeroTier passes all traffic. When I comment out that last accept all traffic stops.

                              # Allow only IPv4, IPv4 ARP
                              #
                              drop
                              	not ethertype ipv4
                              	and not ethertype arp
                              # Drop IPv6 Ethernet frames.
                              #	and not ethertype ipv6
                              ;
                              #
                              #
                              # Uncomment to drop non-ZeroTier issued and managed IP addresses.
                              #
                              # This prevents IP spoofing but also blocks manual IP management at the OS level and
                              # bridging unless special rules to exempt certain hosts or traffic are added before
                              # this rule.
                              #
                              #drop
                              #	not chr ipauth
                              #;
                              accept
                              	ipprotocol tcp
                              		and dport 80
                              ;
                              # Accept anything else. This is required since default is 'drop'.
                              accept;
                              

                              Any help on what I'm doing wrong will be greatly appreciated.

                              1 Reply Last reply Reply Quote 0
                              • 1 / 1
                              • First post
                                Last post