mh (RE: OMB: IPv6 by June 2008)

Dave,

I'd have to counter with "the assumption that NATs are going
away with v6 is a rather risky assumption." Or perhaps I
misunderstood your point...

$.02,

- ferg

Fergie (Paul Ferguson) wrote:
>

I'd have to counter with "the assumption that NATs are going
away with v6 is a rather risky assumption." Or perhaps I
misunderstood your point...

There is one thing often overlooked with regard to NAT. That is,
it has prevented many network based worms for millions of home
users behind NAT devices. Unfortunatly this fact is overlooked
all the time. NAT has its downsides but also upsides sometimes.

I'd have to counter with "the assumption that NATs are going
away with v6 is a rather risky assumption." Or perhaps I
misunderstood your point...

i think we are agreeing.

i think that any prediction that users will not use nats for v6 involves logic
that can, at best, be called idealistic. naive would be another term to
consider.

  d/

Andre Oppermann wrote:

Fergie (Paul Ferguson) wrote:
>

I'd have to counter with "the assumption that NATs are going
away with v6 is a rather risky assumption." Or perhaps I
misunderstood your point...

There is one thing often overlooked with regard to NAT. That is,
it has prevented many network based worms for millions of home
users behind NAT devices. Unfortunatly this fact is overlooked
all the time. NAT has its downsides but also upsides sometimes.

And the counter point to that argument is that the sparse population
of IPv6 space will make systematic scanning by worms an ineffective
means of propagation.

Yes, but keep in mind that this benefit is completely unrelated to NAT's purpose as an address space extender. A stateful firewall with a very simple rule (permit anything originated from the inside, deny anything from outside except a few pesky protocols) would accomplish exactly the same goal.

And it would be much easier to punch holes through when you needed to.

they were a vehicle for delivering such a firewall to millions of windows boxes. Unfortunately, this drug comes with a number of harmful side effects, including nausea, blurred vision, and the inability to deploy a number of new protocols.

   -Dave

Mangling the header did not prevent the worms, lack of state did that. A
stateful filter that doesn't need to mangle the packet header is frequently
called a firewall (yes some firewalls still do, but that is by choice).

Tony

Crist Clark wrote:

And the counter point to that argument is that the sparse population
of IPv6 space will make systematic scanning by worms an ineffective
means of propagation.

Any by connecting to one of the p2p overlay networks you'll have a few million in-use addresses momentarily.

Pete

Petri Helenius wrote:

Crist Clark wrote:

And the counter point to that argument is that the sparse population
of IPv6 space will make systematic scanning by worms an ineffective
means of propagation.

Any by connecting to one of the p2p overlay networks you'll have a few million in-use addresses momentarily.

Preventing abuse of information available from databases maintained
by P2P services is an emerging and interesting area of info sec. It may
become more so as other means of harvesting "live" addresses become
less productive. In The Future, the addresses of live hosts to attack
may become an underworld commodity like valid email addresses are now.
All of those are better than having Blaster or Slammer propagate so
easily. At least make the malware authors work for it.

If you were behind NAT, you couldn't use those P2P applications. So, yeah,
you were safe on your limited-functionality, pseudo-IP, NATed connection
from the Big Bad P2P.

And if you still want "the protection of NAT," any stateful firewall
will do it.

IMHO, if there is any reason NAT will live on in IPv6 it is the PI space
issue. Even the NAP draft comes out and says,

   4.7 Multihoming and renumbering

      Multihoming and renumbering remain technically challenging with IPv6...

That plus the problems with the unique local proposals make it quite
likely that NAT will not completely disappear should IPv6 become
widespread.

That seems a common viewpoint.

I believe the very existence of the Ping Of Death rebuts it.

A machine behind a NAT box simply is not visible to the outside world,
except for the protocols you tunnel to it, if any. This *has* to
vastly reduce it's attack exposure.

Anyone with a pointer to an *in depth* explanation somewhere of why
that assumption is invalid can mail it to me off list, and I'll shut
up.

Cheers,
-- jra

Not really. Consider the logic in a NAT box:

   if (state table entry exists for packet) {
      translate_header();
      send();
   } else {
      drop();
   }

and the logic in a stateful firewall:

   if (state table entry exists for packet) {
      send();
   } else {
      drop();
   }

