Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Apr 1999 22:06:06 -0400
From:      "Christopher J. Michaels" <cjm2@earthling.net>
To:        <sporkl@ix.netcom.com>
Cc:        "'FreeBSD Mailing List (E-mail)'" <questions@FreeBSD.ORG>
Subject:   RE: IPFW filtering on a dynamic linkup.
Message-ID:  <001a01be861b$5b2d7fa0$6400000a@weeble.dyndns.org>
In-Reply-To: <Pine.BSF.4.05.9904121853010.316-100000@pigstuy.penguinpowered.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Well, the strange thing was that not a single DNS query would resolve unless
I opened port 53.  I don't quite understand it myself.
-Chris

-----Original Message-----
From: Spike [mailto:spork@startrekmail.com]
Sent: Monday, April 12, 1999 7:00 PM
To: Christopher J. Michaels
Cc: 'FreeBSD Mailing List (E-mail)'
Subject: RE: IPFW filtering on a dynamic linkup.


On Mon, 12 Apr 1999, Christopher J. Michaels wrote:

> Ok, one last question...
>
> I'd like to block all access coming in via the tun0 interface to all the
> reserved ports 1-1024, and then open up ports as I need them.  This is
> partly paranoia and partly a learning experience.

ipfw add 1000 deny tcp from any to {localhost IP} 1-1024 via tun0

>
> Now, i'm leaving 113 open for ident, and I found out the hard way that I
> need to leave 53 open for DNS otherwise it doesn't seem to work at all.

ipfw add 900 pass tcp from any to {localhost IP} 113,53
ipfw add 901 pass udp form any to {localhost IP} 53

I don't have port 53 open (UDP or TCP) to the outside world, so I don't
see why you need the rules opening port 53.

>
> Does anyone know of any other ports that I will need to keep open so that
> things function properly.

Nope, as long as localhost can send data to any part of itself (as in,
ipfw add pass any from any to any via lo0) you shouldn't *need* anything
open. Certain programs might need open ports via tun0, and those will
error and then you can open up what they need.

