Hi. Passive OS fingerprinting netfilter module allows to passively detect remote OS and perform various netfilter actions based on that knowledge. This module compares some data (WS, MSS, options and it's order, ttl, df and others) from packets with SYN bit set with dynamically loaded OS fingerprints. Fingerprint matching rules can be downloaded from OpenBSD source tree and loaded via netfilter netlink subsystem into the kernel via special util found in archive. Archive contains library file (also attached), which was shipped with iptables extensions some time ago (at least when ipt_osf existed in patch-o-matic). This release moves library build to the 1.4.3 features and adds nfnetlink support for the module configuration. Also I incorporated all comments which were rised during the previous sends. Fingerprints can be downloaded from http://www.openbsd.org/cgi-bin/cvsweb/src/etc/pf.os Example usage: # modrpobe xt_osf # ./nfnl_osf -f ./pf.os -d switch removes fingerprints # iptables -I INPUT -j ACCEPT -p tcp -m osf --genre Linux --log 0 --ttl 2 You will find something like this in the syslog: Windows [2000:SP3:Windows XP Pro SP1, 2000 SP3]: 11.22.33.55:4024 -> 11.22.33.44:139 hops=4 Linux [2.5:] : 1.2.3.4:44448 -> 11.22.33.44:22 hops=4 Please consider for inclusion. Thank you. Passive OS fingerprint homepage (archives, examples): http://www.ioremap.net/projects/osf And a small foot note: netfilter guys, you have really, Really, REALLY weird feel of the reality since porting whatever else to the netfilter netlink code requires non-trivial amount of god-blessed substances processed by the brain of the poor human. Signed-off-by: Evgeniy Polyakov <zbr@ioremap.net> diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h index 7d8e045..71babbd 100644 --- a/include/linux/netfilter/nfnetlink.h +++ b/include/linux/netfilter/nfnetlink.h @@ -46,7 +46,8 @@ struct nfgenmsg { #define NFNL_SUBSYS_CTNETLINK_EXP 2 #define ...
Please get rid of the connector remains. The decision whether to still merge it in this window is up to Dave. I already have some late-comers queued up that I hope to still get in and I don't want to unnecessarily decrease my chances :) --
I left that chunk to the case when we will want to send notifications to the userspace, right now we do not , so it is commented. And yes, names were not changed :) If Dave will refuse to pull it, please queue it into the netfilter tree for the next merge window update, since I will miss it almost for sure. -- Evgeniy Polyakov --
nfnetlink also supports notifications. Please get rid of this, it should be no problem to resurrect the necessary parts later Will do. --
Ok, patch below does not contain it.
Signed-off-by: Evgeniy Polyakov <zbr@ioremap.net>
diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h
index 7d8e045..71babbd 100644
--- a/include/linux/netfilter/nfnetlink.h
+++ b/include/linux/netfilter/nfnetlink.h
@@ -46,7 +46,8 @@ struct nfgenmsg {
#define NFNL_SUBSYS_CTNETLINK_EXP 2
#define NFNL_SUBSYS_QUEUE 3
#define NFNL_SUBSYS_ULOG 4
-#define NFNL_SUBSYS_COUNT 5
+#define NFNL_SUBSYS_OSF 5
+#define NFNL_SUBSYS_COUNT 6
#ifdef __KERNEL__
diff --git a/include/linux/netfilter/xt_osf.h b/include/linux/netfilter/xt_osf.h
new file mode 100644
index 0000000..11903a9
--- /dev/null
+++ b/include/linux/netfilter/xt_osf.h
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2003+ Evgeniy Polyakov <johnpol@2ka.mxt.ru>
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef _XT_OSF_H
+#define _XT_OSF_H
+
+#define MAXGENRELEN 32
+#define MAXDETLEN 64
+
+#define XT_OSF_GENRE (1<<0)
+#define XT_OSF_TTL (1<<1)
+#define XT_OSF_LOG (1<<2)
+#define XT_OSF_UNUSED (1<<3)
+#define XT_OSF_CONNECTOR (1<<4)
+#define XT_OSF_INVERT (1<<5)
+
+#define XT_OSF_LOGLEVEL_ALL 0
+#define XT_OSF_LOGLEVEL_FIRST 1
+#define XT_OSF_LOGLEVEL_ALL_KNOWN 2
+
+#define XT_OSF_TTL_TRUE 0 /* True ip and fingerprint TTL comparison ...Thanks. I'll wait for Dave's decision before applying it. --
Looks like David did not pull it in, please queue OSF and its library into netfilter tree. Thank you. -- Evgeniy Polyakov --
Hi. Just curious... Ping? :) -- Evgeniy Polyakov --
