PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables sperrt windows-rechner aus



ash51
09.10.02, 10:16
hi!

hab ein kleines? problem mit iptables und windowsrechnern.
hab hier nen router der ein netzwerk über dsl ins netz bringt. funktioniert alles soweit, allerdings kommen die windowskisten nachdem die inet-verbindung getrennt wurde (z.b. 24h zwangstrennung) und eine neueinwahl stattfand nicht mehr ins inet. damit wieder alles geht muß ich sämtliche regeln löschen und neu definieren, also praktisch das iptables-script neu starten.
dieses problem betrifft allerdings nur windowsrechner, unter linux kann ich ganz normal mails abrufen, surfen usw. versuche wie z.b. das iptables-script per ip-up in /etc/ppp bei einer erneuten einwahl neu zu starten halfen auch nicht weiter...
hat jemand einen rat? danke schonmal...

Thomas
09.10.02, 20:50
Hast du dir ein eigenes Script geschrieben oder verwendest du die SuSE-Firewall oder ähnliches?
Falls du ein eigenes Script geschrieben hast, dann poste das doch mal, sonst ist es schwer zu beurteilen, woran es liegt!

Thomas.

ash51
10.10.02, 08:37
das script ist noch in der entwicklungsphase, ich bastel da von zeit zu zeit immer weiter dran rum. ist etwas länger das script, ich hoffe das es nicht zu unübersichtlich ist..... ;)

btw.: ich hatte das gleich problem bei einen script von linuxguruz.org beobachtet das ich testweise mal im einsatz hatte: http://www.linuxguruz.org/iptables/scripts/rc.firewall_023.txt


#!/bin/bash

################################################## ################################################## #############################
# #
# IPTABLES FIREWALL v 0.1.1 #
# COPYLEFT by B3ttyBoO ;-) #
# #
# Ideen und Anregungen stammen von #
# Oskar Andreassons Iptables Tutorial 1.1.11 (http://www.netfilter.org/documentation/tutorials/blueflux/iptables-tutorial.html) #
# und ein paar anderen Scripts... #
# #
# Falls eine Kernelversion < 2.4.18 eingesetzt wird folgende default-policies auskommentieren #
# #
# $IPTABLES -t mangle -P POSTROUTING ACCEPT #
# $IPTABLES -t mangle -P INPUT ACCEPT #
# $IPTABLES -t mangle -P FORWARD ACCEPT #
# #
################################################## ################################################## #############################

IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe

test -x $IPTABLES || exit 5
test -x $MODPROBE || exit 5

case "$1" in
start)
echo
echo -n "Starten des Forwarding und der Filterregeln..."
echo
echo

######################## Module laden ###############################################

$MODPROBE ip_nat_irc
$MODPROBE ip_nat_ftp

$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE iptable_filter
$MODPROBE iptable_mangle
$MODPROBE iptable_nat
$MODPROBE ipt_LOG
$MODPROBE ipt_limit
$MODPROBE ipt_state
$MODPROBE ipt_MASQUERADE
$MODPROBE ipt_REJECT ### NEU

#$MODPROBE ip_nat_irc ports=$IRCPORTS
#$MODPROBE ip_conntrack_irc ports=$IRCPORTS

########### Alle Tabellen löschen und default-policy auf DROP einstellen ############
#
$IPTABLES -P INPUT DROP #
$IPTABLES -P FORWARD DROP #
$IPTABLES -P OUTPUT DROP #
#
$IPTABLES -t nat -P PREROUTING ACCEPT #
$IPTABLES -t nat -P POSTROUTING ACCEPT #
$IPTABLES -t nat -P OUTPUT ACCEPT #
#
$IPTABLES -t mangle -P PREROUTING ACCEPT #
$IPTABLES -t mangle -P POSTROUTING ACCEPT #
$IPTABLES -t mangle -P INPUT ACCEPT #
$IPTABLES -t mangle -P OUTPUT ACCEPT #
$IPTABLES -t mangle -P FORWARD ACCEPT #
#
$IPTABLES -F #
$IPTABLES -t nat -F #
$IPTABLES -t mangle -F #
#
$IPTABLES -X #
$IPTABLES -t nat -X #
$IPTABLES -t mangle -X #
#
############################# Jetzt wirds kompliziert d[-_-]p #######################
#
# Interfaces konfigurieren
#
INET_IP=$(ifconfig ppp0 | grep inet | cut -d : -f 2 | cut -d \ -f 1)
INET_IFACE="ppp0"
LAN_IP="192.168.1.5"
LAN_IP_RANGE="192.168.1.0/24"
LAN_BCAST_ADRESS="192.168.1.255"
LAN_IFACE="eth1"
LO_IFACE="lo"
LO_IP="127.0.0.1"
#
###################### proc set up ###########################################
#
# Disabling IP Spoofing attacks
echo "2" > /proc/sys/net/ipv4/conf/all/rp_filter

