[PATCH] ipt_TTL random

Michael Bauer mihi@gmx.at
Fri, 31 Aug 2001 00:50:17 +0200 (CEST)


hey guys

I missed a feature provided by the grsecurity-patch: the Random TTL. For some
paranoid geeks this is a good patch. netfilter TTL target had no option to set
a random TTL so i added one. the option is --ttl-rnd <value> where value is the
minimum ttl possible.

mihi@tibia:~$ more ipt_TTL-rand.patch 
--- netfilter/userspace/extensions/libipt_TTL.c Fri Aug 31 00:29:21 2001
+++ netfilter/userspace/extensions/libipt_TTL-rand.c    Fri Aug 31 00:00:41 2001
@@ -27,6 +27,7 @@
 "  --ttl-set value             Set TTL to <value>\n"
 "  --ttl-dec value             Decrement TTL by <value>\n"
 "  --ttl-inc value             Increment TTL by <value>\n"
+"  --ttl-rnd value              Set TTL to Random+value\n"
 , NETFILTER_VERSION);
 }
 
@@ -75,6 +76,9 @@
 
                        info->mode = IPT_TTL_INC;
                        break;
+               case '4':
+                 info->mode = IPT_TTL_RND;
+                 break;
 
                default:
                        return 0;
@@ -111,6 +115,9 @@
                case IPT_TTL_INC:                        
                   printf("--ttl-inc ");
                        break;
+       case IPT_TTL_RND:
+         printf("--ttl-rnd ");
+          break;
        }
        printf("%u ", info->ttl);
 }
@@ -132,6 +139,9 @@
                case IPT_TTL_INC:
                        printf("increment by ");
                        break;
+       case IPT_TTL_RND:
+         printf("set to random ");
+         break;
        }
        printf("%u ", info->ttl);
 }
@@ -140,6 +150,7 @@
        { "ttl-set", 1, 0, '1' },
        { "ttl-dec", 1, 0, '2' },
        { "ttl-inc", 1, 0, '3' },
+        { "ttl-rnd", 1, 0, '4' },
        { 0 }
 };
 
@@ -162,3 +173,8 @@
 {
        register_target(&TTL);
 }
+
+
+
+
+
--- ../linux/include/linux/netfilter_ipv4/ipt_TTL.h     Fri Aug 31 00:28:36 2001
+++ ../linux/include/linux/netfilter_ipv4/ipt_TTL-rand.h        Thu Aug 30 23:37
:02 2001
@@ -7,10 +7,11 @@
 enum {
        IPT_TTL_SET = 0,
        IPT_TTL_INC,
-       IPT_TTL_DEC
+       IPT_TTL_DEC,
+        IPT_TTL_RND
 };
 
-#define IPT_TTL_MAXMODE        IPT_TTL_DEC
+#define IPT_TTL_MAXMODE        IPT_TTL_RND
 
 struct ipt_TTL_info {
        u_int8_t        mode;
--- ../linux/net/ipv4/netfilter/ipt_TTL.c       Fri Aug 31 00:28:07 2001
+++ ../linux/net/ipv4/netfilter/ipt_TTL-rand.c  Thu Aug 30 23:09:34 2001
@@ -13,6 +13,7 @@
 
 #include <linux/netfilter_ipv4/ip_tables.h>
 #include <linux/netfilter_ipv4/ipt_TTL.h>
+#include <linux/random.h>
 
 MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");
 MODULE_DESCRIPTION("IP tables TTL modification module");
@@ -23,6 +24,7 @@
 {
        struct iphdr *iph = (*pskb)->nh.iph;
        const struct ipt_TTL_info *info = targinfo;
+        unsigned char j;
 
        switch (info->mode) {
                case IPT_TTL_SET:
@@ -43,6 +45,13 @@
                        else
                                iph->ttl -= info->ttl;
                        break;
+       case IPT_TTL_RND:
+          j=255;
+          while ((j+info->ttl)>255){
+           get_random_bytes(&j,1);};
+          iph->ttl=info->ttl + j;
+          break;
+                       
        }
 
        /* probably FIXME: in case we didn't change anything, don't do

---end-patch

I hope i did not make (too m)any mistakes, and that some geeks may find that
usefull..

this patch is also availible on
http://unet.univie.ac.at/~a9900470/ipt_TTL-rand.patch
greets mihi


-- 
:wq
PGP/GPG key @ http://unet.univie.ac.at/~a9900470/mihi.asc