OASIS eXtensible Access Control Markup Language (XACML) TC

 View Only
Expand all | Collapse all

Groups - DLP-NAC profile uploaded

  • 1.  Groups - DLP-NAC profile uploaded

    Posted 03-19-2014 19:55
    Submitter's message All feedback received thus far has been incorporated. Please review. Volunteers needed to generate sample XACML policies for examples 4.1.2 to 4.2.2. Thanks -- Mr. John Tolbert Document Name : DLP-NAC profile Description Working draft 05. Download Latest Revision Public Download Link Submitter : Mr. John Tolbert Group : OASIS eXtensible Access Control Markup Language (XACML) TC Folder : Specifications and Working Drafts Date submitted : 2014-03-19 12:54:23


  • 2.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 11:22
    Hi, Why does the ipAddress-value data type have a network mask? Maybe it was discussed on a call when I was not present, and I am not a networking expert and might not understand what the intention was, but I tried to retrace the discussion on the list. If ipAddress-value is intended to represent a specific network endpoint, then it should not contain a mask, since masks are used to represent IP address ranges, right? Likewise, the matching functions which use a pattern, they should not be comparing the mask for straight equality, right? I read the intent of the matching functions to be used for checking whether an ipAddress-value is within the network segment denoted by the ipAddress-pattern. The value should be within the range of the pattern, so there should not be a check to see that the mask is equal, or actually, the value should not have a mask in the first place. Also, regarding the network match function, now it is defined as a strict equality function, but it could be useful to separate between an equals and a match , where the latter allows for one argument to be a subset of the other. And, did you consider the need of an ipAddress value equal function which also checks the port? BTW, the definition of ipAddress-value-equal says that Any portrange values in either argument SHALL be ignored , but an ipAddress-value does not have a portrange, it has a port. Best regards, Erik On 2014-03-19 20:54, John Tolbert wrote: Submitter's message All feedback received thus far has been incorporated. Please review. Volunteers needed to generate sample XACML policies for examples 4.1.2 to 4.2.2. Thanks -- Mr. John Tolbert Document Name : DLP-NAC profile Description Working draft 05. Download Latest Revision Public Download Link Submitter : Mr. John Tolbert Group : OASIS eXtensible Access Control Markup Language (XACML) TC Folder : Specifications and Working Drafts Date submitted : 2014-03-19 12:54:23


  • 3.  RE: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 15:24
    I touched on this and other issues I consider open in this email last November:   https://lists.oasis-open.org/archives/xacml/201311/msg00011.html   I left the mask as an option in the –value mostly because it is allowed in the current 3.0 datatype and also because I thought it was just possible that somebody would want to insist that two identical values with different masks not be considered equal. I don’t know if there is any legitimate way for this to occur. Clearly you could have a case where the subnet had been reconfigured and there was some old data around.   Note also that the ipAddress-network-match function needs a mask as input. Clearly two identical addresses with different masks may not match using this function.   As I said in the referenced email, I am open  to making changes related to any of the 8 issues I identified.   Hal   From: Erik Rissanen [mailto:erik@axiomatics.com] Sent: Thursday, March 20, 2014 7:22 AM To: xacml@lists.oasis-open.org Subject: Re: [xacml] Groups - DLP-NAC profile uploaded   Hi, Why does the ipAddress-value data type have a network mask? Maybe it was discussed on a call when I was not present, and I am not a networking expert and might not understand what the intention was, but I tried to retrace the discussion on the list. If ipAddress-value is intended to represent a specific network endpoint, then it should not contain a mask, since masks are used to represent IP address ranges, right? Likewise, the matching functions which use a pattern, they should not be comparing the mask for straight equality, right? I read the intent of the matching functions to be used for checking whether an ipAddress-value is within the network segment denoted by the ipAddress-pattern. The value should be within the range of the pattern, so there should not be a check to see that the mask is equal, or actually, the value should not have a mask in the first place. Also, regarding the network match function, now it is defined as a strict equality function, but it could be useful to separate between an "equals" and a "match", where the latter allows for one argument to be a subset of the other. And, did you consider the need of an ipAddress value equal function which also checks the port? BTW, the definition of ipAddress-value-equal says that "Any portrange values in either argument SHALL be ignored", but an ipAddress-value does not have a portrange, it has a port. Best regards, Erik On 2014-03-19 20:54, John Tolbert wrote: Submitter's message All feedback received thus far has been incorporated. Please review. Volunteers needed to generate sample XACML policies for examples 4.1.2 to 4.2.2. Thanks -- Mr. John Tolbert Document Name : DLP-NAC profile Description Working draft 05. Download Latest Revision Public Download Link Submitter : Mr. John Tolbert Group : OASIS eXtensible Access Control Markup Language (XACML) TC Folder : Specifications and Working Drafts Date submitted : 2014-03-19 12:54:23  


  • 4.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 15:54
    Hi Hal, Yes, I saw this email, but I did not understand the reasoning behind point 3, which is the motivation that the value will also contain a mask. It could be that I don't understand networking well enough, but it looks to me that the proposal (and the existing data types) mixes a few separate concepts. An IP address designates a network interface, which the network will route packets to. Some protocols over IP use ports. Examples of these are TCP and UDP. A combination of an IP address and a port designates a communication endpoint using one of these protocols. Network masks are used by routers to decide network segment boundaries, so they can forward a packet in the right direction. I guess these could be combined in different ways. For instance the IP and port could be separate attributes, or combined, like now in the profile. As I read the profile, I read the ipAddress-value the be intended to designate either a IP address, or a TCP/UDP (or other protocols which uses ports) endpoint. This should not contain a mask since it is a single designated IP. I think the old data type has the mask because it has served as both the value and pattern in one data type. The pattern type does need the mask, since the pattern type conceptually corresponds to a network segment. (BTW, the pattern type could potentially be generalized to not be limited to a single network segment like this. You could have bunch of network segments separated by commas, but I am not sure if that is needed for the intended use of this profile.) So, if I have 123.123.123.123/24 as the pattern, then 123.123.124.4 will not match because it is a different segment than what the pattern designates. However, if the pattern would have been 123.123.123.123/16, then it would match because it's within the 123.123.*.* segment, if I may use a made up notation. Best regards, Erik On 2014-03-20 16:23, Hal Lockhart wrote: I touched on this and other issues I consider open in this email last November:   https://lists.oasis-open.org/archives/xacml/201311/msg00011.html   I left the mask as an option in the –value mostly because it is allowed in the current 3.0 datatype and also because I thought it was just possible that somebody would want to insist that two identical values with different masks not be considered equal. I don’t know if there is any legitimate way for this to occur. Clearly you could have a case where the subnet had been reconfigured and there was some old data around.   Note also that the ipAddress-network-match function needs a mask as input. Clearly two identical addresses with different masks may not match using this function.   As I said in the referenced email, I am open  to making changes related to any of the 8 issues I identified.   Hal   From: Erik Rissanen [ mailto:erik@axiomatics.com ] Sent: Thursday, March 20, 2014 7:22 AM To: xacml@lists.oasis-open.org Subject: Re: [xacml] Groups - DLP-NAC profile uploaded   Hi, Why does the ipAddress-value data type have a network mask? Maybe it was discussed on a call when I was not present, and I am not a networking expert and might not understand what the intention was, but I tried to retrace the discussion on the list. If ipAddress-value is intended to represent a specific network endpoint, then it should not contain a mask, since masks are used to represent IP address ranges, right? Likewise, the matching functions which use a pattern, they should not be comparing the mask for straight equality, right? I read the intent of the matching functions to be used for checking whether an ipAddress-value is within the network segment denoted by the ipAddress-pattern. The value should be within the range of the pattern, so there should not be a check to see that the mask is equal, or actually, the value should not have a mask in the first place. Also, regarding the network match function, now it is defined as a strict equality function, but it could be useful to separate between an equals and a match , where the latter allows for one argument to be a subset of the other. And, did you consider the need of an ipAddress value equal function which also checks the port? BTW, the definition of ipAddress-value-equal says that Any portrange values in either argument SHALL be ignored , but an ipAddress-value does not have a portrange, it has a port. Best regards, Erik On 2014-03-19 20:54, John Tolbert wrote: Submitter's message All feedback received thus far has been incorporated. Please review. Volunteers needed to generate sample XACML policies for examples 4.1.2 to 4.2.2. Thanks -- Mr. John Tolbert Document Name : DLP-NAC profile Description Working draft 05. Download Latest Revision Public Download Link Submitter : Mr. John Tolbert Group : OASIS eXtensible Access Control Markup Language (XACML) TC Folder : Specifications and Working Drafts Date submitted : 2014-03-19 12:54:23  


  • 5.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 15:55
    On Mar 20, 2014, at 8:53 AM, Erik Rissanen < erik@axiomatics.com > wrote: An IP address designates a network interface, which the network will route packets to. You cannot route a packet without a mask. b


  • 6.  RE: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 16:40
    I admit to being a little rusty, but consulting my copy of Stevens, I believe the following is true.   This discussion only considers IP v4.   A specific IP address is assigned to an adapter on a host. From the value of the address you can determine whether it is of Class A, B or C. However, a network administrator can configure any network to treat part of the hostid field of the address (as defined by the Class) to be used as the subnet. The subnet can fall on a byte boundary or not. There is no way to tell what subnetting is being used merely by inspecting the IP address value. In principle it is possible to reconfigure the subnetting without changing the assigned IP addresses of the hosts on the network. (Nowadays clients use DHCP which provides the mask as well as the IP address at connection time, so admins only have to worry about the servers.)   In general, end (non-routing) nodes do not need to know what subnetting is in effect to send and receive messages, since everything comes and goes on the same adapter. However to determine if two hosts are on the same network you need to know the subnetting in use. An IP address assigned to a real adaptor on a real network will be subject to some particular subnet scheme, but an address which has merely been allocated for use by some organization may not.   I guess my view was to be conservative and allow all constructs which are not actually impossible, even though I can’t necessarily think of a usecase. The main justification I can see for what I have proposed is that in might detect certain configuration errors resulting from out of date information. However, I do think users will expect IP v4 addresses values to be able to contain an optional mask value even if we were to drop the network match function and otherwise ignore the mask.   Hal   From: Erik Rissanen [mailto:erik@axiomatics.com] Sent: Thursday, March 20, 2014 11:53 AM To: Hal Lockhart; xacml@lists.oasis-open.org Subject: Re: [xacml] Groups - DLP-NAC profile uploaded   Hi Hal, Yes, I saw this email, but I did not understand the reasoning behind point 3, which is the motivation that the value will also contain a mask. It could be that I don't understand networking well enough, but it looks to me that the proposal (and the existing data types) mixes a few separate concepts. An IP address designates a network interface, which the network will route packets to. Some protocols over IP use ports. Examples of these are TCP and UDP. A combination of an IP address and a port designates a communication endpoint using one of these protocols. Network masks are used by routers to decide network segment boundaries, so they can forward a packet in the right direction. I guess these could be combined in different ways. For instance the IP and port could be separate attributes, or combined, like now in the profile. As I read the profile, I read the ipAddress-value the be intended to designate either a IP address, or a TCP/UDP (or other protocols which uses ports) endpoint. This should not contain a mask since it is a single designated IP. I think the old data type has the mask because it has served as both the "value" and "pattern" in one data type. The "pattern" type does need the mask, since the pattern type conceptually corresponds to a network segment. (BTW, the pattern type could potentially be generalized to not be limited to a single network segment like this. You could have bunch of network segments separated by commas, but I am not sure if that is needed for the intended use of this profile.) So, if I have 123.123.123.123/24 as the pattern, then 123.123.124.4 will not match because it is a different segment than what the pattern designates. However, if the pattern would have been 123.123.123.123/16, then it would match because it's within the 123.123.*.* segment, if I may use a made up notation. Best regards, Erik On 2014-03-20 16:23, Hal Lockhart wrote: I touched on this and other issues I consider open in this email last November:   https://lists.oasis-open.org/archives/xacml/201311/msg00011.html   I left the mask as an option in the –value mostly because it is allowed in the current 3.0 datatype and also because I thought it was just possible that somebody would want to insist that two identical values with different masks not be considered equal. I don’t know if there is any legitimate way for this to occur. Clearly you could have a case where the subnet had been reconfigured and there was some old data around.   Note also that the ipAddress-network-match function needs a mask as input. Clearly two identical addresses with different masks may not match using this function.   As I said in the referenced email, I am open  to making changes related to any of the 8 issues I identified.   Hal   From: Erik Rissanen [ mailto:erik@axiomatics.com ] Sent: Thursday, March 20, 2014 7:22 AM To: xacml@lists.oasis-open.org Subject: Re: [xacml] Groups - DLP-NAC profile uploaded   Hi, Why does the ipAddress-value data type have a network mask? Maybe it was discussed on a call when I was not present, and I am not a networking expert and might not understand what the intention was, but I tried to retrace the discussion on the list. If ipAddress-value is intended to represent a specific network endpoint, then it should not contain a mask, since masks are used to represent IP address ranges, right? Likewise, the matching functions which use a pattern, they should not be comparing the mask for straight equality, right? I read the intent of the matching functions to be used for checking whether an ipAddress-value is within the network segment denoted by the ipAddress-pattern. The value should be within the range of the pattern, so there should not be a check to see that the mask is equal, or actually, the value should not have a mask in the first place. Also, regarding the network match function, now it is defined as a strict equality function, but it could be useful to separate between an "equals" and a "match", where the latter allows for one argument to be a subset of the other. And, did you consider the need of an ipAddress value equal function which also checks the port? BTW, the definition of ipAddress-value-equal says that "Any portrange values in either argument SHALL be ignored", but an ipAddress-value does not have a portrange, it has a port. Best regards, Erik On 2014-03-19 20:54, John Tolbert wrote: Submitter's message All feedback received thus far has been incorporated. Please review. Volunteers needed to generate sample XACML policies for examples 4.1.2 to 4.2.2. Thanks -- Mr. John Tolbert Document Name : DLP-NAC profile Description Working draft 05. Download Latest Revision Public Download Link Submitter : Mr. John Tolbert Group : OASIS eXtensible Access Control Markup Language (XACML) TC Folder : Specifications and Working Drafts Date submitted : 2014-03-19 12:54:23    


  • 7.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 15:51
    On Mar 20, 2014, at 4:21 AM, Erik Rissanen <erik@axiomatics.com> wrote: > Hi, > > Why does the ipAddress-value data type have a network mask? A mask of /32 represents an "end point" using CIDR notation. This is commonly used in router or firewall rule/policy expression. > Maybe it was discussed on a call when I was not present, and I am not a networking expert and might not understand what the intention was, but I tried to retrace the discussion on the list. If ipAddress-value is intended to represent a specific network endpoint, then it should not contain a mask, since masks are used to represent IP address ranges, right? Using CIDR notation on an IP address is the more formal expression. > And, did you consider the need of an ipAddress value equal function which also checks the port? BTW, the definition of ipAddress-value-equal says that "Any portrange values in either argument SHALL be ignored", but an ipAddress-value does not have a portrange, it has a port. Yes. I was not successful in making the case for it sufficiently. I believe this is a very useful extension of this logic. I don't think there is a definitive reference for how port/portranges are described with respect to IP addresses. There are some notational conventions (which we adopted in the Profile), but I don't think anyone was able to identify an RFC specification on how it is to officially be expressed. Based on that, a portrange was also deemed "valid" an extension to IP address for our purposes. If we were to pursue the port matching concept I would offer that the best way to do it is via portrange matching, extending your equals vs. match concept. All ports references would be a range. Therefore a single port would be expressed as a range of one port (e.g. "8000-8000"). Personally, I would express this as upperPort and lowerPort attributes in XML, pulling port notation away from the IP address value completely, thus keeping the matching function logic in tact (sans the need to pare port off). I would further suggest that we make port mandatory and allow for a wildcard/keyword value to represent ports 1-65535 for completeness. b


  • 8.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 16:00
    Thanks Bill, That clarifies things. So what you are saying is that what we usually type in as single IP, say 123.123.123.123, is actually shorthand for the actual meaning, 123.123.123.123/32? Does that mean that all instances of the ipAddress-value data type must have a mask of 32 (for IPv4), if they have the mask specified? Regarding when I said "... but an ipAddress-value does not have a portrange, it has a port", I was referring to a simple typo in the spec. It should say "Any _port_ values in either argument SHALL be ignored" Best regards, Erik On 2014-03-20 16:51, Bill Parducci wrote: On Mar 20, 2014, at 4:21 AM, Erik Rissanen <erik@axiomatics.com> wrote: Hi, Why does the ipAddress-value data type have a network mask? A mask of /32 represents an "end point" using CIDR notation. This is commonly used in router or firewall rule/policy expression. Maybe it was discussed on a call when I was not present, and I am not a networking expert and might not understand what the intention was, but I tried to retrace the discussion on the list. If ipAddress-value is intended to represent a specific network endpoint, then it should not contain a mask, since masks are used to represent IP address ranges, right? Using CIDR notation on an IP address is the more formal expression. And, did you consider the need of an ipAddress value equal function which also checks the port? BTW, the definition of ipAddress-value-equal says that "Any portrange values in either argument SHALL be ignored", but an ipAddress-value does not have a portrange, it has a port. Yes. I was not successful in making the case for it sufficiently. I believe this is a very useful extension of this logic. I don't think there is a definitive reference for how port/portranges are described with respect to IP addresses. There are some notational conventions (which we adopted in the Profile), but I don't think anyone was able to identify an RFC specification on how it is to officially be expressed. Based on that, a portrange was also deemed "valid" an extension to IP address for our purposes. If we were to pursue the port matching concept I would offer that the best way to do it is via portrange matching, extending your equals vs. match concept. All ports references would be a range. Therefore a single port would be expressed as a range of one port (e.g. "8000-8000"). Personally, I would express this as upperPort and lowerPort attributes in XML, pulling port notation away from the IP address value completely, thus keeping the matching function logic in tact (sans the need to pare port off). I would further suggest that we make port mandatory and allow for a wildcard/keyword value to represent ports 1-65535 for completeness. b


  • 9.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 16:24
    On Mar 20, 2014, at 8:59 AM, Erik Rissanen <erik@axiomatics.com> wrote: > Thanks Bill, > > That clarifies things. So what you are saying is that what we usually type in as single IP, say 123.123.123.123, is actually shorthand for the actual meaning, 123.123.123.123/32? Pretty much. Every routing device/firewall I have been exposed to is rather picky about this :) > Does that mean that all instances of the ipAddress-value data type must have a mask of 32 (for IPv4), if they have the mask specified? That is my understanding. Given the sensitive nature of our space I believe that we should be as unambiguous as possible with this notation. While the two of us can agree upon what "192.168.1.1" means casually, there are literally millions of instances of that IP address out there and the only way to precisely define it is via a route from the current context (network). "/32" tells the router: "look for 192.168.1.1 HERE, do NOT explore beyond this subnet (make an arp request ONLY)". Your workstation thinks of its IP address the same way, it will not reach out to the router if [IP Address] is bound to its card because it considers locally bound IPs as /32 "routes" (and its local stack is a "network", but I digress :). > Regarding when I said "... but an ipAddress-value does not have a portrange, it has a port", I was referring to a simple typo in the spec. It should say "Any _port_ values in either argument SHALL be ignored" Ah, got it. I still like your idea of port range inclusion and matching :) b


  • 10.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 16:25
    On 2014-03-20 17:24, Bill Parducci wrote: On Mar 20, 2014, at 8:59 AM, Erik Rissanen <erik@axiomatics.com> wrote: Thanks Bill, That clarifies things. So what you are saying is that what we usually type in as single IP, say 123.123.123.123, is actually shorthand for the actual meaning, 123.123.123.123/32? Pretty much. Every routing device/firewall I have been exposed to is rather picky about this :) Does that mean that all instances of the ipAddress-value data type must have a mask of 32 (for IPv4), if they have the mask specified? That is my understanding. Given the sensitive nature of our space I believe that we should be as unambiguous as possible with this notation. While the two of us can agree upon what "192.168.1.1" means casually, there are literally millions of instances of that IP address out there and the only way to precisely define it is via a route from the current context (network). "/32" tells the router: "look for 192.168.1.1 HERE, do NOT explore beyond this subnet (make an arp request ONLY)". Your workstation thinks of its IP address the same way, it will not reach out to the router if [IP Address] is bound to its card because it considers locally bound IPs as /32 "routes" (and its local stack is a "network", but I digress :). Ok, but then there is something else which is wrong because the ipAddress-endpoint-match function says "If the first argument contains a mask, the second SHALL also contain a mask with the same value". This implies that if this function is to be useful, then masks must always be /32, even for the pattern data type. I doubt that was what intended. I guess it's the match function definition which is wrong. Presumably it should say that the mask must be equal or greater in value. Regarding when I said "... but an ipAddress-value does not have a portrange, it has a port", I was referring to a simple typo in the spec. It should say "Any _port_ values in either argument SHALL be ignored" Ah, got it. I still like your idea of port range inclusion and matching :) b


  • 11.  RE: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 20:26
    First of all, I don't believe a non-routing host needs to know the mask to send messages. It just puts them out on the adapter (LAN). The Gateway (router) on the LAN is supposed to forward the message if required, based on its knowledge of the subnetting. Second, IP Addresses in XACML may refer to any system, including a Gateway (router), therefore the subnetting may be relevant and there should be some way to specify it. Hal >


  • 12.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-20-2014 20:35
    On Mar 20, 2014, at 1:25 PM, Hal Lockhart <hal.lockhart@oracle.com> wrote: > First of all, I don't believe a non-routing host needs to know the mask to send messages. It just puts them out on the adapter (LAN). The Gateway (router) on the LAN is supposed to forward the message if required, based on its knowledge of the subnetting. The "gateway" is the first hop in the route. Do `netstat -nr` on your workstation (or whatever Windows uses if you have that) to verify. This is why the "gateway" is also referred to as the "Default Route". The workstation will not converse with the Gateway if the destination IP address is within the range of the bound IP's netmask. In that case it will issue an arp request and craft a packet using the MAC address of the responding device. b > > Hal > >>


  • 13.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-21-2014 08:00
    Based on what I heard on the call yesterday, and Bill's comments in this thread, there are two concepts which matter to the use cases we are talking about in the profile: 1. The ip endpoint of a some entity (like the subject or the resource) 2. The subnet of the said entity. The former is an IP address with a netmask of /32 (which is commonly not spelled out in consumer/office grade user interfaces). The latter is an IP address with a netmask which is less than /32. Shouldn't these be different XACML attributes? That would solve the ambiguity regarding the meaning of the netmask. For instance, you could have a request like this: Subject subject-ip-address = 123.123.123.123/32 subject-subnet = 123.123.0.0/16 Resource resource-ip-address = 123.123.124.54/32 resource-subnet = 123.123.0.0/16 To write a policy which permits the access if the subject and resource are on the same subnet, you would match the subject-subnet and resource-subnet attributes. Or perhaps the subject-ip-address against the resource-subnet. You would not be matching the subject-ip-address with the resource-ip-address because they don't contain the required information. (Unless we change the meaning of the netmask in the ipAddress-value data type to mean the netmask of the subnet the ip is part of, but that is not consistent with the use of netmask /32 in firewalls, etc, as described by Bill.) Bill, do I understand this correctly? Best regards, Erik On 2014-03-20 21:35, Bill Parducci wrote: On Mar 20, 2014, at 1:25 PM, Hal Lockhart <hal.lockhart@oracle.com> wrote: First of all, I don't believe a non-routing host needs to know the mask to send messages. It just puts them out on the adapter (LAN). The Gateway (router) on the LAN is supposed to forward the message if required, based on its knowledge of the subnetting. The "gateway" is the first hop in the route. Do `netstat -nr` on your workstation (or whatever Windows uses if you have that) to verify. This is why the "gateway" is also referred to as the "Default Route". The workstation will not converse with the Gateway if the destination IP address is within the range of the bound IP's netmask. In that case it will issue an arp request and craft a packet using the MAC address of the responding device. b Hal


  • 14.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-21-2014 19:40
    Yes, this looks correct to me. I personally do not like the idea of writing a policy that uses the concept of the "same subnet" because there are some interesting artifacts associated with private addressing, but if we wish to allow for that sort of thing then I support your proposal with a small tweak (after a long winded rumination--I would like to capture this should we revisit in the future)... As we touched on during the call, when private addresses are involved an address such as subject-ip-address = 10.123.123.123/32 subject-subnet = 10.123.0.0/16 ...it may describe any number of different and unrelated devices that match both the subnet and ip address. The case could be make that this is true for IP address so policy generation/evaluation needs to mindful of this. My concern is that the IP address is known by the PEP by inspecting the packet *anywhere*, while the subnet that the device is bound to is only known by the sending device (or at best a device residing on the same subnet as that device). the device bound to 10.10.123.123.123 may be configured to be part of the 10.0.0.0/8, 10.123.0.0/16, 10.123.123.0/24... subnets in reality, but the value represented in the policy is representational only; it doesn't necessarily reflect how that device interacts with the world. This is not necessarily a bad thing--policies are likely to be based upon ranges of IPs defined within an organization--we just need to be aware of this divergence. Stated another way, there is no way to know the true subnet a device is bound to by inspecting a packet that is not on a network local to the device (shared subnet). Therefore, the value represented in the policy is not truly the subnet the device is bound to but rather an address range that it is a part of by definition. One possible way to work through this is to consider the following syntax: subject-ip-address = 10.123.123.123/32 subject-ip-address-range = 10.123.0.0/16 Assuming we are talking about a server, the policy thinks of the server as 10.123.123.123/32. The policy also thinks of the server as being a part of 10.123.0.0/16. However, the server may actually be bound to the network (TCP/IP) as 10.123.123.123/24 for routing purposes. For the purposes of the policy evaluation we frankly don't care that the server is physically bound to the 10.123.123.0/24 network. Evaluation ONLY occurs against those values that are in the policy, one as a Subject and one as a "Subject group" (for lack of a better term). Or, to think of it one other way, subject-ip-address-range is just a bag of contiguous IPs and has nothing to do with the routing behavior of the subject device (which is what I really think we should aim for here. Routing concepts are what I think have been confusing the conversation. I think we can separate them out to our benefit ;) This same logic should apply resources. Does this make sense? b On Mar 21, 2014, at 1:00 AM, Erik Rissanen <erik@axiomatics.com> wrote: > Based on what I heard on the call yesterday, and Bill's comments in this thread, there are two concepts which matter to the use cases we are talking about in the profile: > > 1. The ip endpoint of a some entity (like the subject or the resource) > 2. The subnet of the said entity. > > The former is an IP address with a netmask of /32 (which is commonly not spelled out in consumer/office grade user interfaces). > > The latter is an IP address with a netmask which is less than /32. > > Shouldn't these be different XACML attributes? That would solve the ambiguity regarding the meaning of the netmask. > > For instance, you could have a request like this: > > Subject > subject-ip-address = 123.123.123.123/32 > subject-subnet = 123.123.0.0/16 > Resource > resource-ip-address = 123.123.124.54/32 > resource-subnet = 123.123.0.0/16 > > To write a policy which permits the access if the subject and resource are on the same subnet, you would match the subject-subnet and resource-subnet attributes. Or perhaps the subject-ip-address against the resource-subnet. > > You would not be matching the subject-ip-address with the resource-ip-address because they don't contain the required information. (Unless we change the meaning of the netmask in the ipAddress-value data type to mean the netmask of the subnet the ip is part of, but that is not consistent with the use of netmask /32 in firewalls, etc, as described by Bill.) > > Bill, do I understand this correctly? > > Best regards, > Erik > > > > On 2014-03-20 21:35, Bill Parducci wrote: >> On Mar 20, 2014, at 1:25 PM, Hal Lockhart <hal.lockhart@oracle.com> wrote: >> >>> First of all, I don't believe a non-routing host needs to know the mask to send messages. It just puts them out on the adapter (LAN). The Gateway (router) on the LAN is supposed to forward the message if required, based on its knowledge of the subnetting. >> The "gateway" is the first hop in the route. Do `netstat -nr` on your workstation (or whatever Windows uses if you have that) to verify. This is why the "gateway" is also referred to as the "Default Route". The workstation will not converse with the Gateway if the destination IP address is within the range of the bound IP's netmask. In that case it will issue an arp request and craft a packet using the MAC address of the responding device. >> >> b >> >> >> >>> Hal >>> >>>>


  • 15.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-24-2014 07:39
    Hi Bill, Yes, it makes sense to me. But it opens the question, if subnets cannot be reliably known, and most people in fact want to base their policies on arbitrary IP ranges, which are unrelated to physical subnets, should the ipAddress-pattern data type be based on subnets like it is now? Shouldn't it instead be some other form of pattern matching, allowing arbitrary ranges? Like "10.123.123.[10-14,19]"? Best regards, Erik On 2014-03-21 20:40, Bill Parducci wrote: Yes, this looks correct to me. I personally do not like the idea of writing a policy that uses the concept of the "same subnet" because there are some interesting artifacts associated with private addressing, but if we wish to allow for that sort of thing then I support your proposal with a small tweak (after a long winded rumination--I would like to capture this should we revisit in the future)... As we touched on during the call, when private addresses are involved an address such as subject-ip-address = 10.123.123.123/32 subject-subnet = 10.123.0.0/16 ...it may describe any number of different and unrelated devices that match both the subnet and ip address. The case could be make that this is true for IP address so policy generation/evaluation needs to mindful of this. My concern is that the IP address is known by the PEP by inspecting the packet *anywhere*, while the subnet that the device is bound to is only known by the sending device (or at best a device residing on the same subnet as that device). the device bound to 10.10.123.123.123 may be configured to be part of the 10.0.0.0/8, 10.123.0.0/16, 10.123.123.0/24... subnets in reality, but the value represented in the policy is representational only; it doesn't necessarily reflect how that device interacts with the world. This is not necessarily a bad thing--policies are likely to be based upon ranges of IPs defined within an organization--we just need to be aware of this divergence. Stated another way, there is no way to know the true subnet a device is bound to by inspecting a packet that is not on a network local to the device (shared subnet). Therefore, the value represented in the policy is not truly the subnet the device is bound to but rather an address range that it is a part of by definition. One possible way to work through this is to consider the following syntax: subject-ip-address = 10.123.123.123/32 subject-ip-address-range = 10.123.0.0/16 Assuming we are talking about a server, the policy thinks of the server as 10.123.123.123/32. The policy also thinks of the server as being a part of 10.123.0.0/16. However, the server may actually be bound to the network (TCP/IP) as 10.123.123.123/24 for routing purposes. For the purposes of the policy evaluation we frankly don't care that the server is physically bound to the 10.123.123.0/24 network. Evaluation ONLY occurs against those values that are in the policy, one as a Subject and one as a "Subject group" (for lack of a better term). Or, to think of it one other way, subject-ip-address-range is just a bag of contiguous IPs and has nothing to do with the routing behavior of the subject device (which is what I really think we should aim for here. Routing concepts are what I think have been confusing the conversation. I think we can separate them out to our benefit ;) This same logic should apply resources. Does this make sense? b On Mar 21, 2014, at 1:00 AM, Erik Rissanen <erik@axiomatics.com> wrote: Based on what I heard on the call yesterday, and Bill's comments in this thread, there are two concepts which matter to the use cases we are talking about in the profile: 1. The ip endpoint of a some entity (like the subject or the resource) 2. The subnet of the said entity. The former is an IP address with a netmask of /32 (which is commonly not spelled out in consumer/office grade user interfaces). The latter is an IP address with a netmask which is less than /32. Shouldn't these be different XACML attributes? That would solve the ambiguity regarding the meaning of the netmask. For instance, you could have a request like this: Subject subject-ip-address = 123.123.123.123/32 subject-subnet = 123.123.0.0/16 Resource resource-ip-address = 123.123.124.54/32 resource-subnet = 123.123.0.0/16 To write a policy which permits the access if the subject and resource are on the same subnet, you would match the subject-subnet and resource-subnet attributes. Or perhaps the subject-ip-address against the resource-subnet. You would not be matching the subject-ip-address with the resource-ip-address because they don't contain the required information. (Unless we change the meaning of the netmask in the ipAddress-value data type to mean the netmask of the subnet the ip is part of, but that is not consistent with the use of netmask /32 in firewalls, etc, as described by Bill.) Bill, do I understand this correctly? Best regards, Erik On 2014-03-20 21:35, Bill Parducci wrote: On Mar 20, 2014, at 1:25 PM, Hal Lockhart <hal.lockhart@oracle.com> wrote: First of all, I don't believe a non-routing host needs to know the mask to send messages. It just puts them out on the adapter (LAN). The Gateway (router) on the LAN is supposed to forward the message if required, based on its knowledge of the subnetting. The "gateway" is the first hop in the route. Do `netstat -nr` on your workstation (or whatever Windows uses if you have that) to verify. This is why the "gateway" is also referred to as the "Default Route". The workstation will not converse with the Gateway if the destination IP address is within the range of the bound IP's netmask. In that case it will issue an arp request and craft a packet using the MAC address of the responding device. b Hal


  • 16.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-24-2014 16:55
    That is a more flexible option, although it will take a fair amount of wording to describe how to match multi-octet ranges I suspect. Multi-octet would be expressed similarly I assume? (e.g. 10.123.[19-20].[10-14,19]) b On Mar 24, 2014, at 12:39 AM, Erik Rissanen <erik@axiomatics.com> wrote: > Hi Bill, > > Yes, it makes sense to me. > > But it opens the question, if subnets cannot be reliably known, and most people in fact want to base their policies on arbitrary IP ranges, which are unrelated to physical subnets, should the ipAddress-pattern data type be based on subnets like it is now? Shouldn't it instead be some other form of pattern matching, allowing arbitrary ranges? Like "10.123.123.[10-14,19]"? > > Best regards, > Erik > > > On 2014-03-21 20:40, Bill Parducci wrote: >> Yes, this looks correct to me. I personally do not like the idea of writing a policy that uses the concept of the "same subnet" because there are some interesting artifacts associated with private addressing, but if we wish to allow for that sort of thing then I support your proposal with a small tweak (after a long winded rumination--I would like to capture this should we revisit in the future)... >> >> As we touched on during the call, when private addresses are involved an address such as >> >> subject-ip-address = 10.123.123.123/32 >> subject-subnet = 10.123.0.0/16 >> >> ...it may describe any number of different and unrelated devices that match both the subnet and ip address. The case could be make that this is true for IP address so policy generation/evaluation needs to mindful of this. My concern is that the IP address is known by the PEP by inspecting the packet *anywhere*, while the subnet that the device is bound to is only known by the sending device (or at best a device residing on the same subnet as that device). >> >> the device bound to 10.10.123.123.123 may be configured to be part of the 10.0.0.0/8, 10.123.0.0/16, 10.123.123.0/24... subnets in reality, but the value represented in the policy is representational only; it doesn't necessarily reflect how that device interacts with the world. This is not necessarily a bad thing--policies are likely to be based upon ranges of IPs defined within an organization--we just need to be aware of this divergence. >> >> Stated another way, there is no way to know the true subnet a device is bound to by inspecting a packet that is not on a network local to the device (shared subnet). Therefore, the value represented in the policy is not truly the subnet the device is bound to but rather an address range that it is a part of by definition. One possible way to work through this is to consider the following syntax: >> >> subject-ip-address = 10.123.123.123/32 >> subject-ip-address-range = 10.123.0.0/16 >> >> Assuming we are talking about a server, the policy thinks of the server as 10.123.123.123/32. The policy also thinks of the server as being a part of 10.123.0.0/16. However, the server may actually be bound to the network (TCP/IP) as 10.123.123.123/24 for routing purposes. For the purposes of the policy evaluation we frankly don't care that the server is physically bound to the 10.123.123.0/24 network. Evaluation ONLY occurs against those values that are in the policy, one as a Subject and one as a "Subject group" (for lack of a better term). Or, to think of it one other way, subject-ip-address-range is just a bag of contiguous IPs and has nothing to do with the routing behavior of the subject device (which is what I really think we should aim for here. Routing concepts are what I think have been confusing the conversation. I think we can separate them out to our benefit ;) This same logic should apply resources. >> >> Does this make sense? >> >> b >> >> On Mar 21, 2014, at 1:00 AM, Erik Rissanen <erik@axiomatics.com> wrote: >> >>> Based on what I heard on the call yesterday, and Bill's comments in this thread, there are two concepts which matter to the use cases we are talking about in the profile: >>> >>> 1. The ip endpoint of a some entity (like the subject or the resource) >>> 2. The subnet of the said entity. >>> >>> The former is an IP address with a netmask of /32 (which is commonly not spelled out in consumer/office grade user interfaces). >>> >>> The latter is an IP address with a netmask which is less than /32. >>> >>> Shouldn't these be different XACML attributes? That would solve the ambiguity regarding the meaning of the netmask. >>> >>> For instance, you could have a request like this: >>> >>> Subject >>> subject-ip-address = 123.123.123.123/32 >>> subject-subnet = 123.123.0.0/16 >>> Resource >>> resource-ip-address = 123.123.124.54/32 >>> resource-subnet = 123.123.0.0/16 >>> >>> To write a policy which permits the access if the subject and resource are on the same subnet, you would match the subject-subnet and resource-subnet attributes. Or perhaps the subject-ip-address against the resource-subnet. >>> >>> You would not be matching the subject-ip-address with the resource-ip-address because they don't contain the required information. (Unless we change the meaning of the netmask in the ipAddress-value data type to mean the netmask of the subnet the ip is part of, but that is not consistent with the use of netmask /32 in firewalls, etc, as described by Bill.) >>> >>> Bill, do I understand this correctly? >>> >>> Best regards, >>> Erik >>> >>> >>> >>> On 2014-03-20 21:35, Bill Parducci wrote: >>>> On Mar 20, 2014, at 1:25 PM, Hal Lockhart <hal.lockhart@oracle.com> wrote: >>>> >>>>> First of all, I don't believe a non-routing host needs to know the mask to send messages. It just puts them out on the adapter (LAN). The Gateway (router) on the LAN is supposed to forward the message if required, based on its knowledge of the subnetting. >>>> The "gateway" is the first hop in the route. Do `netstat -nr` on your workstation (or whatever Windows uses if you have that) to verify. This is why the "gateway" is also referred to as the "Default Route". The workstation will not converse with the Gateway if the destination IP address is within the range of the bound IP's netmask. In that case it will issue an arp request and craft a packet using the MAC address of the responding device. >>>> >>>> b >>>> >>>> >>>> >>>>> Hal >>>>> >>>>>>


  • 17.  RE: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-25-2014 14:19
    All of this more complex matching can be done using existing functions by converting the address to a string and using a regex (or other string functions) against it. I suggest we stick to the most basic and clearly useful functions. I still want to look a use cases in terms of 1) location of PEP and 2) type of attribute the IP address is and 3) source of the address information, particularly the mask. Here is my list: 1. Web or App Server, Firewall, Network access point 2. Subject, Resource, Environment (is this really just subject?) 3. Packet Inspection, Various containers (Servlet, JSP, EE, .Net), OS Primitives What Have I missed? Hal >


  • 18.  Re: [xacml] Groups - DLP-NAC profile uploaded

    Posted 03-25-2014 15:39
    If the goal here is to make things as simple as possible then I suggest we simply limit it to the following for *ranges* (the use of the term "subnet" I think is the root of some of our confusion) and ports: IpAddressRangeStart IpAddressRangeEnd IpPortRangeStart IpPortRangeEnd I suggest IpAddressRangeStart and IpAddressRangeEnd are mandatory, while IpPortRangeStart and IpPortRangeEnd are optional as a pair. The syntax is the same for ranges and single IPs ("range of 1"). Netmask is unknowable outside of the subnet local to the requesting device (even then it is only a decent assumption). One hop over a router and there is nothing to work with beyond IP address, port and previous hops (which requires a lookup). The netmask use case then pretty much distills down to code running on the machine bound to the network, evaluating other processes on that same machine. Maybe some can point to it, but I can't think of any other situation where the netmask is truly known. Ranges on the other hand make perfect sense and are generally what you see in practice for things like webservers, etc. Here are some examples of what I think will meet most of our needs. Netmask could always be added as an optional value should we determine there is a need for it. Example 1 (range): IpAddressRangeStart = 10.10.0.0 IpAddressRangeEnd = 10.10.10.255 IpPortRangeStart = IpPortRangeEnd = match: All addresses between and including 10.10.0.0 and 10.10.10.255. Port is not evaluated so ALL ports "match". Example 2 (single IP): IpAddressRangeStart = 10.10.0.1 IpAddressRangeEnd = 10.10.0.1 IpPortRangeStart = IpPortRangeEnd = match: only 10.0.0.1 Example 3 (range, with port): IpAddressRangeStart = 10.10.0.0 IpAddressRangeEnd = 10.10.10.255 IpPortRangeStart = 8000 IpPortRangeEnd = 8000 match: All addresses between and including 10.10.0.0 and 10.10.10.255, using port 8000 Example 4 (range, with port INVALID): IpAddressRangeStart = 10.10.0.0 IpAddressRangeEnd = 10.10.10.255 IpPortRangeStart = 8000 IpPortRangeEnd = IF either port value is provided, BOTH must be stated. This is what I meant by "optional pair". The mechanics for evaluating this are consistent and could be handled by a single matching function. b On Mar 25, 2014, at 7:19 AM, Hal Lockhart <hal.lockhart@oracle.com> wrote: > All of this more complex matching can be done using existing functions by converting the address to a string and using a regex (or other string functions) against it. I suggest we stick to the most basic and clearly useful functions. > > I still want to look a use cases in terms of 1) location of PEP and 2) type of attribute the IP address is and 3) source of the address information, particularly the mask. > > Here is my list: > > 1. Web or App Server, Firewall, Network access point > 2. Subject, Resource, Environment (is this really just subject?) > 3. Packet Inspection, Various containers (Servlet, JSP, EE, .Net), OS Primitives > > What Have I missed? > > Hal > >>


  • 19.  IP Address types and functions, was: RE: [xacml] Groups - DLP-NAC profile uploaded

    Posted 05-29-2014 19:41
    This thread has a lot of good discussion, but it is not clear to me exactly what the consensus is. Before I update the DLP-NAC Profile, let me try to state what I think is agreed and what I think is missing. 1. Fix typo in definition of the ipAddress-value-equal function (2.1.3): Change: (Any portrange values in either argument SHALL be ignored.) To: (Any port values in either argument SHALL be ignored.) 2. Because network mask cannot reliably determined and/or may not be that useful we should drop the network-match function. Comment: My original idea here was that it is common to limit actions to the same subnet (or rarely to different subnets). The reasoning is that routing subnets frequently correspond to physical divisions of the network, such as a building or a floor. Obviously this can be done by specifying ranges, but I was hoping that getting the mask from the network would be a way to make a policy remain valid in spite of minor minor network reconfigurations in a way that hardwiring the address range into a policy would not. In principle, I have no problem with dropping network-match. 3. I am not sure what to do about the mask. If we don't use it, and can't depend on its value. Perhaps we should drop it entirely. I know it may be required by some hardware or software components, but that doesn't mean we have to carry it in our IP Address Value. (or pattern). If that is not acceptable, should I say: it can appear or not, but if it appears it is ignored? 4. With regard to Bill's proposed matching scheme, is this the proposed syntax or just a functional example? > Example 1 (range): > > IpAddressRangeStart = 10.10.0.0 > IpAddressRangeEnd = 10.10.10.255 > IpPortRangeStart = > IpPortRangeEnd = > > match: All addresses between and including 10.10.0.0 and 10.10.10.255. > Port is not evaluated so ALL ports "match". Note that we already have a syntax for port range defined in core Appendix A2. It looks like: Portrange =- portnumber "-"portnumber portnumber"-"[portnumber] I generalized this to: portrange = portnumber "-"portnumber portnumber"-"[portnumber] portrangelist = portrange ["," portrange] Is one of these ok for syntax or do you want to have IP Address Pattern be a complex XML attribute with 4 fields (sub elements)? If you like the portlist syntax, can we define something similar for ip address: Either: 10.123.1.1-10.123.1.200,10.123.2.0-10.123.2.255 or 10.123.1.[1-200],10.123.2.[255] or something similar? Thoughts, suggestions? Hal >


  • 20.  Re: IP Address types and functions, was: RE: [xacml] Groups - DLP-NAC profile uploaded

    Posted 06-04-2014 14:13
    Hi, I wouldn't want it to be a complex type. A string syntax would be simpler I think. I like the simple 10.123.1.1-10.123.1.200 style syntax. The meaning is simply to convert it to a long 32 bit integer, and any number in this range is included. Commas can be used to create unions of these. XACML conditions can be used to create more complex matches, like not being in a range, etc. The drawback with the 10.123.1.[1-200] alternative is that the []s can be used on multiple positions, which is more expressive, but also maybe not needed and is slightly more complicated to implement. I am not very familiar with ipv6, but I guess the same approach works there. We should also create the to/from string conversion functions, if they already were not there. Best regards, Erik On 2014-05-29 21:40, Hal Lockhart wrote: This thread has a lot of good discussion, but it is not clear to me exactly what the consensus is. Before I update the DLP-NAC Profile, let me try to state what I think is agreed and what I think is missing. 1. Fix typo in definition of the ipAddress-value-equal function (2.1.3): Change: (Any portrange values in either argument SHALL be ignored.) To: (Any port values in either argument SHALL be ignored.) 2. Because network mask cannot reliably determined and/or may not be that useful we should drop the network-match function. Comment: My original idea here was that it is common to limit actions to the same subnet (or rarely to different subnets). The reasoning is that routing subnets frequently correspond to physical divisions of the network, such as a building or a floor. Obviously this can be done by specifying ranges, but I was hoping that getting the mask from the network would be a way to make a policy remain valid in spite of minor minor network reconfigurations in a way that hardwiring the address range into a policy would not. In principle, I have no problem with dropping network-match. 3. I am not sure what to do about the mask. If we don't use it, and can't depend on its value. Perhaps we should drop it entirely. I know it may be required by some hardware or software components, but that doesn't mean we have to carry it in our IP Address Value. (or pattern). If that is not acceptable, should I say: it can appear or not, but if it appears it is ignored? 4. With regard to Bill's proposed matching scheme, is this the proposed syntax or just a functional example? Example 1 (range): IpAddressRangeStart = 10.10.0.0 IpAddressRangeEnd = 10.10.10.255 IpPortRangeStart = IpPortRangeEnd = match: All addresses between and including 10.10.0.0 and 10.10.10.255. Port is not evaluated so ALL ports "match". Note that we already have a syntax for port range defined in core Appendix A2. It looks like: Portrange =- portnumber "-"portnumber portnumber"-"[portnumber] I generalized this to: portrange = portnumber "-"portnumber portnumber"-"[portnumber] portrangelist = portrange ["," portrange] Is one of these ok for syntax or do you want to have IP Address Pattern be a complex XML attribute with 4 fields (sub elements)? If you like the portlist syntax, can we define something similar for ip address: Either: 10.123.1.1-10.123.1.200,10.123.2.0-10.123.2.255 or 10.123.1.[1-200],10.123.2.[255] or something similar? Thoughts, suggestions? Hal


  • 21.  Re: IP Address types and functions, was: RE: [xacml] Groups - DLP-NAC profile uploaded

    Posted 06-04-2014 14:45
    I think we are all in agreement on the range syntax for IPv4. The question is do we have consensus on ports, in particular for the use case of a combination of the two. For example: IP range of 10.1.2.0-10.1.64 port range of 8000-8100 Are we in agreement that these should be discrete (no attempt at creating a compound string syntax)? IPv6 is 128 bit and denoted in hex, but I think the same general logic would apply since we are not trying to perform any network operations. While thinking about it I suggest that we may make reference to the first value being the lesser of binary values and the second the greater. I realize this seems pretty obvious but I don't think it can hurt will ensure the range is real. b On Jun 4, 2014, at 7:12 AM, Erik Rissanen <erik@axiomatics.com> wrote: > Hi, > > I wouldn't want it to be a complex type. A string syntax would be simpler I think. > > I like the simple 10.123.1.1-10.123.1.200 style syntax. The meaning is simply to convert it to a long 32 bit integer, and any number in this range is included. Commas can be used to create unions of these. > > XACML conditions can be used to create more complex matches, like not being in a range, etc. > > The drawback with the 10.123.1.[1-200] alternative is that the []s can be used on multiple positions, which is more expressive, but also maybe not needed and is slightly more complicated to implement. > > I am not very familiar with ipv6, but I guess the same approach works there. > > We should also create the to/from string conversion functions, if they already were not there. > > Best regards, > Erik > > > > On 2014-05-29 21:40, Hal Lockhart wrote: >> This thread has a lot of good discussion, but it is not clear to me exactly what the consensus is. Before I update the DLP-NAC Profile, let me try to state what I think is agreed and what I think is missing. >> >> 1. Fix typo in definition of the ipAddress-value-equal function (2.1.3): >> >> Change: (Any portrange values in either argument SHALL be ignored.) >> To: (Any port values in either argument SHALL be ignored.) >> >> 2. Because network mask cannot reliably determined and/or may not be that useful we should drop the network-match function. >> >> Comment: My original idea here was that it is common to limit actions to the same subnet (or rarely to different subnets). The reasoning is that routing subnets frequently correspond to physical divisions of the network, such as a building or a floor. Obviously this can be done by specifying ranges, but I was hoping that getting the mask from the network would be a way to make a policy remain valid in spite of minor minor network reconfigurations in a way that hardwiring the address range into a policy would not. In principle, I have no problem with dropping network-match. >> >> 3. I am not sure what to do about the mask. If we don't use it, and can't depend on its value. Perhaps we should drop it entirely. I know it may be required by some hardware or software components, but that doesn't mean we have to carry it in our IP Address Value. (or pattern). >> >> If that is not acceptable, should I say: it can appear or not, but if it appears it is ignored? >> >> 4. With regard to Bill's proposed matching scheme, is this the proposed syntax or just a functional example? >> >>> Example 1 (range): >>> >>> IpAddressRangeStart = 10.10.0.0 >>> IpAddressRangeEnd = 10.10.10.255 >>> IpPortRangeStart = >>> IpPortRangeEnd = >>> >>> match: All addresses between and including 10.10.0.0 and 10.10.10.255. >>> Port is not evaluated so ALL ports "match". >> Note that we already have a syntax for port range defined in core Appendix A2. It looks like: >> >> Portrange =- portnumber "-"portnumber portnumber"-"[portnumber] >> >> I generalized this to: >> >> portrange = portnumber "-"portnumber portnumber"-"[portnumber] >> portrangelist = portrange ["," portrange] >> >> Is one of these ok for syntax or do you want to have IP Address Pattern be a complex XML attribute with 4 fields (sub elements)? >> >> If you like the portlist syntax, can we define something similar for ip address: >> >> Either: 10.123.1.1-10.123.1.200,10.123.2.0-10.123.2.255 or 10.123.1.[1-200],10.123.2.[255] or something similar? >> >> Thoughts, suggestions? >> >> Hal >> >> >>>