# Don't respond to broadcast pings
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Enable forwarding
echo "1" >/proc/sys/net/ipv4/ip_forward

# Block source routing
echo "0" >/proc/sys/net/ipv4/conf/all/accept_source_route

# Kill timestamps. These have been the subject of a recent bugtraq thread
echo "0" > /proc/sys/net/ipv4/tcp_timestamps

# Enable SYN Cookies
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# Kill redirects
echo "0" >/proc/sys/net/ipv4/conf/all/accept_redirects

# Enable bad error message protection
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# Allow dynamic ip addresses|wenn dynamische Adresszuweisung durch den ISP, aktivieren
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

# Log martians (packets with impossible addresses)
# RiVaL said that certain NICs don't like this. Comment out if necessary.
# echo "1" >/proc/sys/net/ipv4/conf/all/log_martians

# Reduce DoS'ing ability by reducing timeouts
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout
echo "1800" > /proc/sys/net/ipv4/tcp_keepalive_time
echo "1" > /proc/sys/net/ipv4/tcp_window_scaling
echo "0" > /proc/sys/net/ipv4/tcp_sack
echo "1280" > /proc/sys/net/ipv4/tcp_max_syn_backlog
#
####################### Create chain for bad tcp packets and syn flood protection ##################

$IPTABLES -N bad_tcp_packets

################## Create separate chains for ICMP, TCP and UDP to traverse ########################

$IPTABLES -N allowed
$IPTABLES -N icmp_packets
$IPTABLES -N tcp_packets
$IPTABLES -N udpincoming_packets
$IPTABLES -N forward_block

################### CHAINS ###############################################
#
##### bad_tcp_packets chain
#
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "FW: New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

# Kill invalid packets (illegal combination of flags)
$IPTABLES -A INPUT -m state --state INVALID -j DROP ### NEU

# Fragmente loggen und droppen
$IPTABLES -A bad_tcp_packets -f -j LOG --log-prefix "FW: EVIL FRAGMENTS: "
$IPTABLES -A bad_tcp_packets -f -j DROP

# Refuse packets claiming to be from a Class A private network.
$IPTABLES -A bad_tcp_packets -s 10.0.0.0/8 -j LOG --log-prefix "FW: CLAIMED CLASS A: "
$IPTABLES -A bad_tcp_packets -s 10.0.0.0/8 -j DROP

# Refuse packets claiming to be from a Class B private network.
$IPTABLES -A bad_tcp_packets -s 172.16.0.0/16 -j LOG --log-prefix "FW: CLAIMED CLASS B: "
$IPTABLES -A bad_tcp_packets -s 172.16.0.0/16 -j DROP

# Refuse packets claiming to be from a Class C private network.
# (Address-Spoofing --> Should be already catched by rp_filter)
$IPTABLES -A bad_tcp_packets -i ppp0 -s 192.168.0.0/16 -j LOG --log-prefix "FW: CLAIMED CLASS C: "
$IPTABLES -A bad_tcp_packets -i ppp0 -s 192.168.0.0/16 -j DROP

# Refuse Class D multicast addresses. Multicast is illegal as a source address.
$IPTABLES -A bad_tcp_packets -s 224.0.0.0/4 -j LOG --log-prefix "FW: CLAIMED CLASS D: "
$IPTABLES -A bad_tcp_packets -s 224.0.0.0/4 -j DROP

# Refuse Class E reserved IP addresses.
$IPTABLES -A bad_tcp_packets -s 240.0.0.0/5 -j LOG --log-prefix "FW: CLAIMED CLASS E: "
$IPTABLES -A bad_tcp_packets -s 240.0.0.0/5 -j DROP

# Refuse packets claiming to be to the loopback interface.
# Should be already catched by rp_filter
$IPTABLES -A bad_tcp_packets -i ppp0 -d 127.0.0.0/8 -j LOG --log-prefix "FW: CLAIMED LO INTERFACE: "
$IPTABLES -A bad_tcp_packets -i ppp0 -d 127.0.0.0/8 -j DROP

# Refuse broadcast address packets.
#$IPTABLES -A bad_tcp_packets -d 192.168.0.255/8 -j DROP

# Packete aus dem Internet mit der eigenen ppp0-IP droppen
$IPTABLES -A bad_tcp_packets -i ppp0 -s $INET_IP -j LOG --log-prefix "FW: CLAIMED OWN ppp0 IP: "
$IPTABLES -A bad_tcp_packets -i ppp0 -s $INET_IP -j DROP

#
####### forward_block chain
#

