Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Oct 2000 02:00:08 -0700 (PDT)
From:      Robin Melville <robmel@innotts.co.uk>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: bin/22238: User PPP "deny_incoming" option does not deny incoming connections
Message-ID:  <200010250900.CAA39907@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/22238; it has been noted by GNATS.

From: Robin Melville <robmel@innotts.co.uk>
To: freebsd-gnats-submit@FreeBSD.org
Cc: Ruslan Ermilov <ru@sunbay.com>, Brian Somers <brian@FreeBSD.org>,
	robmel@nadt.org.uk, Eivind Eklund <eivind@FreeBSD.org>
Subject: Re: bin/22238: User PPP "deny_incoming" option does not deny
 incoming connections
Date: Wed, 25 Oct 2000 09:52:27 +0100

 Apologies for following up my own posts.
 
 Following comments by Ruslan Ermilov I am submitting a revised patch 
 for this issue. This fixes the hole and causes ppp(8) to have the 
 same behaviour as the natd(8) daemon in relation to the deny_incoming 
 flag. It permits packets that are scrambled or otherwise unrecognised 
 by the libalias(3) engine when deny_incoming is not set but drops 
 them if it is.
 
 The rationale for dropping scrambled or unrecognised packets as well 
 as connection attempts when deny_incoming is set is that the default 
 behaviour of a one-way firewall is to block packets which are not 
 responses to traffic originating from the interior of the firewall. 
 Since the aliasing engine is unable to confirm this for packets it 
 ignores, the safest action is to discard them.
 
 Libalias(3) returns an ambiguous result code (PKT_ALIAS_IGNORED) 
 which serves to indicate both incoming scrambled or unrecognised 
 packets as well as packets for which a connection does not exist in 
 its rewriting table when PKT_ALIAS_DENY_INCOMING is set. However, the 
 response of ppp(8) to these conditions is unambiguous. Consequently 
 it makes more sense to fix ppp(8) rather than alter the interface to 
 libalias(3) by adding an additional result code.
 
 Revised patch:
 --- nat_cmd.c   Sun Oct 22 11:22:01 2000
 +++ nat_cmd+.c  Wed Oct 25 07:59:24 2000
 @@ -421,12 +421,20 @@
         break;
 
       case PKT_ALIAS_IGNORED:
 -      if (log_IsKept(LogTCPIP)) {
 -        log_Printf(LogTCPIP, "NAT engine ignored data:\n");
 +       /* libalias(3) has ignored this packet. This may be either 
 because it does not
 +       understand it or because deny_incoming is set and no link 
 exists in the aliasing
 +       table. */
 +       if (log_IsKept(LogTCPIP)) {
 +        log_Printf(LogTCPIP, "NAT engine ignored packet:\n");
           PacketCheck(bundle, MBUF_CTOP(bp), bp->m_len, NULL, NULL, NULL);
         }
 +      /* drop the packet if deny_incoming is set */
 +      if (PacketAliasSetMode(0,0) & PKT_ALIAS_DENY_INCOMING) {
 +             m_freem(bp);
 +             bp = NULL;
 +           }
         break;
 -
 +
       default:
         log_Printf(LogWARN, "nat_LayerPull: Dropped a packet (%d)....\n", ret);
         m_freem(bp);
 
 -- 
 Robin Melville, Addiction Information Services 
 Nottingham Alcohol & Drug Team
 work: robmel@nadt.org.uk        http://www.nadt.org.uk/
 home: robmel@innotts.co.uk	http://www.innotts.co.uk/~robmel
 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200010250900.CAA39907>