Re: Gen-ART LC Review of draft-ietf-opsec-dhcpv6-shield-04

Ben Campbell <ben@nostrum.com> Thu, 11 December 2014 21:56 UTC

Return-Path: <ben@nostrum.com>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E81AB1A0056; Thu, 11 Dec 2014 13:56:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level:
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HkjlFUqCElcp; Thu, 11 Dec 2014 13:56:32 -0800 (PST)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 81D951A0032; Thu, 11 Dec 2014 13:56:32 -0800 (PST)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id sBBLuSqK037289 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 11 Dec 2014 15:56:30 -0600 (CST) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset="windows-1252"
Mime-Version: 1.0 (Mac OS X Mail 8.1 \(1993\))
Subject: Re: Gen-ART LC Review of draft-ietf-opsec-dhcpv6-shield-04
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <547D9C86.6040701@si6networks.com>
Date: Thu, 11 Dec 2014 15:56:28 -0600
X-Mao-Original-Outgoing-Id: 440027788.478858-1e7108d768fe94849126681b08084f4a
Content-Transfer-Encoding: quoted-printable
Message-Id: <64775586-CC1E-4360-9122-F000EB45F475@nostrum.com>
References: <E5BE273D-3996-4086-B5D9-FFFB437774DE@nostrum.com> <547D9C86.6040701@si6networks.com>
To: Fernando Gont <fgont@si6networks.com>
X-Mailer: Apple Mail (2.1993)
Archived-At: http://mailarchive.ietf.org/arch/msg/ietf/IKXJ5wBz_hLPWUlKYQFN0X-A1fU
Cc: "gen-art@ietf.org Team (gen-art@ietf.org)" <gen-art@ietf.org>, draft-ietf-opsec-dhcpv6-shield.all@ietf.org, IETF Discussion <ietf@ietf.org>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 11 Dec 2014 21:56:35 -0000

Thanks for your response. Here's some additional comments. I removed sections that didn't seem to need further discussion.


> On Dec 2, 2014, at 5:03 AM, Fernando Gont <fgont@si6networks.com> wrote:

[...]

