iptables + adsl
-
hallo,
ich schlag mich jetzt schon ein paar tage mit einem iptables script herum...meine konfiguration:
INTERNET<----->| ADSL-MODEM 10.0.0.138 |<------------->|10.0.0.140 eth0 bzw. ppp0 LINUX-ROUTER 192.168.1.1|<--------->INTERN
das \1:
#!/bin/sh #local interface INT="eth1" #nach draußen EXT="ppp0" #loopback LO="lo" #ports auf router von aussen zugänglich machen SERVER_PORTS_TCP="" SERVER_PORTS_UDP="" #ports an rechner im lokalen netz zugänglich machen DEST_HOST="" PORTS_TCP="" PORTS_UDP="" ##################################################### case "$1" in start) echo -n "Starte Firewall (Paketfilter): " # Alte Regeln loeschen iptables -F iptables -t nat -F iptables -t mangle -F iptables -X iptables -t nat -X iptables -t mangle -X #default policies iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP #ip-forwarding einschalten echo "1" > /proc/sys/net/ipv4/ip_forward ##################### #eingehender verkehr# ##################### #neue verbindungen verboten iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP #von intern erlaubt iptables -A INPUT -i $INT -j ACCEPT #ueber loopback erlaubt iptables -A INPUT -i $LO -j ACCEPT #von aussen verboten iptables -A INPUT -i $EXT -s 10.0.0.0/8 -j DROP iptables -A INPUT -i $EXT -s 172.16.0.0/12 -j DROP iptables -A INPUT -i $EXT -s 192.168.0.0/24 -j DROP #bestehende verbindungen von aussen erlauben iptables -A INPUT -i $EXT -m state --state ESTABLISHED,RELATED -j ACCEPT #ports auf router von aussen if [ "$SERVER_PORTS_TCP" != "" ]; then iptables -A INPUT -i $EXT -p tcp -m multiport --dport $SERVER_PORTS_TCP -j ACCEPT fi if [ "$SERVER_PORTS_UDP" != "" ]; then iptables -A INPUT -i $EXT -p udp -m multiport --dport $SERVER_PORTS_UDP -j ACCEPT fi ############ #forwarding# ############ #wegen telekom iptables -I FORWARD -p TCP --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu #lokal -> internet erlaubt iptables -A FORWARD -i $INT -o $EXT -j ACCEPT #internet -> lokal nur bestehende verbindungen iptables -A FORWARD -i $EXT -o $INT -m state --state ESTABLISHED,RELATED -j ACCEPT #ports auf rechner im lokalem netz if [ "$PORTS_TCP" != "" ]; then iptables -A FORWARD -i $EXT -o $INT -p tcp -m multiport --dport $PORTS_TCP -d $DEST_HOST -j ACCEPT fi if [ "$PORTS_UDP" != "" ]; then iptables -A FORWARD -i $EXT -o $INT -p tcp -m multiport --dport $PORTS_UDP -d $DEST_HOST -j ACCEPT fi ######## #output# ######## #alles erlaubt iptables -A OUTPUT -o $INT -j ACCEPT iptables -A OUTPUT -o $EXT -j ACCEPT iptables -A OUTPUT -o $LO -j ACCEPT ######### #routing# ######### #umleiten der ports auf einen lokalen rechner if [ "$PORTS_TCP" != "" ]; then iptables -t nat -A PREROUTING -i $EXT -p tcp -m multiport --dport $PORTS_TCP -j DNAT --to $DEST_HOST fi if [ "$PORTS_UDP" != "" ]; then iptables -t nat -A PREROUTING -i $EXT -p tcp -m multiport --dport $PORTS_UDP -j DNAT --to $DEST_HOST fi #masquerading iptables -t nat -A POSTROUTING -o $EXT -j MASQUERADE echo "done." ;; stop) echo -n "Firewall (Packetfilter) anhalten: " #alte regeln löschen iptables -F iptables -t nat -F iptables -t mangle -F iptables -X iptables -t nat -X iptables -t mangle -X #default policies iptables -P INPUT ACCEPT iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT echo "done." ;; restart) $0 start ;; status) iptables -L ;; *) echo "Usage: fwscript start|stop|restart|status" exit 1 ;; esac
ich verwende debian woody.
wenn ich eine adsl-verbindung aufbauen will, dann geht das nicht, weil sämtlicher traffic der über eth0 geht (woran das modem hängt) gedropt wird (is ja eigentlich logisch).
wie machen das mehr oder weniger professionelle firewallscripts (z.B. SuSefirewall2)? die werden doch auch beim hochfahren des systems gestartet, es werden nur 2 interfaces angegeben (wobei eines davon bei adsl ppp0 ist), und trotzdem kann eine verbindung aufgebaut werden, oder?wenn ich das script erst ausführe, wenn die verbindung schon steht (ip-up), dann wird die verbindung abgebrochen (versteh ich nicht, weil ja dann eigentlich keine kommunikation mehr über eth0 gehen müsste (intern eth1, extern ppp0)....
mfg
-
Hi, mi+chi
hab irgendwie so das gefühl, dass du nicht wirklich weißt was du überhaupt willst. Oder zumindest versteh ich das nicht.Du musst dir vorher im klaren sein, was du erlauben, und was verbieten willst. Was soll deine Firewall denn tun? Einfaches Port-Forwarding? (wobei das den keine eigentliche firewall ist) oder bestimmte ports blocken? NAT-Routing???
gruß
dose