<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Just wanted to let everyone know that I am making the dynamic
    whitelisting iptables rules I have been testing available to anyone
    who runs a Q3-protocol server under Linux and wants to try them
    out.&nbsp; These rules were designed for the most severe of all attacks,
    and that is attacks where the source IP is spoofed and is random.&nbsp;
    It also works for attacks from a single IP as well, as well as
    indirect reflection attacks.<br>
    <br>
    We have 2 commercial server companies using these rules currently in
    their production environment, and I am currently working with two
    more.&nbsp; I also have test servers running on several VPS's that I use
    for development.<br>
    <br>
    So what do the iptables do?&nbsp; Here's the list:<br>
    <br>
    1) Players have their IP saved automatically at the kernel level
    when they join a game server, and then those IPs are used as a
    filter for other rules.&nbsp; When they leave the game server the IP is
    retired after 10 minutes.&nbsp; (This is what we call a whitelisted
    player).&nbsp; This is the main guts of the protection, as identifying
    valid players is important to mitigating attacks.<br>
    <br>
    2) Server query packets like 'getstatus' and 'getinfo' are rate
    limited to 10/sec to prevent lag when they are used in a DOS
    attack.&nbsp; Players that are whitelisted have their packets allowed (so
    they can see server status while in game even during an attack).<br>
    <br>
    3) 'getchallenge' packets (normally used by a player to join the
    game) are rate limited to 2/sec, to prevent lag when they are used
    in a DOS attack.&nbsp; Players that are whitelisted always have their
    requests to join the server processed.&nbsp; This allows a player who was
    recently playing the ability to join the server again, even when the
    DOSer is trying to lock down the population on the server by
    spamming fake players joining.<br>
    <br>
    4) All other packets are rate limited per whitelisted player IP to
    no more than 100/second, to prevent lag when a DOSer has stolen a
    valid player IP address and is attacking with it in an attempt to
    break through the whitelist rules.<br>
    <br>
    5) Attempts to use your game server as a reflector to attack other
    game servers is blocked (due to rate limiting in 1-4).<br>
    <br>
    6) Reflection attack packets hitting your server are dropped (again
    due to rate limiting in 1-4).<br>
    <br>
    7) A custom packet (not part of the Q3 protocol) can be sent by a
    player to break into and join a game that is under 24/7
    'getchallenge' attack.&nbsp; This is one of the slicker features of the
    iptables rules, as this 'server lockdown' DOS attack is now easily
    breached.<br>
    <br>
    <br>
    The iptables rules are added dynamically per server IP:PORT pair.&nbsp;
    That way the rules affect nothing but UDP packets to that game
    server.&nbsp; No other types of packets are affected whatsoever.&nbsp; To make
    it easy, the rules have been put into shell scripts.<br>
    <br>
    Example:&nbsp; Protect the game running on 10.1.2.3 port 28000.<br>
    <br>
    <tt># ./protectgame.sh 10.1.2.3 28000</tt><br>
    <br>
    Example:&nbsp; Show the iptables rules currently protecting the game
    running on 10.1.2.3 port 28000.<br>
    <br>
    <tt># ./listgame.sh 10.1.2.3 28000</tt><br>
    <br>
    Example:&nbsp; Remove the iptables rules protecting the game running on
    10.1.2.3 port 28000.<br>
    <br>
    <tt># ./unprotectgame.sh 10.1.2.3 28000</tt><br>
    <br>
    Rather than just send the scripts to the whole list here, I've
    decided to ask anyone interested to Email me personally and request
    it.&nbsp; If you run a commercial gaming service (or even your own COD
    server and agree not to share it with anyone else), I will be happy
    to send it to you and help you understand how to use it in your
    environment.<br>
    <br>
    Thanks,<br>
    <br>
    &nbsp; <i>Boyd</i><br>
    <div class="moz-signature">&nbsp;<br>
      <i><font size="-1">__________________________________<br>
          Boyd G. Gafford Ph.D.<br>
          Manager of Software Development<br>
          Westport Research Associates Inc.<br>
          7001 Blue Ridge Blvd<br>
          Raytown, MO 64133<br>
          (816) 358-8990<br>
          <a class="moz-txt-link-abbreviated" href="mailto:drboyd@westportresearch.com">drboyd@westportresearch.com</a><br>
        </font></i><br>
    </div>
  </body>
</html>