>> Major issues:
>> 
>> (Note: This is not so much a "major issue" as a meta-concern that
>> doesn't fit well in the major/minor/nit structure.)
>> 
>> I have questions about the intended status. The draft lists BCP. It's
>> not clear to me if we intend to say that it's a "best practice" to
>> implement DHCPv6 filtering, or that, if you do implement it, it's a
>> best practice to do it like this. Given the strength of a BCP, I
>> think it's worth clarifying that.
> 
> BCP of implementing it, if you do.
> 
> How about adding this text to the intro:
> 
> "This document specifies a Best Current Practice for the implementation
> of DHCPv6 Shield (DHCPv6)"
> 

That would help, thanks!

> 
> 
>> Minor issues:
>> 
>> -- abstract, last sentence:
>> 
>> I didn't find this assertion in the body itself. It would be nice to
>> see support for it (perhaps with citations).
> 
> I guess one could provide references to some vendor's manuals? Is that
> what you have in mind? (although I'd prefer not to do so).

The citations part was more of a nice to have. But it would be worth putting some words around that in the body, even if there's nothing to reference.

> 
> 
> 
>> -- section 4:
>> 
>> Am I correct in understanding that this is opt in only? You would
>> disallow a rule of the form of "allow on any port except [list]"?
> 
> Not sure what you mean.
> 
> The idea is that if you want to enable dhcpv6 shield, you need to
> specify on which port(s) the dhcpv6 server(s) is/are connected.

Would a rule of the form "Allow DHCPv6 on all ports except port X" be allowed?


> 
> 
> 
>> Nits/editorial comments:
>> 
>> -- section 1, 2nd paragraph:
>> 
>> This is the first mention of "DHCP-Shield" I found, not counting the
>> doc name and headers. It would be helpful to have an early mention
>> that "DHCP-Shield" is the name of the thing that this draft defines.
>> 
>> -- section 1, 3rd paragraph:
>> 
>> It would be helpful to define what a "DHCP-Shield device" is, prior
>> to talking about deploying and configuring them.
> 
> How about adding (in Section 1) the following text:
> 
>    This document specifies DHCPv6 Shield: a set of filtering
>    rules meant to mitigate attacks that employ DHCPv6-server
>    packets. Throughout this document we refer to a device
>    implementing the DHCPv6 Shield filtering rules as the "DHCPv6
>    Shield device"
> 
> ?

Yes, thanks.


> 
> 
>> -- section 3, paragraph ending with  with "... used as follows
>> [RFC7112]:"
>> 
>> I'm a bit confused by the citation. Are these defined "as follows",
>> or in 7112?
>> 

You did not respond to this one. I note that my next few comments might no longer apply if the 7112 reference is clarified. Is the point to say that 7112 contains the following definitions, which are repeated here for the sake of convenience?


>> -- section 3, "Extension Header"
>> 
>> -- these are IPv6 extension headers, right?
> 
> Yes. Should we explicitly say so?

I think it would help. The 7112 reference bit might fix it, but as written the first explicit mention of IPv6 in the section is the IPv6 Header Chain subsection.

> 
> 
> 
>> -- section 3, "IPv6 Header chain"
>> 
>> Is there a relevant citation for this?
> 
> Other than RFC7112?

See 2nd comment back.

> 
> 
> 
>> Also, while this section talks about some aspects of header chains,
>> it never actually defines the term.
> 
> Which one?

The term "header chain".  That is, something of the form of "The IPv6 header chain is a linked-list of IPv6 headers. It contains ...".

> 
> 
> 
> 
>> -- section 3, "Upper-Layer Header"
>> 
>> Again, this section talks about the term without defining it.
>> 
>> -- section 5, list entry "1": "... the IPv6 entire header chain ..."
> 
> Not sure what you mean: Section 3 is all about defining the terms. Am I
> missing something?

Again, the definition doesn't actually define the term. For example, "An upper-layer header is a header belonging to an upper-layer protocol"


[...]

> 
> 
>> -- section 3, rational for item 1: "An implementation that has such
>> an implementation-specific limit MUST NOT claim compliance with this
>> specification."
>> 
>> That's an odd use of 2119 language; I assume this to be true anytime
>> an implementation violates a MUST/MUST NOT assertion.
> 
> You're right. Should we just change this to lowercase, or do you think
> we should remove the whole sentence?

Either would be okay. I guess it comes down to whether you think this requirement (parsing the entire chain) needs to be called out more strongly than any other MUST level requirement. 

> 
> 
> 
>> -- section 3, rational for list item 3:
>> 
>> It would be helpful if this rational said why dropping unrecognized
>> next header values is needed for the purpose, not just the fact that
>> 7045 allows it to be dropped.
> 
> How about adding this at the end of the RATIONALE:
> 
> "An unrecognized Next Header value could possibly identify an IPv6
> Extension Header, and thus be leveraged to conceal a DHCPv6-server packet".
> 
> 

That helps, thanks.

> 
>> -- section 3, list item 4:
>> 
>> Am I correct in assuming that there might be other (non-dhcp) reasons
>> a device might still drop packets that otherwise pass the
>> dhcpv6-shield tests?
> 
> Yes. Why?
> 
> FWIW, the filtering rules in this document just talk about whether a
> packet should be blocked or not based on these rules.

I guess it depends on whether "MUST pass the packet" means pass it for further processing (which could include other filtering rules), or pass it onto the wire. I see your point that the draft intends the former, but I think some implementers might read it as the latter.

> 
> 
> 
>> -- section 3, paragraph after list item 4:
>> 
>> The comment that dropped packets SHOULD be logged is redundant with
>> the same statement in the numbered rules.
> 
> How about changing this:
> 
>   If a packet is dropped due to this filtering policy, then the packet
>   drop event SHOULD be logged in an implementation-specific manner as a
>   security fault.  The logging mechanism SHOULD include a drop counter
>   dedicated to DHCPv6-Shield packet drops.
> 
> to:
> 
>   The above rules require that if a packet is dropped due to this
>   filtering policy, the packet drop event be logged in an
>   implementation-specific manner as a security fault.  The logging
>   mechanism SHOULD include a drop counter
>   dedicated to DHCPv6-Shield packet drops.
> 
> ?

Works for me.

[...]

Thanks!

/Ben