Toon posts:

[debian] probleem met firewall script

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben me firewall script opnieuw gaan maken omdat ik me oude er een beetje brak uit zag (hij werkte trouwens wel).

dus ben ik gaan zoeken op allemaal site's enzo heb ik uit eindelijk het volgende script gemaakt:

#!/bin/bash
/sbin/modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward

# Delete and flush. Default table is "filter". Others like "nat" must be explicitly stated.
/sbin/iptables --flush
/sbin/iptables --table nat --flush
/sbin/iptables --delete-chain
/sbin/iptables --table nat --delete-chain

# Set up IP FORWARDing and Masquerading
#/sbin/iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#/sbin/iptables --append FORWARD --in-interface eth1 -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

#Allow self access by loopback interface
/sbin/iptables -A INPUT -i lo -p all -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -p all -j ACCEPT

#Accept established connections
/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT - Accept established connections
/sbin/iptables -A INPUT -p tcp --tcp-option ! 2 -j REJECT --reject-with tcp-reset

#Open ftp port
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 21 -j ACCEPT

#Open secure shell port
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 22 -j ACCEPT

#Open HTTP port
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 80 -j ACCEPT

#Accept local network Samba connection
/sbin/iptables -A INPUT -p tcp --syn -s 192.168.0.0/24 --destination-port 139 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --syn -s trancas --destination-port 139 -j ACCEPT

#Drop all other connection attempts. Only connections defined above are allowed.
/sbin/iptables -P INPUT DROP


Maar nou komt het grote probleem hij doet het natuurlijk niet :'( , Ik ben een flinke noob op gebied van linux. daarom vroeg ik me af of jullie kunnen zien wat er verkeerd is aan dit script.

de volgende dingen lukken wel:
- ik kan gewoon inloggen op de server
- ik kan van af de server pingen naar nederlandse sites

wat niet lukt is:
- hij deelt het hele internet niet :'(

eth0=extern
eth1=intern

server is debian 2.4.18

ik hoop dat jullie kunnen zien wat er mis is.

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Ten eerste moet je de default policy kiezen voor de INPUT, OUTPUT en FORWARD chain.
Als je kiest voor een ACCEPT default policy dan moet je regels in de chain zetten die dingen verbieden en bij DROP (of REJECT) default policy juist regels die dingen toestaan.
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
Deze twee regels hebben het zelfde effect (op een enkelvoudig intern netwerkje) maar de eerste (met de -o eth0) heeft de voorkeur.
/sbin/iptables -A FORWARD -i eth1 -j ACCEPT
Als de default policy van de FORWARD chain ACCEPT is dan is deze regel overbodig en anders zul je ook het verkeer van eth0 -> eth1 moeten toestaan. Niet alles natuurlijk (bv alleen ESTABLISHED en RELATED).
/sbin/iptables -A INPUT -p tcp --tcp-option ! 2 -j REJECT --reject-with tcp-reset
REJECT kan je beter niet gebruiken voor de externe interface (eth0) omdat je dan (vooral met adsl) makkelijk te DOS'en bent. Wil je wel netjes REJECT'en ipv DROP'en dan moet je de--limit extentie gebruiken om te voorkomen dat je upstream dicht slipt.
#Open ftp port
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 21 -j ACCEPT

#Open secure shell port
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 22 -j ACCEPT

#Open HTTP port
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p udp -i eth0 --dport 80 -j ACCEPT
Hmm, volgens mij kunnen deze services ook zonder udp maart weet niet zeker.
En vergeet niet de ftp conntrack en nat modules te laden.
#Drop all other connection attempts. Only connections defined above are allowed.
/sbin/iptables -P INPUT DROP
De default policy van INPUT is dus DROP :)
Wel handig om (tijdelijk) voor deze laatste regel een LOG regel toe te voegen zodat je in je logs kan zien wat je allemaal (on)terecht dropt. Dat maakt het debuggen van je firewall script wat makkelijker (de OUTPUT en FORWARD chains niet vergeten).

En verder nog (heel) veel howto's lezen en vooral de vele voorbeelden bekijken. :)

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)