>
> -Chris
>
>
> -----Original Message-----
> From: Spike [mailto:spork@startrekmail.com]
> Sent: Sunday, April 11, 1999 1:21 PM
> To: Christopher Michaels
> Cc: FreeBSD Mailing List (E-mail)
> Subject: RE: IPFW filtering on a dynamic linkup.
>
>
> On Sun, 11 Apr 1999, Christopher Michaels wrote:
>
> > > -----Original Message-----
> > > From:	Spike [SMTP:spork@startrekmail.com]
> > > Sent:	Sunday, April 11, 1999 1:59 AM
> > > To:	Christopher Michaels
> > > Cc:	FreeBSD Mailing List (E-mail)
> > > Subject:	Re: IPFW filtering on a dynamic linkup.
> > >
> > > On Sun, 11 Apr 1999, Christopher Michaels wrote:
> > >
> > > > FreeBSD-2.2.8
> > > >
> > > > Hello,
> > > >  I've been trying to figure out how to do this with no avail.  I
have
> a
> > > > dialup link, using usermode ppp on the tun0 device.  What I would
like
> > > to be
> > > > able to do is filter requests going to specific ports, via the
dialup
> > > link.
> > > > So for example, if someone tries to connect to my machine's telnet
> port
> > > (23)
> > > > it'll be filtered.  I don't want to filter out requests via the fxp0
> > > > interface though.  I also do not was to filter out any requests to
> port
> > > 23
> > > > going out over the tun0 device.  The thing is, most of the example
> rules
> > > in
> > > > the ipfw config file need the machine's IP address to do this, and
it
> is
> > > a
> > > > dynamic address.
> > >
> > > You can use ipfw (man ipfw) to do this.  In order to get your IP
> address,
> > > do the following:
> > >
> > > ifconfig tun0 | grep inet | sed -e 's/inet //' -e 's/ -->.*//'
> > >
> > > This will print your IP. I have a list of firewall rules in a shell
> > > script. A simple example is:
> > >
> > > #!/bin/sh
> > > /sbin/ipfw add pass any from $1 to any
> > >
> > > Then, you use xargs to makethe output of the first command I gave you
in
> > > to the script full of ipfw rules. Example:
> > >
> > > #!/bin/sh
> > >
> > > ifconfig tun0 | grep inet | sed -e 's/inet //' -e 's/ -->.*//' |
> > > xargs -t /etc/firewallrules.sh
> > >
> > > You can not block packets coming in fxp0 by specifying the interface
on
> > > all your ipfw rules. Example:
> > >
> > > ipfw add pass log any from any to $1 23 via tun0
> > > 					^^^^^^^^
> > >
> > 	Huh?  you totally lost me there.  Can you possibly reword that above
> > statement, I'm sorry to say it doesn't make sense to me.  I think that
by
> my
> > referencing fxp0 at all I confused the issue.  fxp0 is on the internal
> > ethernet (which you probably figured out).
> >
> > 	All I meant is that if I set a rule that was something to the effect
> > of...
> > 		ipfw add 1000 deny tcp from any to any 23 via tun0
> >
> > 	...that it would block all traffic that was destined for port 23 on
> > any machine (over tun0).  Which obviously is not what I want.  I could
> > technically add a subnet mask to the destination and just suck in all
the
> > ip's that my isp uses, and that would do the job effectively, it would
> limit
> > me if I were to connect to someone else's machine from my isp.
>
> Ahhh, I see. I'm sorry, I didn't understand that you needed to filter only
> for the ppp machine but not have the filter black data to the machines on
> the other side of fxp0. This will filter telnet to the ppp machine but not
> telnet data going to machines over fxp0:
>
> ($1 is the telnet machines IP)
>
> ipfw add 900 pass tcp from any to (other machine's IP) 23 via tun0
> ipfw add 1000 deny tcp from any to $1 23 via tun0
>
> The first rule is possibly redundant, though I'm not sure.
> >
> > 	Now if I were to use something like your solution, I would be
> > replacing that second any with the ip address of my FreeBSD machine.
> Which
> > makes sense conceptually, and is basically what I want to do.
> >
> > 	Am I supposed to run this script in ppp.linkup?  Do the commands you
> > gave above account for the fact that the ppp link has a tendency to
build
> up
> > a painfully large list of ip addresses ( I cannot test this till I get
> home,
> > I'm at work now).  There are times when I'll do an 'ifconfig tun0' and
> have
> > 20 odd addresses listed.  I know how to clean that out and is off topic.
>
> Well, that isn't what I've done but I believe it would be  possible using
> ppp's !, shell, or !bg commands. What I've done is make ppp one element of
> a script. I run ppp in -background mode, and it dials out and then
> detaches. After it detaches, I run other scripts I need to run when I get
> online.
>
> As for the problem of tun0 building up IP addresses, you could either
> place the commands to get rid of that at the beginning of your script that
> determines your IP, or you could use another method to learn your IP.
>
> This other method could be the following: Take your routing table (netstat
> -rn) and grep for your ISP's terminal server's IP (or a big enough chunk
> of it to match, if your ISP has more than one.) This leaves you with two
> routes- default, which is your -> terminal server, and the opposit, which
> is terminal server -> you. Use sed to delete the line for the default
> route, and then awk to sift your IP out of the remaining line. This would
> be:
>
> #!/bin/sh
>
> netstat -rn |
> grep {terminal server's IP |
> sed -e '/default/d' |
> awk '{print $2}'
>
>
> Hope this helps.
>
> > > >
> > > > Also, is there anyway/anywhere that ipfw logs packets that matched a
> > > > specific rule, as in where and where it originated?
> > >
> > > Use the "log" command to ipfw. You need to define "options
> > > IPFIREWALL_VERBOSE" in your kernel config file, as well as the
"options
> > > IPFIREWALL" needed for basic ipfw.
> > >
> > 	Where does it store this information?  I believe I have these
> > already compiled in.  I know I can get a readout of how many packets
> matched
> > a given rule, I want to know where they came from though.  Is this even
> > possible with ipfw?
>
> It stores this information /var/log/messages.
>
> >
> > > >
> > > > Any help, pointers, references (other than 'man ipfw' unless you are
> > > > pointing out a specific thing I missed) would be appreciated.
> > > > -Chris
> > > >
> > > > P.S. I don't want to use tcpwrappers, citing the telnet port was
just
> an
> > > > example.
>
>
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-questions" in the body of the message
>
>


	-Spike Gronim
	 sporkl@ix.netcom.com
	 Finger gronimw@shell.stuy.edu for PGP public key.

		The majority only rules those who let them.



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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?001a01be861b$5b2d7fa0$6400000a>