From: Jason Opperisano <opie@817west.com>
To: netfilter@lists.netfilter.org
Subject: Re: Problems Pinging the Internet w/this script
Date: Sat, 11 Sep 2004 21:24:37 -0400 [thread overview]
Message-ID: <1094952277.5506.26.camel@wolfpack.ljm.dom> (raw)
In-Reply-To: <41439912.2090701@juno.com>
On Sat, 2004-09-11 at 20:32, Jesse wrote:
> Here's a script I'm using to create some tables which will only allow in
> on ports I'm running services. One of the problems I'm havng is that I
> can't ping the Internet with a DNS address from this machine. I've
> allowed everything in the OUTPUT table and can ping the Internet when
> using a straight IP, but when I type in "ping google.com" the machine
> hangs for a few seconds and gives me a server request error. I know it's
> something with my rules because when I flush them all I can ping
> google.com just fine. Any ideas would be greatly appreciated. I'm
> guessing it's something trivial but can't put my finger on it yet.
>
> thanks
>
> #!/bin/bash
> ########## Beginning
> ###########################################################
>
> # Define Interfaces/Networks
>
> # Inside/Intranet Interface
> INSIDEIP="192.168.7.55"
> INSIDEINT="eth0"
>
> # External/Internet Interface
> # OUTSIDEIP=
> # OUTSIDEINT=
>
> # LAN Network
> LAN="192.168.7.0/24"
>
> # Admin Host
> ADMIN="192.168.7.51"
>
> # Define other Variables
>
> RULE="/usr/sbin/iptables"
>
> # Flushing All rules/chains
> $RULE -A INPUT LOG
> $RULE -A OUTPUT LOG
> $RULE -A FORWARD LOG
um--any particular reason why you append 3 LOG rules (with incorrect
syntax, btw...) 3 lines before you flush everything out? nevermind--i'm
sure there's a fantastic reason behind it--so i'll just note, that they
should be:
iptables -A INPUT -j LOG
iptables -A OUTPUT -j LOG
iptables -A FORWARD -j LOG
> $RULE -P INPUT DROP
> $RULE -P OUTPUT DROP
> $RULE -P FORWARD DROP
> $RULE -F INPUT
> $RULE -F OUTPUT
> $RULE -F FORWARD
>
> # Adding Permittable Network/Hosts/Ports to Input Table on Internal
> Interface
>
> # Allowing DNS,FTP,SSH,Webmin,HTTP,SWAT,and Samba to Server
>
> $RULE -A INPUT -i $INSIDEINT --proto icmp --icmp-type any -j ACCEPT
> $RULE -A INPUT -i $INSIDEINT --proto tcp --dport 21 -d $INSIDEIP -j ACCEPT
> $RULE -A INPUT -i $INSIDEINT --proto tcp -s $ADMIN --dport 22 -d
> $INSIDEIP -j ACCEPT
> $RULE -A INPUT -i $INSIDEINT --proto tcp --dport 53 -d $INSIDEIP -j ACCEPT
if this machine is a DNS server offering name resolution to hosts on
$INSIDEINT--those requests are UDP, not TCP. TCP 53 is used for zone
transfers between name servers.
> $RULE -A INPUT -i $INSIDEINT --proto tcp --dport 80 -d $INSIDEIP -j ACCEPT
> $RULE -A INPUT -i $INSIDEINT --proto tcp --dport 137 -d $INSIDEIP -j
> ACCEPT
> $RULE -A INPUT -i $INSIDEINT --proto tcp --dport 138 -d $INSIDEIP -j
> ACCEPT
ports 137 and 138, if being used in the "nmbd" sense--are UDP, not TCP.
try "netstat -lntu" if you don't believe me.
> $RULE -A INPUT -i $INSIDEINT --proto tcp --dport 139 -d $INSIDEIP -j
> ACCEPT
> $RULE -A INPUT -i $INSIDEINT --proto tcp --dport 445 -d $INSIDEIP -j
> ACCEPT
stylistic note: you could reduce the number of rules you have by using
the "-m multiport" match:
iptables -A INPUT -i $INSIDEINT -p tcp -d $INSIDEIP \
-m multiport --dports 21,80,139,445 -j ACCEPT
iptables -A INPUT -i $INSIDEINT -p udp -d $INSIDEIP \
-m multiport --dports 53,137,138 -j ACCEPT
> $RULE -A INPUT -i $INSIDEINT --proto tcp -s $ADMIN --dport 901 -d
> $INSIDEIP -j ACCEPT
> $RULE -A INPUT -i $INSIDEINT --proto tcp -s $ADMIN --dport 10000 -d
> $INSIDEIP -j ACCEPT
>
> # Denying Everything on Local Network
>
> # Adding entry to allow everything originating from Internal Interface out
>
> $RULE -A OUTPUT -j ACCEPT
>
> ########## END
> ################################################################
the reason you can ping by IP is:
iptables -A OUTPUT -j ACCEPT
allows the ICMP echo-request out, and
iptables -A INPUT -i $INSIDEINT --proto icmp --icmp-type any -j ACCEPT
allows the ICMP echo-reply back in.
the above does not hold true for a DNS request (UDP 53 out & in)
i might recommend investigating the use of:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
as the first rule in your INPUT chain. and the use of:
iptables -A INPUT -j LOG --log-prefix "FW DROP IN: "
iptables -A OUTPUT -j LOG --log-prefix "FW DROP OUT: "
as the last rules in your chains.
all this (and more) is covered in depth in:
http://iptables-tutorial.frozentux.net/iptables-tutorial.html
-j
--
Jason Opperisano <opie@817west.com>
prev parent reply other threads:[~2004-09-12 1:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-12 0:32 Problems Pinging the Internet w/this script Jesse
2004-09-12 1:15 ` Problems Pinging the Internet w/this script (nfcan: addressed to exclusive sender for this address) Jim Laurino
2004-09-12 1:24 ` Jason Opperisano [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1094952277.5506.26.camel@wolfpack.ljm.dom \
--to=opie@817west.com \
--cc=netfilter@lists.netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.