Firewalls, con’t / Denial-of-Service (DoS)
CS 161: Computer Security
- Prof. Vern Paxson
Firewalls, cont / Denial-of-Service (DoS) CS 161: Computer Security - - PowerPoint PPT Presentation
Firewalls, cont / Denial-of-Service (DoS) CS 161: Computer Security Prof. Vern Paxson TAs: Jethro Beekman, Mobin Javed, Antonio Lupher, Paul Pearce & Matthias Vallentin http://inst.eecs.berkeley.edu/~cs161/ February 19, 2013 Goals
– Remote access, telecommuting, branch offices, …
– Provides Authentication, Confidentiality, Integrity – However, also raises perimeter issues (Try it yourself at http://www.net.berkeley.edu/vpn/)
Internet Company Yahoo User VPN server Fileserver
application gateway
allow <port=22, host=1.3.5.7> drop <port=22> 1.3.5.7
can wreak havoc
execution to prevent code injection ⇒ denial-of-service
– # rm ‐rf /
– char buf[1024]; int f = open("/tmp/junk"); while (1) write(f, buf, sizeof(buf));
– while (1) fork();
– Create zillions of files, keep opening, reading, writing, deleting
– … doubtless many more
– Isolate users / impose quotas
– (in order to maximize the packet arrival rate)
– Install a network filter to discard any packets that arrive with attacker’s IP address as their source
in benign traffic
– Filter = isolation mechanism – Attacker’s IP address = means of identifying misbehaving user
– Just pick a random 32-bit number of each packet sent
– They don’t! – Best they can hope for is that operators around the world implement anti-spoofing mechanisms (today about 75% do)
– Today they are very cheap to acquire … :-(
smurf attack
Client (initiator) S Y N , S e q N u m = x SYN + ACK, SeqNum = y, Ack = x + 1 A C K , A c k = y + 1 Server
Server creates state associated with connection here
Attacker doesn’t even need to send this ack
doing so requires we have an established connection!
Client (initiator) S Y N , S e q N u m = x S+A, SeqNum = y, Ack = x + 1, <State> A C K , A c k = y + 1 , < S t a t e > Server
Server only saves state here Do not save state here; give to client
Client (initiator) S Y N , S e q N u m = x S+A, SeqNum = y, Ack = x + 1, <State> A C K , A c k = y + 1 , < S t a t e > Server
Server only saves state here Do not save state here; give to client
Client (initiator) S Y N , S e q N u m = x SYN and ACK, SeqNum = y, Ack = x + 1 A C K , A c k = y + 1 Server
Server only creates state here Do not create state here
Instead, encode it here