@@ -970,7 +970,7 @@ for the target function.
970970
971971In much of this book we have focused on attacks against the
972972confidentiality or integrity of information, but we also need to
973- concern ourselves with availability of both the end systems (such as
973+ concern ourselves with availability. This is true for both end systems (such as
974974web sites) and the infrastructure of the network itself. Commonly
975975known as *Denial of Service (DoS) * attacks, such attacks typically
976976involve an adversary trying to overwhelm "good" resources (link
@@ -1007,17 +1007,17 @@ servers—content remains available. This notion of *aggregate* capacity
10071007generalizes beyond web servers responding to HTTP GET requests. A
10081008network is itself a distributed collection of forwarding and
10091009transmission resources, engineered to distribute those resources in a
1010- way that avoids vulnerable bottlenecks. The DNS, for example, is
1011- itself a highly distributed system designed to avoid single points of
1010+ way that avoids vulnerable bottlenecks. The DNS illustrates this perfectly:
1011+ it is a highly distributed system designed to avoid single points of
10121012failure with redundancy at all levels of the hierarchy.
10131013
10141014The second countermeasure is to filter malicious traffic as early
10151015(close to the source) as possible. If a DoS attack comes from a single
10161016source, then it is easy to "block" traffic from that source at an
10171017ingress to a network you control. This is why DoS attacks are
10181018typically distributed. Dropping (or rate limiting) attack packets at
1019- the boundary router (or firewall) for an enterprise or service
1020- provider is better than allowing those packets to flood the core of
1019+ the boundary router for a service provider (or at a firewall for an enterprise)
1020+ is better than allowing those packets to flood the core of
10211021the network and reach a victim server(s), but the more widely
10221022distributed the periphery of your network, the earlier you can filter
10231023malicious packets. And drawing on the first countermeasure, the more
@@ -1051,22 +1051,23 @@ Another well-known example is a "SYN Flood" targeting TCP, whereby an
10511051attacker floods a server with SYN requests without any intent to
10521052complete the TCP handshake and actually establish a connection. This
10531053overloads TCP's connection table, potentially denying connections to
1054- legitimate clients. An IDS/IPS can help protect servers since a flood
1055- of SYN packets is anomalous behavior, but individual servers can also
1056- limit the impact by encoding connection state in the sequence number
1057- included in the SYN+ACK they send back to the client—a "SYN cookie" of
1058- sorts—and then allocate connection state locally only after the client
1059- goes to the trouble of correctly ACK'ing that packet. This is a
1060- variant of the first countermeasure in that it forces the attacker to
1061- use additional resources.
1054+ legitimate clients. An Intrusion Detection System (see the next
1055+ chapter) can help protect servers since a flood of SYN packets is
1056+ anomalous behavior, but individual servers can also limit the impact
1057+ by encoding connection state in the sequence number included in the
1058+ SYN+ACK they send back to the client—a "SYN cookie" of sorts—and then
1059+ allocate connection state locally only after the client goes to the
1060+ trouble of correctly ACK'ing that packet. This is a variant of the
1061+ first countermeasure in that it forces the attacker to use additional
1062+ resources.
10621063
10631064These examples are just a few of many illustrating the need to program
10641065defensively. This is especially true for protocols since they are
10651066purposely designed to process messages from remote sources, exposing
10661067them to attempts to crash, hack, or as in the case of DoS attacks,
1067- simply consume the system. This topic ventures outside the scope of
1068- the book, but the following reference explores one approach to
1069- addressing the challenge .
1068+ simply consume the system. Defensive programming ventures outside the
1069+ scope of this book, but the referenced OSDI paper is an example of one
1070+ approach .
10701071
10711072.. admonition :: Further Reading
10721073
0 commit comments