$IPTABLES -A forward_block -o $INET_IFACE -p tcp --dport 137:139 -j REJECT ### NEU
$IPTABLES -A forward_block -o $INET_IFACE -p udp --dport 137:139 -j REJECT ### NEU
$IPTABLES -A forward_block -o $INET_IFACE -p tcp -s 192.168.1.57/24 --dport 4661:4665 -j REJECT ### NEU
$IPTABLES -A forward_block -o $INET_IFACE -p udp -s 192.168.1.57/24 --dport 4661:4665 -j REJECT ### NEU

#
###### allowed chain
#

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

#
###### TCP rules (Dienste die auf loewe laufen von außen erreibar machen)
#

# ftp
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
# ssh
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed

#
###### UDP ports (Dienste die auf loewe laufen von außen erreibar machen)

# dns
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT

# ntp
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --destination-port 123 -j ACCEPT

# icq
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --destination-port 4000 -j ACCEPT

#
###### ICMP rules
#
# icmp-type 8 = echo request
#$IPTABLES -A icmp_packets -p ICMP --icmp-type 8 -j ACCEPT

# icmp-type 11 = TTL equals 0 during transist/reassembly
$IPTABLES -A icmp_packets -p ICMP --icmp-type 11 -j ACCEPT

# ping flood protection (icmp-type 8 = echo-request)
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT ### NEW
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP ### NEW

# icmp-type 0 = echo reply
#$IPTABLES -A icmp_packets -p ICMP --icmp-type 0 -j DROP ### NEW
#
####################### INPUT chain ##############################
#
# Bad TCP packets we don't want.
#

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

# packete von kraft port 4661:4665 (edonkey2000) werden gedroppt =P
#$IPTABLES -A INPUT -i $LAN_IFACE -s 192.168.1.57/24 -p tcp --sport 4661:4665 -j REJECT ### NEU
#$IPTABLES -A INPUT -i $LAN_IFACE -s 192.168.1.57/24 -p udp --sport 4661:4665 -j REJECT ### NEU
#$IPTABLES -A INPUT -i $LAN_IFACE -s 192.168.1.57/24 -p tcp --sport 21:22 -j REJECT ### NEU TEST
#$IPTABLES -A INPUT -i $LAN_IFACE -s 192.168.1.57/24 -p udp --sport 21:22 -j REJECT ### NEU TEST

#

#
# Regeln für unser eigenes Netzwerk
#

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BCAST_ADRESS -j ACCEPT

#
# Regeln für Pakete die vom Internet kommen
#

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udpincoming_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

#
# Pakete die nicht zutreffen loggen
#

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "FW: IPT INPUT packet died: "

#
# Hier wurden nicht zutreffende Pakete durch die default-policy gedroppt
#
################### FORWARD chain ########################
#
# Bad TCP packets we don't want
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

# Kill invalid packets (illegal combination of flags)
$IPTABLES -A FORWARD -m state --state INVALID -j DROP ### NEU

# Check packtes we don´t want to forward
$IPTABLES -A FORWARD -p tcp -j forward_block ### NEU
$IPTABLES -A FORWARD -p udp -j forward_block ### NEU

#
# Accept the packets we actually want to forward
#

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# Log weird packets that don't match the above.
#

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "FW: IPT FORWARD packet died: "

#
# Hier wurden nicht zutreffende Pakete durch die default-policy gedroppt
#
##################### OUTPUT chain ##########################
#
# Bad TCP packets we don't want.
#

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

#
# Special OUTPUT rules to decide which IP's to allow.
#

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
###$IPTABLES -A OUTPUT -p ALL -o ppp0 -j ACCEPT

#
# Log weird packets that don't match the above.
#

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "FW: IPT OUTPUT packet died: "

#
# Hier wurden nicht zutreffende Paktet durch die default-policy gedroppt
#
######################################### nat table ############################################
#
# Enable simple IP Forwarding and Network Address Translation
#
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
#
#################### ENDE DER REGELN ################################################## #####
;;
stop)
echo
echo -n "Beenden des Forwarding und der Filterregeln..."
echo

# Alle Regeln löschen, "Firewall" komplett deaktiviert. Forwarding ist aktiviert.
#
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

# NAT - MASQUERADING
$IPTABLES -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# FORWARDING
$IPTABLES -A FORWARD -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

echo
;;
restart)
$0 stop
$0 start
;;
status)
echo
echo "*********************** FILTER ************************************************** ***********"
echo
$IPTABLES -v -n -L
echo
echo "************************* NAT ************************************************** ************"
echo
$IPTABLES -v -t nat -L -n
echo
echo "************************* MANGLE ************************************************** *********"
echo
$IPTABLES -v -t mangle -L -n
echo
;;
*)
echo
echo "Usage: $0 {start|stop|status|restart|}"
echo
exit 1
;;
esac