(NAT) allows a network to use one set of
network addresses internally and a different set when dealing with
external networks. Network address translation does not, by itself,
provide any security, but it helps to conceal the internal network
layout and to force connections to go through a choke point (because
connections to untranslated addresses will not work, and the choke
point does the translation).
Like packet filtering, network address translation works by having a
router do extra work. In this case, not only does the router send
packets on, but it also modifies them. When an internal machine sends
a packet to the outside, the network address translation system
modifies the source address of the packet to make the packet look as
if it is coming from a valid address. When an external machine sends
a packet to the inside, the network address translation system
modifies the destination address to turn the externally visible
address into the correct internal address. The network address
translation system can also modify the source and destination port
numbers (this is sometimes called Port and Address Translation or
PAT). Figure 5-3 shows a network address
translation system modifying only addresses, while Figure 5-4 shows port and address translation.
Network address translation systems can use different schemes for
translating between internal and external addresses:
5.4.1. Advantages of Network Address Translation
The
main purpose of network address translation is to economize on
address space, but it can also have some security advantages.
5.4.1.1. Network address translation helps to enforce the firewall's control over outbound connections
Since individual hosts have addresses that won't work on the
external network, they require the assistance of the network address
translation system to connect. If a host finds a way to connect to
the Internet without going through the address translation, the
connection won't work.
5.4.1.2. Network address translation can help restrict incoming traffic
Depending on how you configure a network address translation system,
it can provide stronger restrictions on incoming traffic than packet
filtering. A network address translation system that's doing
dynamic translation will allow only packets that are part of a
current interaction initiated from the inside. This is similar to the
protection that a dynamic packet filter offers, but the changing IP
addresses put stronger time constraints on attackers. Not only can
they attack only certain ports, but if they wait too long, the
address translation will have gone away, and the entire address will
have disappeared or been given to another host.
any people assume that all network address translation systems
provide this sort of protection, but this is not true. If you
configure a network address translation system to do static
translations, it may provide no restrictions at all on incoming
traffic. Even doing dynamic translations, the simplest
implementations allocate an entire externally visible address to the
internal host and translate all traffic sent to that address. This
does limit the time that an attacker has, but otherwise provides no
protection at all.
5.4.1.3. Network address translation helps to conceal the internal network's configuration
The less an attacker knows about you, the better off you are. A
network address translation system makes it much more difficult for
an attacker to determine how many computers you have, what kind of
machines they are, and how they're arranged on the network.
Note, however, that many protocols leak useful information (for
instance, they may include the client's IP address or hostname
in places where the network address translation system doesn't
need to change it). When we discuss the network address translation
properties of protocols, we attempt to mention leaks of this sort.
5.4.2. Disadvantages of Network Address Translation
While network address translation is a very useful way of conserving
network address space, it presents some problems.
5.4.2.1. Dynamic allocation requires state information that is not always available
It is very easy for a network address translation system to tell
whether or not a host has stopped using a TCP connection, but
there's no way to know at the packet header level whether a UDP
packet is part of an ongoing conversation or is an isolated event.
This means that a network address translation system has to guess how
long it should keep a particular translation. If it guesses
incorrectly, responses may be lost or delivered to unexpected hosts.
5.4.2.2. Embedded IP addresses are a problem for network address translation
Network address translation systems normally translate the addresses
in the headers of packets (see
Chapter 4, "Packets and Protocols ", for more
information about packet layout). Some protocols also hide addresses
in other places, and in order to find those addresses, the network
address translator has to understand the protocol enough to find and
modify the address, while preserving the validity of the packet. Most
network address translation systems are capable of doing this for at
least some protocols (for instance, FTP) but not for all protocols.
5.4.2.3. Network address translation interferes with some encryption and authentication systems
Systems for encrypting data often
attempt to ensure the integrity of the data, so that the systems that
are communicating know that packets have not been tampered with in
transit. Network address translation is a form of tampering with the
data in transit. If the protocol that's being translated does
not protect the data that the network address translation system
modifies, it will work. Otherwise, the integrity checking will be
violated, and connections will fail. In most cases, protocols that do
not have embedded IP addresses are compatible (the packet headers are
not part of the protocol's protected data). The major exception
to this rule is IPsec, which protects the entire packet, including
headers. Network address translation is almost guaranteed to fail for
protocols that combine embedded IP addresses with data integrity
protection.
5.4.2.4. Dynamic allocation of addresses interferes with logging
If you are logging information
after the network address translation happens, the logs will show the
translated addresses, and you will have to correlate the logs with
information from the network address translation system to figure out
what internal system is actually involved. For instance, if you have
a screened subnet architecture (discussed in
Chapter 6, "Firewall Architectures"), and you are doing network address translation
on the interior router, the translated addresses will be in logs from
the exterior router or from a caching web proxy server on the
screened subnet. Although log correlation is theoretically possible,
it may be difficult, and clock synchronization will be critical.
5.4.2.5. Dynamic allocation of ports may interfere with packet filtering
Packet filtering systems pay
attention to source and destination port numbers in order to try to
figure out what protocol a packet should be using. Changing the
source port may change the packet's acceptability. In most
cases, this is not a problem because address translation systems are
translating for clients, which are usually allowed to use any port
above 1023. However, if ports above 1023 are translated to ports
below 1023, traffic may be dropped.