Skip to content
  1. Jul 17, 2012
  2. Jul 11, 2012
  3. Jul 09, 2012
  4. Jul 04, 2012
  5. Jun 29, 2012
  6. Jun 27, 2012
  7. Jun 25, 2012
  8. Jun 23, 2012
  9. Jun 22, 2012
  10. Jun 20, 2012
  11. Jun 19, 2012
  12. Jun 18, 2012
    • Pablo Neira Ayuso's avatar
      netfilter: fix compilation of the nfnl_cthelper if NF_CONNTRACK is unset · 6e9c2db3
      Pablo Neira Ayuso authored
      
      
      This patch fixes the compilation of net/netfilter/nfnetlink_cthelper.c
      if CONFIG_NF_CONNTRACK is not set.
      
      This patch also moves the definition of the cthelper infrastructure to
      the scope of NF_CONNTRACK things.
      
      I have also renamed NETFILTER_NETLINK_CTHELPER by NF_CT_NETLINK_HELPER,
      to use similar names to other nf_conntrack_netlink extensions. Better now
      that this has been only for two days in David's tree.
      
      Two new dependencies have been added:
      
      * NF_CT_NETLINK
      * NETFILTER_NETLINK_QUEUE
      
      Since these infrastructure requires both ctnetlink and nfqueue.
      
      Reported-by: default avatarRandy Dunlap <rdunlap@xenotime.net>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      6e9c2db3
    • Pablo Neira Ayuso's avatar
      netfilter: nf_ct_helper: disable automatic helper re-assignment of different type · 32f53760
      Pablo Neira Ayuso authored
      
      
      This patch modifies __nf_ct_try_assign_helper in a way that invalidates support
      for the following scenario:
      
      1) attach the helper A for first time when the conntrack is created
      2) attach new (different) helper B due to changes the reply tuple caused by NAT
      
      eg. port redirection from TCP/21 to TCP/5060 with both FTP and SIP helpers
      loaded, which seems to be a quite unorthodox scenario.
      
      I can provide a more elaborated patch to support this scenario but explicit
      helper attachment provides a better solution for this since now the use can
      attach the helpers consistently, without relying on the automatic helper
      lookup magic.
      
      This patch fixes a possible out of bound zeroing of the conntrack helper
      extension if the helper B uses more memory for its private data than
      helper A.
      
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      32f53760
    • Pablo Neira Ayuso's avatar
      netfilter: ctnetlink: fix NULL dereference while trying to change helper · fd7462de
      Pablo Neira Ayuso authored
      
      
      The patch 1afc5679: "netfilter: nf_ct_helper: implement variable
      length helper private data" from Jun 7, 2012, leads to the following
      Smatch complaint:
      
      net/netfilter/nf_conntrack_netlink.c:1231 ctnetlink_change_helper()
               error: we previously assumed 'help->helper' could be null (see line 1228)
      
      This NULL dereference can be triggered with the following sequence:
      
      1) attach the helper for first time when the conntrack is created.
      2) remove the helper module or detach the helper from the conntrack
         via ctnetlink.
      3) attach helper again (the same or different one, no matter) to the
         that existing conntrack again via ctnetlink.
      
      This patch fixes the problem by removing the use case that allows you
      to re-assign again a helper for one conntrack entry via ctnetlink since
      I cannot find any practical use for it.
      
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      fd7462de
  13. Jun 16, 2012
    • Pablo Neira Ayuso's avatar
      netfilter: add user-space connection tracking helper infrastructure · 12f7a505
      Pablo Neira Ayuso authored
      
      
      There are good reasons to supports helpers in user-space instead:
      
      * Rapid connection tracking helper development, as developing code
        in user-space is usually faster.
      
      * Reliability: A buggy helper does not crash the kernel. Moreover,
        we can monitor the helper process and restart it in case of problems.
      
      * Security: Avoid complex string matching and mangling in kernel-space
        running in privileged mode. Going further, we can even think about
        running user-space helpers as a non-root process.
      
      * Extensibility: It allows the development of very specific helpers (most
        likely non-standard proprietary protocols) that are very likely not to be
        accepted for mainline inclusion in the form of kernel-space connection
        tracking helpers.
      
      This patch adds the infrastructure to allow the implementation of
      user-space conntrack helpers by means of the new nfnetlink subsystem
      `nfnetlink_cthelper' and the existing queueing infrastructure
      (nfnetlink_queue).
      
      I had to add the new hook NF_IP6_PRI_CONNTRACK_HELPER to register
      ipv[4|6]_helper which results from splitting ipv[4|6]_confirm into
      two pieces. This change is required not to break NAT sequence
      adjustment and conntrack confirmation for traffic that is enqueued
      to our user-space conntrack helpers.
      
      Basic operation, in a few steps:
      
      1) Register user-space helper by means of `nfct':
      
       nfct helper add ftp inet tcp
      
       [ It must be a valid existing helper supported by conntrack-tools ]
      
      2) Add rules to enable the FTP user-space helper which is
         used to track traffic going to TCP port 21.
      
      For locally generated packets:
      
       iptables -I OUTPUT -t raw -p tcp --dport 21 -j CT --helper ftp
      
      For non-locally generated packets:
      
       iptables -I PREROUTING -t raw -p tcp --dport 21 -j CT --helper ftp
      
      3) Run the test conntrackd in helper mode (see example files under
         doc/helper/conntrackd.conf
      
       conntrackd
      
      4) Generate FTP traffic going, if everything is OK, then conntrackd
         should create expectations (you can check that with `conntrack':
      
       conntrack -E expect
      
          [NEW] 301 proto=6 src=192.168.1.136 dst=130.89.148.12 sport=0 dport=54037 mask-src=255.255.255.255 mask-dst=255.255.255.255 sport=0 dport=65535 master-src=192.168.1.136 master-dst=130.89.148.12 sport=57127 dport=21 class=0 helper=ftp
      [DESTROY] 301 proto=6 src=192.168.1.136 dst=130.89.148.12 sport=0 dport=54037 mask-src=255.255.255.255 mask-dst=255.255.255.255 sport=0 dport=65535 master-src=192.168.1.136 master-dst=130.89.148.12 sport=57127 dport=21 class=0 helper=ftp
      
      This confirms that our test helper is receiving packets including the
      conntrack information, and adding expectations in kernel-space.
      
      The user-space helper can also store its private tracking information
      in the conntrack structure in the kernel via the CTA_HELP_INFO. The
      kernel will consider this a binary blob whose layout is unknown. This
      information will be included in the information that is transfered
      to user-space via glue code that integrates nfnetlink_queue and
      ctnetlink.
      
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      12f7a505
    • Pablo Neira Ayuso's avatar
      netfilter: ctnetlink: add CTA_HELP_INFO attribute · ae243bee
      Pablo Neira Ayuso authored
      
      
      This attribute can be used to modify and to dump the internal
      protocol information.
      
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      ae243bee
    • Pablo Neira Ayuso's avatar
      netfilter: nfnetlink_queue: add NAT TCP sequence adjustment if packet mangled · 8c88f87c
      Pablo Neira Ayuso authored
      User-space programs that receive traffic via NFQUEUE may mangle packets.
      If NAT is enabled, this usually puzzles sequence tracking, leading to
      traffic disruptions.
      
      With this patch, nfnl_queue will make the corresponding NAT TCP sequence
      adjustment if:
      
      1) The packet has been mangled,
      2) the NFQA_CFG_F_CONNTRACK flag has been set, and
      3) NAT is detected.
      
      There are some records on the Internet complaning about this issue:
      http://stackoverflow.com/questions/260757/packet-mangling-utilities-besides-iptables
      
      
      
      By now, we only support TCP since we have no helpers for DCCP or SCTP.
      Better to add this if we ever have some helper over those layer 4 protocols.
      
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      8c88f87c
    • Pablo Neira Ayuso's avatar
      netfilter: add glue code to integrate nfnetlink_queue and ctnetlink · 9cb01766
      Pablo Neira Ayuso authored
      
      
      This patch allows you to include the conntrack information together
      with the packet that is sent to user-space via NFQUEUE.
      
      Previously, there was no integration between ctnetlink and
      nfnetlink_queue. If you wanted to access conntrack information
      from your libnetfilter_queue program, you required to query
      ctnetlink from user-space to obtain it. Thus, delaying the packet
      processing even more.
      
      Including the conntrack information is optional, you can set it
      via NFQA_CFG_F_CONNTRACK flag with the new NFQA_CFG_FLAGS attribute.
      
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      9cb01766
Loading