This is *exactly* the core of what a NAT does, minus the header mangling. The ping of death exposure, for instance, is identical in both cases: The way to ping of death someone is to find a valid state table entry and exploit it (e.g., if you could do a PoD in reverse by using a too-large ICMP reply, and first convince the victim to ping you).

Configuration options can change the behavior of either, e.g., configuring an internal host to be the "DMZ" host on a NAT, which changes the logic to:

   if (state table) ...
   else
      send_to_dmz_host();

The equivalent operation on a stateful firewall is a permit rule. A stateful firewall can expose more internal hosts to the outside than a NAT with only one IP address, simply because it can have more addressable space to use (if you've only got one IP address, there's only one person who can receive pings). But in general, the two are nearly identical, by virtue of the state table check.

   -Dave

It is true that the exposure is reduced, just as it is with a stateful firewall. The technical term for this is "security by obscurity". Being obscure, however, is not the same as being invisible or being protected. It just means that you're a little harder to hit. When a NAT sets up an association between an "inside" and "outside" address+port pair, that constitutes a bridge between the inside device and the outside world. There are ample attacks that are perpetrated through that association.

A NAT, in that context, is a stateful firewall that changes the addresses, which means that the end station cannot use IPSEC to ensure that it is still talking with the same system on the outside. It is able to use TLS, SSH, etc as transport layer solutions, but those are subject to attacks on TCP such as RST attacks, data insertion, acknowledge hacking, and so on, and SSH also has a windowing problem (on top of TCP's window, SSH has its own window, and in large delay*bandwidth product situations SSH's window is a performance limit). In other words, a NAT is a man-in-the-middle attack, or is a device that forces the end user to expose himself to man-in-the-middle attacks. A true stateful firewall that allows IPSEC end to end doesn't expose the user to those attacks.

>> And if you still want "the protection of NAT," any stateful firewall
>> will do it.
>
> That seems a common viewpoint.
>
> I believe the very existence of the Ping Of Death rebuts it.
>
> A machine behind a NAT box simply is not visible to the outside world,
> except for the protocols you tunnel to it, if any. This *has* to
> vastly reduce it's attack exposure.

Not really. Consider the logic in a NAT box:

[ ... ]

and the logic in a stateful firewall:

Sorry. Given my other-end-of-the-telescope perspective, I was
envisioning an *on-machine* firewall, rather than a box. Clearly *any*
sort of box in the middle helps in the fashion I alluded to, whether it
NATs or not.

Cheers,
-- jra

A NAT, in that context, is a stateful firewall that changes the addresses, which means that the end station cannot use IPSEC to ensure that it is still talking with the same system on the outside. It is able to use TLS, SSH, etc as transport layer solutions, but those are subject to attacks on TCP such as RST attacks, data insertion, acknowledge hacking, and so on, and SSH also has a windowing problem (on top of TCP's window, SSH has its own window, and in large delay*bandwidth product situations SSH's window is a performance limit). In other words, a NAT is a man-in-the-middle attack, or is a device that forces the end user to expose himself to man-in-the-middle attacks.

:slight_smile:

A true stateful firewall that allows IPSEC end to end doesn't expose the user to those attacks.

I of course couldn't resist, so:

!
ipv6 access-list out-ipv6-acl
  permit ipv6 any any reflect state-acl
!
ipv6 access-list in-ipv6-acl
  evaluate state-acl
  deny ipv6 any any log
!

