Simon, Save your self allot of time and headakeee and download "emerge -p shorewall" Shorewall firewall. IPtables made easy. This site is well maintained has a great mailing list and awesome easy to follow FAQ's for Standalone workstation, 2 nic's and 3 nic setup with DMZ.
Shorewall is very light wheight and is a full featured statefull packet filtering firewall that uses a series of simple shell scripts to take all the (masacostic fun) our of configuring iptables line by line, word by word. http://www.shorewall.net Unless you trying to learn iptables ofcourse.. Heh. :P JBanks --- Simon_Kühling <[EMAIL PROTECTED]> wrote: > hi everyone, > > i'm trying to get my gentoo box running as a firewall and nat-router > for > my home-network. therefore i took the iptables-example script as seen > in > the gentoo security guide > (http://www.gentoo.org/doc/en/gentoo-security.xml#doc_chap12) and > modified it a little. > > the server is able to establish an adsl-connection and lynx has no > prob > to surf the net. the firewall script is started and from inside the > network i can easily access the server (192.168.0.1) via ssh, but > theres > no response to pings from e.g. 192.168.0.121 . the server itself is > not > able to make pings and get a strange error message: > > *** > tux root # ping www.google.com > PING www.google.akadns.net (216.239.59.99) 56(84) bytes of data. > ping: sendmsg: Operation not permitted > ping: sendmsg: Operation not permitted > ping: sendmsg: Operation not permitted > > --- www.google.akadns.net ping statistics --- > 3 packets transmitted, 0 received, 100% packet loss, time 2000ms > *** > > > my firewallscript is attached to this mail. > i do not see a mistake or something in that script. > btw another strange behavior: yesterday the nat routing suddenly ran > for > about 10 minutes without changing the script (as i can remember). > > i am thankful for every little hint :) > > simon > > #!/sbin/runscript > IPTABLES=/sbin/iptables > IPTABLESSAVE=/sbin/iptables-save > IPTABLESRESTORE=/sbin/iptables-restore > FIREWALL=/etc/firewall.rules > DNS1=145.253.2.11 > DNS2=145.253.2.75 > #inside > IINTERFACE=eth0 > #outside > OINTERFACE=ppp0 > > opts="${opts} showstatus panic save restore showoptions rules" > > depend() { > need net procparam > } > > rules() { > stop > ebegin "Setting internal rules" > > einfo "Setting default rule to drop" > $IPTABLES -P FORWARD DROP > $IPTABLES -P INPUT DROP > $IPTABLES -P OUTPUT DROP > > #default rule > einfo "Creating states chain" > $IPTABLES -N allowed-connection > $IPTABLES -F allowed-connection > $IPTABLES -A allowed-connection -m state --state > ESTABLISHED,RELATED -j ACCEPT > $IPTABLES -A allowed-connection -i $IINTERFACE -m limit -j LOG > --log-prefix "Bad packet from ${IINTERFACE}:" > $IPTABLES -A allowed-connection -j DROP > > #ICMP traffic > einfo "Creating icmp chain" > $IPTABLES -N icmp_allowed > $IPTABLES -F icmp_allowed > $IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type > time-exceeded -j ACCEPT > $IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type > destination-unreachable -j ACCEPT > $IPTABLES -A icmp_allowed -p icmp -j LOG --log-prefix "Bad ICMP > traffic:" > $IPTABLES -A icmp_allowed -p icmp -j DROP > > #Incoming traffic > einfo "Creating incoming ssh traffic chain" > $IPTABLES -N allow-ssh-traffic-in > $IPTABLES -F allow-ssh-traffic-in > #Flood protection > $IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp > --tcp-flags ALL RST --dport ssh -j ACCEPT > $IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp > --tcp-flags ALL FIN --dport ssh -j ACCEPT > $IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp > --tcp-flags ALL SYN --dport ssh -j ACCEPT > $IPTABLES -A allow-ssh-traffic-in -m state --state > RELATED,ESTABLISHED -p tcp --dport ssh -j ACCEPT > > #outgoing traffic > einfo "Creating outgoing ssh traffic chain" > $IPTABLES -N allow-ssh-traffic-out > $IPTABLES -F allow-ssh-traffic-out > $IPTABLES -A allow-ssh-traffic-out -p tcp --dport ssh -j ACCEPT > > einfo "Creating outgoing dns traffic chain" > $IPTABLES -N allow-dns-traffic-out > $IPTABLES -F allow-dns-traffic-out > $IPTABLES -A allow-dns-traffic-out -p udp -d $DNS1 --dport domain > -j ACCEPT > $IPTABLES -A allow-dns-traffic-out -p udp -d $DNS2 --dport domain > -j ACCEPT > > einfo "Creating outgoing http/https traffic chain" > $IPTABLES -N allow-www-traffic-out > $IPTABLES -F allow-www-traffic-out > $IPTABLES -A allow-www-traffic-out -p tcp --dport www -j ACCEPT > $IPTABLES -A allow-www-traffic-out -p tcp --dport https -j ACCEPT > > #Catch portscanners > einfo "Creating portscan detection chain" > $IPTABLES -N check-flags > $IPTABLES -F check-flags > $IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -m > limit --limit 5/minute -j LOG --log-level alert --log-prefix > "NMAP-XMAS:" > $IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP > $IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -m limit > --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS:" > $IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -j DROP > $IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG > -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix > "XMAS-PSH:" > $IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG > -j DROP > $IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -m limit > --limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN:" > $IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -j DROP > $IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -m > limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST:" > $IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP > $IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -m > limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN:" > $IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP > > # Apply and add invalid states to the chains > einfo "Applying chains to INPUT" > $IPTABLES -A INPUT -m state --state INVALID -j DROP > $IPTABLES -A INPUT -j icmp_allowed > $IPTABLES -A INPUT -j check-flags > $IPTABLES -A INPUT -i lo -j ACCEPT > $IPTABLES -A INPUT -j allow-ssh-traffic-in > $IPTABLES -A INPUT -j allowed-connection > > einfo "Applying chains to FORWARD" > $IPTABLES -A FORWARD -m state --state INVALID -j DROP > $IPTABLES -A FORWARD -j icmp_allowed > $IPTABLES -A FORWARD -j check-flags > $IPTABLES -A FORWARD -o lo -j ACCEPT > $IPTABLES -A FORWARD -j allow-ssh-traffic-in > $IPTABLES -A FORWARD -j allow-www-traffic-out > $IPTABLES -A FORWARD -j allowed-connection > > einfo "Applying chains to OUTPUT" > $IPTABLES -A OUTPUT -m state --state INVALID -j DROP > $IPTABLES -A OUTPUT -j icmp_allowed > $IPTABLES -A OUTPUT -j check-flags > $IPTABLES -A OUTPUT -o lo -j ACCEPT > $IPTABLES -A OUTPUT -j allow-ssh-traffic-out > $IPTABLES -A OUTPUT -j allow-dns-traffic-out > $IPTABLES -A OUTPUT -j allow-www-traffic-out > $IPTABLES -A OUTPUT -j allowed-connection > > #Allow client to route through via NAT (Network Address > Translation) > einfo "Allowing client to route through via NAT" > $IPTABLES -t nat -A POSTROUTING -o $OINTERFACE -j MASQUERADE > eend $? > } > > start() { > ebegin "Starting firewall" > if [ -e "${FIREWALL}" ]; then > restore > else > einfo "${FIREWALL} does not exists. Using default rules." > rules > fi > eend $? > } > > stop() { > ebegin "Stopping firewall" > $IPTABLES -F > $IPTABLES -t nat -F > $IPTABLES -X > $IPTABLES -P FORWARD ACCEPT > $IPTABLES -P INPUT ACCEPT > $IPTABLES -P OUTPUT ACCEPT > eend $? > } > > showstatus() { > ebegin "Status" > $IPTABLES -L -n -v --line-numbers > einfo "NAT status" > $IPTABLES -L -n -v --line-numbers -t nat > eend $? > } > > panic() { > ebegin "Setting panic rules" > $IPTABLES -F > $IPTABLES -X > $IPTABLES -t nat -F > $IPTABLES -P FORWARD DROP > $IPTABLES -P INPUT DROP > $IPTABLES -P OUTPUT DROP > $IPTABLES -A INPUT -i lo -j ACCEPT > $IPTABLES -A OUTPUT -o lo -j ACCEPT > eend $? > } > > save() { > ebegin "Saving Firewall rules" > $IPTABLESSAVE > $FIREWALL > eend $? > } > > restore() { > ebegin "Restoring Firewall rules" > $IPTABLESRESTORE < $FIREWALL > eend $? > } > > restart() { > svc_stop; svc_start > === message truncated ===> -- > [EMAIL PROTECTED] mailing list __________________________________ Do you Yahoo!? Exclusive Video Premiere - Britney Spears http://launch.yahoo.com/promos/britneyspears/ -- [EMAIL PROTECTED] mailing list