Freekazonid
24.02.04, 17:23
ich habe bisher ein iptables script, das nur masq aktiviert und einige sachen freigibt & forwardet; default also accepted. die sache gefällt mir nciht.
nun wollte ich mir ein neues basteln. das 2. script das einige ports und einige forwards ausführt soll erhalten bleiben, darum gehts auch net. die basis ist das hier:
internes_netz=eth1
inet=ppp0
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -Z
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -N icmpfilter
iptables -N udpfilter
iptables -N server
iptables -N forwardfilter
# Verkehr fuer Internes Netz freischalten
iptables -I INPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -I OUTPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -I INPUT 2 -i $internes_netz -j ACCEPT
iptables -I OUTPUT 2 -o $internes_netz -j ACCEPT
# Regeln um DoS/Spoofing zu verhindern
iptables -A INPUT -i $inet -s 127.0.0.0/8 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A INPUT -i $inet -s 127.0.0.0/8 -j DROP
iptables -A INPUT -i $inet -s 192.168.0.0/16 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A INPUT -i $inet -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -i $inet -s 127.0.0.0/8 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A FORWARD -i $inet -s 127.0.0.0/8 -j DROP
iptables -A FORWARD -i $inet -s 192.168.0.0/16 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A FORWARD -i $inet -s 192.168.0.0/16 -j DROP
# Versteckte Portscan oder Syn Flooding verhindern
iptables -A INPUT -i $inet -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j server
# Fragmentierte Pakete verwerfen
#iptables -I INPUT 3 -f -i $inet -j DROP
# ICMP Packets an die ICMP chain weitergeben
iptables -A INPUT -p icmp -j icmpfilter
iptables -A OUTPUT -p icmp -j icmpfilter
iptables -A FORWARD -p icmp -j icmpfilter
# UDP Packets an die UDP chain weitergeben
iptables -A INPUT -p udp -j udpfilter
iptables -A OUTPUT -p udp -j udpfilter
iptables -A FORWARD -p udp -j udpfilter
# Einige TCP Packets an die chain weitergeben
iptables -A INPUT -i $inet -p tcp -j server
iptables -A FORWARD -p tcp -j forwardfilter
# Hier wird der ausgehende lokale Datenverkehr freigeschaltet #
iptables -A OUTPUT -o $inet -j ACCEPT
# Kommende ICMP Packets
iptables -I icmpfilter 1 -i $inet -p icmp --icmp-type time-exceeded -m limit --limit 1/s -j ACCEPT
iptables -I icmpfilter 2 -i $inet -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
iptables -I icmpfilter 3 -i $inet -p icmp --icmp-type destination-unreachable -m limit --limit 1/s -j ACCEPT
# Abgehende ICMP Packets
iptables -I icmpfilter 4 -o $inet -p icmp --icmp-type echo-request -j ACCEPT
# Rest droppen
iptables -I icmpfilter 5 -j DROP
# UDP Filter
iptables -A udpfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A udpfilter -i ! $inet -m state --state NEW -j ACCEPT
iptables -A udpfilter -j DROP
iptables -A forwardfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A forwardfilter -m state --state NEW -i ! $inet -j ACCEPT
iptables -A forwardfilter -j DROP
######### MASQUERADE & FORWARD
iptables -A forwardfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A forwardfilter -m state --state NEW -i ! $inet -j ACCEPT
iptables -A forwardfilter -j DROP
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $inet -j MASQUERADE
## OLD
#iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmt
#iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
## NEW
iptables -A forwardfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A forwardfilter -m state --state NEW -i ! $inet -j ACCEPT
iptables -A forwardfilter -j DROP
## Server Kram
iptables -A server -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A server -m state --state NEW -i ! $inet -j ACCEPT
iptables -A server -j DROP
######### FTP SERVER ###################
iptablesp_conntrack_ftp
iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 21 -j DNAT --to-destination 192.168.0.195
iptables -L
exit 0
nachdem ich das ausgeführt hab, hab ich direkt mal getestet was auf einem client hinter dem nat ging
- pingen ausserhalb des lans: ging net
- surfen - ging, ein portscan von http://www.dslreports.com/scan brachte positive ergebnisse
- emailing ging nichts
naja es sah ja erstmal ganz gut aus, also wollte ich mit um POP3 und SMTP kümmern. doch dann ging garnix mehr. ich konnte vom Client aus NIX mehr machen, die ssh verbindung zum router brach ab. ich war also ausgesperrt
nun meine frage: dieses script als basis, was muss ich machen damit
1. das ich nicht mehr ausgesperrt werde ( wieso wurde der rechner sogar local ausgesperrt? local ist doch expliziet alles freigegeben )
2. alle clients im web surfen können, alle SMTP und POP3 nutzen können
ich denke die fehler/veränderung können nicht so gross sein, nur irgendwas stimmt da nicht und ich finde nicht raus was :)
danke
/e falls das falsch verstanden wurde: ich habe 2 scripte: das eine schaltet masq ein, das andere aktiviert einige ports ( q3 DNAT -> server, bnet DNAT -> winclient, edonkey -> gnu/linux client ). das alte grundscript so halt so aus
/sbin/iptables -F
# Masquerading wird aktiviert
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
/sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmt
/sbin/iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
############## ftp #####################
modprobe ip_conntrack_ftp
iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 21 -j DNAT --to-destination 192.168.0.195
#########################################
# Ports forwarden
/home/fr34k/pls #PORT FORWARDING
/home/fr34k/bnet #DONT NEED
und dieses soll halt durch das obige ersetzt werden um mehr sicherheit zu bringen; allerdings funzt das halt net so :) hoffe ist etwas klarer geworden
nun wollte ich mir ein neues basteln. das 2. script das einige ports und einige forwards ausführt soll erhalten bleiben, darum gehts auch net. die basis ist das hier:
internes_netz=eth1
inet=ppp0
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -Z
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -N icmpfilter
iptables -N udpfilter
iptables -N server
iptables -N forwardfilter
# Verkehr fuer Internes Netz freischalten
iptables -I INPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -I OUTPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -I INPUT 2 -i $internes_netz -j ACCEPT
iptables -I OUTPUT 2 -o $internes_netz -j ACCEPT
# Regeln um DoS/Spoofing zu verhindern
iptables -A INPUT -i $inet -s 127.0.0.0/8 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A INPUT -i $inet -s 127.0.0.0/8 -j DROP
iptables -A INPUT -i $inet -s 192.168.0.0/16 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A INPUT -i $inet -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -i $inet -s 127.0.0.0/8 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A FORWARD -i $inet -s 127.0.0.0/8 -j DROP
iptables -A FORWARD -i $inet -s 192.168.0.0/16 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A FORWARD -i $inet -s 192.168.0.0/16 -j DROP
# Versteckte Portscan oder Syn Flooding verhindern
iptables -A INPUT -i $inet -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j server
# Fragmentierte Pakete verwerfen
#iptables -I INPUT 3 -f -i $inet -j DROP
# ICMP Packets an die ICMP chain weitergeben
iptables -A INPUT -p icmp -j icmpfilter
iptables -A OUTPUT -p icmp -j icmpfilter
iptables -A FORWARD -p icmp -j icmpfilter
# UDP Packets an die UDP chain weitergeben
iptables -A INPUT -p udp -j udpfilter
iptables -A OUTPUT -p udp -j udpfilter
iptables -A FORWARD -p udp -j udpfilter
# Einige TCP Packets an die chain weitergeben
iptables -A INPUT -i $inet -p tcp -j server
iptables -A FORWARD -p tcp -j forwardfilter
# Hier wird der ausgehende lokale Datenverkehr freigeschaltet #
iptables -A OUTPUT -o $inet -j ACCEPT
# Kommende ICMP Packets
iptables -I icmpfilter 1 -i $inet -p icmp --icmp-type time-exceeded -m limit --limit 1/s -j ACCEPT
iptables -I icmpfilter 2 -i $inet -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
iptables -I icmpfilter 3 -i $inet -p icmp --icmp-type destination-unreachable -m limit --limit 1/s -j ACCEPT
# Abgehende ICMP Packets
iptables -I icmpfilter 4 -o $inet -p icmp --icmp-type echo-request -j ACCEPT
# Rest droppen
iptables -I icmpfilter 5 -j DROP
# UDP Filter
iptables -A udpfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A udpfilter -i ! $inet -m state --state NEW -j ACCEPT
iptables -A udpfilter -j DROP
iptables -A forwardfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A forwardfilter -m state --state NEW -i ! $inet -j ACCEPT
iptables -A forwardfilter -j DROP
######### MASQUERADE & FORWARD
iptables -A forwardfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A forwardfilter -m state --state NEW -i ! $inet -j ACCEPT
iptables -A forwardfilter -j DROP
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $inet -j MASQUERADE
## OLD
#iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmt
#iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
## NEW
iptables -A forwardfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A forwardfilter -m state --state NEW -i ! $inet -j ACCEPT
iptables -A forwardfilter -j DROP
## Server Kram
iptables -A server -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A server -m state --state NEW -i ! $inet -j ACCEPT
iptables -A server -j DROP
######### FTP SERVER ###################
iptablesp_conntrack_ftp
iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 21 -j DNAT --to-destination 192.168.0.195
iptables -L
exit 0
nachdem ich das ausgeführt hab, hab ich direkt mal getestet was auf einem client hinter dem nat ging
- pingen ausserhalb des lans: ging net
- surfen - ging, ein portscan von http://www.dslreports.com/scan brachte positive ergebnisse
- emailing ging nichts
naja es sah ja erstmal ganz gut aus, also wollte ich mit um POP3 und SMTP kümmern. doch dann ging garnix mehr. ich konnte vom Client aus NIX mehr machen, die ssh verbindung zum router brach ab. ich war also ausgesperrt
nun meine frage: dieses script als basis, was muss ich machen damit
1. das ich nicht mehr ausgesperrt werde ( wieso wurde der rechner sogar local ausgesperrt? local ist doch expliziet alles freigegeben )
2. alle clients im web surfen können, alle SMTP und POP3 nutzen können
ich denke die fehler/veränderung können nicht so gross sein, nur irgendwas stimmt da nicht und ich finde nicht raus was :)
danke
/e falls das falsch verstanden wurde: ich habe 2 scripte: das eine schaltet masq ein, das andere aktiviert einige ports ( q3 DNAT -> server, bnet DNAT -> winclient, edonkey -> gnu/linux client ). das alte grundscript so halt so aus
/sbin/iptables -F
# Masquerading wird aktiviert
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
/sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmt
/sbin/iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
############## ftp #####################
modprobe ip_conntrack_ftp
iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 21 -j DNAT --to-destination 192.168.0.195
#########################################
# Ports forwarden
/home/fr34k/pls #PORT FORWARDING
/home/fr34k/bnet #DONT NEED
und dieses soll halt durch das obige ersetzt werden um mehr sicherheit zu bringen; allerdings funzt das halt net so :) hoffe ist etwas klarer geworden