(don't try this at home, kids: that deny any is dangerous because it blocks neighbor discovery)

Unfortunately, IPsec (ESP transport mode) isn't allowed back in:

%IPV6-6-ACCESSLOGNP: list in-ipv6-acl/20 denied 50 2001:1AF8:2:5::2 - > 2001:1AF8:6:0:20A:95FF:FEF5:246E, 29 packets

On second thought: how could it? The SPIs for outgoing and incoming packets are different. I suppose it would be possible for the stateful filter to snoop the ISAKMP protocol and install filter rules based on the information found there, but that's obviously not what happens.

Jay R. Ashworth wrote:

And if you still want "the protection of NAT," any stateful firewall
will do it.

That seems a common viewpoint.

I believe the very existence of the Ping Of Death rebuts it.

A machine behind a NAT box simply is not visible to the outside world,
except for the protocols you tunnel to it, if any. This *has* to
vastly reduce it's attack exposure.

Not really. Consider the logic in a NAT box:

[ ... ]

and the logic in a stateful firewall:

Sorry. Given my other-end-of-the-telescope perspective, I was
envisioning an *on-machine* firewall, rather than a box. Clearly *any*
sort of box in the middle helps in the fashion I alluded to, whether it
NATs or not.

Now I'm confused. Who runs *on-machine* NAT?

I guess that's another nice option for firewalls. It doesn't matter
whether your firewall runs locally or on a remote gateway.

Also, when people here are talking about NAT, note that we are only
talking about many-to-one, overloading, PAT, or whatever you want
to call it. If you are using NAT pools or one-to-one NAT, it buys
you no protection at all unless you add firewalling to the mix.

Fred Baker wrote:
[snip]

A NAT, in that context, is a stateful firewall that changes the addresses, which means that the end station cannot use IPSEC to

> ensure that it is still talking with the same system on the outside.
[snip]

No, you can't use AH, but yes, you can use IPsec through NAT. See RFC3947
and RFC3948. But it is not pretty.

A NAT, in that context, is a stateful firewall that changes the addresses, which means that the end station cannot use IPSEC to ensure that it is still talking with the same system on the outside.

Only if you define IPSEC narrowly as AH in order to justify this claim.

There are at least two interesting differences between a NAT and a stateful firewall deployed in front of hosts with permanent public address space. The first involves attackers knowing the topological name of a victim who may be unshielded by the firewall during narrow windows offered by the implementation, its operators, or both in combination. The second involves a predictable rendezvous point for covert communications channels.

Not all NATs protect against these classes of attack, however an implementation that assigns inside-outside mappings with reasonable randomness will. One which also breaks connections on failures (by invalidating existing mappings) is more fail-safe than one that tries to preserve existing state across crashes or fat-fingerings.

People who don't make use of an interoperable and well understood session protocol resilient against this variety of failure in connection-oriented transport communications ("identity/locator binding invalidation") will probably disagree as their various long-lived sessions terminate abnormally...

Applications-layer protocol writers without a session layer would also have to worry about:

attacks on TCP such as RST attacks, data insertion, acknowledge hacking, and so on

Planned renumbering may as a side effect result in all of the three such "attacks" you explicitly listed.

They may also be flummoxed by having to invent a session layer for an application that really wants one, leading to reinventing previously discovered gotchas like

in large delay*bandwidth product situations SSH's window is a performance limit

Finally:

In other words, a NAT is a man-in-the-middle attack, or is a device that forces the end user to expose himself to man-in-the-middle attacks. A true stateful firewall that allows IPSEC end to end doesn't expose the user to those attacks.

The men in the middle are the I* officers who have refused for more than a decade to admit they don't know everything, that market forces are not always driven by evil doing architectural impurists with nothing to teach their elders (which is incongruous with early I* tensions with the former CCITT), or that they have their heads buried neck deep in NIH kitty litter (ditto).

A NAT is a tool many people find useful enough to deploy, maintain and even pay money for, despite the ready availability of substitutable tools, and

The IP (both flavours) network and transport layers are very badly designed with respect to host renumbering. Renumbering has been a fact of life since before the early 90s. There is no as-widely-promoted-as-TCP session layer to help mitigate renumbering's effects. There is also institutional resistence to fixing this aspect of the design of the N+T layers in I*.

So, people who have actually deployed and run networks where renumberings happen, deployed NATs simply because that was one of the only solutions readily and mostly interoperably available to them. It is unsurprising that the voluntary standards organization dominated by people who have fought against technology to cope with (or even embrace) live renumbering is likewise ridden with loudmouths who call NATs "attack"s.

What is it exactly that NATs attack, Fred?

     Sean.

A NAT, in that context, is a stateful firewall that changes the addresses, which means that the end station cannot use IPSEC to ensure that it is still talking with the same system on the outside.

Only if you define IPSEC narrowly as AH in order to justify this claim.

There are at least two interesting differences between a NAT and a stateful firewall deployed in front of hosts with permanent public address space. The first involves attackers knowing the topological name of a victim who may be unshielded by the firewall during narrow windows offered by the implementation, its operators, or both in combination. The second involves a predictable rendezvous point for covert communications channels.

Not all NATs protect against these classes of attack, however an implementation that assigns inside-outside mappings with reasonable randomness will. One which also breaks connections on failures (by invalidating existing mappings) is more fail-safe than one that tries to preserve existing state across crashes or fat-fingerings.

People who don't make use of an interoperable and well understood session protocol resilient against this variety of failure in connection-oriented transport communications ("identity/locator binding invalidation") will probably disagree as their various long-lived sessions terminate abnormally...

Applications-layer protocol writers without a session layer would also have to worry about:

attacks on TCP such as RST attacks, data insertion, acknowledge hacking, and so on

Planned renumbering may as a side effect result in all of the three such "attacks" you explicitly listed.

They may also be flummoxed by having to invent a session layer for an application that really wants one, leading to reinventing previously discovered gotchas like

in large delay*bandwidth product situations SSH's window is a performance limit

Finally:

In other words, a NAT is a man-in-the-middle attack, or is a device that forces the end user to expose himself to man-in-the-middle attacks. A true stateful firewall that allows IPSEC end to end doesn't expose the user to those attacks.

The men in the middle are the I* officers who have refused for more than a decade to admit they don't know everything, that market forces are not always driven by evil doing architectural impurists with nothing to teach their elders (which is incongruous with early I* tensions with the former CCITT), or that they have their heads buried neck deep in NIH kitty litter (ditto).

A NAT is a tool many people find useful enough to deploy, maintain and even pay money for, despite the ready availability of substitutable tools, and

The IP (both flavours) network and transport layers are very badly designed with respect to host renumbering. Renumbering has been a fact of life since before the early 90s. There is no as-widely-promoted-as-TCP session layer to help mitigate renumbering's effects. There is also institutional resistence to fixing this aspect of the design of the N+T layers in I*.

So, people who have actually deployed and run networks where renumberings happen, deployed NATs simply because that was one of the only solutions readily and mostly interoperably available to them. It is unsurprising that the voluntary standards organization dominated by people who have fought against technology to cope with (or even embrace) live renumbering is likewise ridden with loudmouths who call NATs "attack"s.

What is it exactly that NATs attack, Fred?

     Sean.

Fergie (Paul Ferguson) wrote:
>

I'd have to counter with "the assumption that NATs are going
away with v6 is a rather risky assumption." Or perhaps I
misunderstood your point...

There is one thing often overlooked with regard to NAT. That is,
it has prevented many network based worms for millions of home
users behind NAT devices. Unfortunatly this fact is overlooked
all the time. NAT has its downsides but also upsides sometimes.

Yes, but keep in mind that this benefit is completely unrelated to NAT's purpose as an address space extender. A stateful firewall with a very simple rule (permit anything originated from the inside, deny anything from outside except a few pesky protocols) would accomplish exactly the same goal.

Indeed, the fact that most NAT implementations combine the address translation with stateful inspection (given it's the simplest way to implement NAPT, IMO), this is the case.

And it would be much easier to punch holes through when you needed to.

No, it's the same. With a stateful inspection firewall operating as a transparent bridge or as a router, you still need to specify which protocols, ports and addresses to permit. It's exactly the same.

From my perspective, the biggest benefit from home NAT devices is that they were a vehicle for delivering such a firewall to millions of windows boxes. Unfortunately, this drug comes with a number of harmful side effects, including nausea, blurred vision, and the inability to deploy a number of new protocols.

The inability to deploy new protocols is exactly the same in many cases for a stateful inspection box on public addresses vs. a stateful inspection box doing NAT. The firewall must be aware of the protocol to permit it at all, and if there's going to be any hope of protecting the less secure equipment behind, those firewall devices must understand the details of the protocol. That still requires the vendor to do work.

Yes, the address translations still add another layer of trouble in that passing endpoint identifiers (which unfortunately are the same as IP addresses, given a lack of a host identification mechanism other than IP address) creates problems for protocol developers. However in most cases a good protocol design can be arrived at which does not run into these difficulties. Such ideas were documented some time ago by the IETF NAT WG as information to protocol designers.