LuisMiguel
11.11.02, 12:30
hi user,
hab ein kleines problem hab!
hab eine kleine firewall zusammen erstellt!
mein system:
internes-netz <------>router(iptables)<-------->internet
eth1 eth0
bin mit eine kabelmodem (ish) im netz eigentlich ganz schnell aber ich hab jetzt den router
(suse 7.3)mit iptables dazwischen (der soll später als ftp,web oder game server laufen)
wenn ich nur masquerade anschmeise und alles erlaube ist er ziemlich schnell(2Mbit leitung)
aber sobald ich die iptables hochlade läuft er ziemlich larm bzw verbindungsprobleme!
find den fehler auch irgendwie nicht!
(strenge regeln)
würd mich freuen wenn ihr euch das mal ansieht und vielleicht verbesserungs vorschläge geben könnt.
vielen dank schon mal.
p.s was muss ich machen damit die iptables direkt beim starten des servers hochgeladen werden???
und welche ports sind wichtig???(ftp,games...)
#IPTABLES
ip=/usr/local/sbin/iptables
#interfaces
EXT=eth0
INT=eth1
#ip
ipintern=10.1.10.1 #eth1
#port
externport=22,53,80
internport=7,20,21,22,25,53,80,110,443,563,3306
case "$1" in
start)
clear
echo -n "Setting up IPTABLES"
#module in den Kernel einkompiliert
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
#dynamische Kernelparameter setzen
#Dokumentation /usr/src/linux/Documentation/networking/ip-sysctl.txt
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/eth0/bootp_relay
echo 1 > /proc/sys/net/ipv4/conf/eth0/log_martians
#bestehende Regeln, leere Chains und der Counter werden geflusht
$ip -F
$ip -X
$ip -t nat -F
#default policy
$ip -P INPUT DROP
$ip -P OUTPUT DROP
$ip -P FORWARD DROP
#ICMP
#ping
$ip -A INPUT -i $EXT -p ICMP --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
$ip -A INPUT -i $EXT -p ICMP -j DROP
$ip -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT
$ip -A FORWARD -o $EXT -p ICMP --icmp-type echo-request -j ACCEPT
$ip -A FORWARD -i $EXT -p ICMP --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
#source quench
$ip -A INPUT -p ICMP --icmp-type source-quench -j DROP
$ip -A OUTPUT -p ICMP --icmp-type source-quench -j ACCEPT
#hier werden versteckte Portscans oder Pingflooding verhindert
$ip -A INPUT -i $EXT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#Fragmentierte Pakete verwerfen
$ip -A INPUT -i $EXT -f -j DROP
#ssh fuer Fernwartung
$ip -A INPUT -i $INT -s $ipintern -p tcp --sport 22 --dport ssh -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$ip -A OUTPUT -o $INT -d $ipintern -p tcp --dport 22 --sport ssh -m state --state ESTABLISHED,RELATED -j ACCEPT
#kontrolle des verbindungzustandes
$ip -A INPUT -i $EXT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ip -A INPUT -i $EXT -m state --state NEW,INVALID -j DROP
$ip -A INPUT -i $EXT -p tcp --syn -j DROP
$ip -A OUTPUT -o $EXT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$ip -A FORWARD -i $INT -o $EXT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ip -A FORWARD -i $EXT -o $INT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ip -A FORWARD -i $EXT -o $INT -m state --state NEW,INVALID -j DROP
#ports
$ip -A INPUT -i $EXT -p tcp -m multiport --port $externport -j ACCEPT
$ip -A OUTPUT -o $EXT -p tcp -m multiport --port $externport -j ACCEPT
$ip -A FORWARD -i $EXT -o $INT -p tcp -m multiport --port $externport -j ACCEPT
$ip -A FORWARD -i $INT -o $EXT -p tcp -m multiport --port $externport -j ACCEPT
$ip -A INPUT -i $INT -p tcp -m multiport --port $internport -j ACCEPT
$ip -A OUTPUT -o $INT -p tcp -m multiport --port $internport -j ACCEPT
#eth1
$ip -A INPUT -i $INT -j ACCEPT
$ip -A OUTPUT -o $INT -j ACCEPT
$ip -A FORWARD -o $EXT -i $INT -j ACCEPT
$ip -A FORWARD -o $INT -i $EXT -j ACCEPT
#eth0
$ip -A INPUT -i $EXT -j DROP
$ip -A OUTPUT -o $EXT -j DROP
$ip -A FORWARD -i $EXT -o $INT -j DROP
$ip -A FORWARD -i $INT -o $EXT -j DROP
#NAT
$ip -t nat -A POSTROUTING -o $EXT -j MASQUERADE
#default policy
$ip -P INPUT DROP
$ip -P OUTPUT DROP
$ip -P FORWARD DROP
hab ein kleines problem hab!
hab eine kleine firewall zusammen erstellt!
mein system:
internes-netz <------>router(iptables)<-------->internet
eth1 eth0
bin mit eine kabelmodem (ish) im netz eigentlich ganz schnell aber ich hab jetzt den router
(suse 7.3)mit iptables dazwischen (der soll später als ftp,web oder game server laufen)
wenn ich nur masquerade anschmeise und alles erlaube ist er ziemlich schnell(2Mbit leitung)
aber sobald ich die iptables hochlade läuft er ziemlich larm bzw verbindungsprobleme!
find den fehler auch irgendwie nicht!
(strenge regeln)
würd mich freuen wenn ihr euch das mal ansieht und vielleicht verbesserungs vorschläge geben könnt.
vielen dank schon mal.
p.s was muss ich machen damit die iptables direkt beim starten des servers hochgeladen werden???
und welche ports sind wichtig???(ftp,games...)
#IPTABLES
ip=/usr/local/sbin/iptables
#interfaces
EXT=eth0
INT=eth1
#ip
ipintern=10.1.10.1 #eth1
#port
externport=22,53,80
internport=7,20,21,22,25,53,80,110,443,563,3306
case "$1" in
start)
clear
echo -n "Setting up IPTABLES"
#module in den Kernel einkompiliert
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
#dynamische Kernelparameter setzen
#Dokumentation /usr/src/linux/Documentation/networking/ip-sysctl.txt
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/eth0/bootp_relay
echo 1 > /proc/sys/net/ipv4/conf/eth0/log_martians
#bestehende Regeln, leere Chains und der Counter werden geflusht
$ip -F
$ip -X
$ip -t nat -F
#default policy
$ip -P INPUT DROP
$ip -P OUTPUT DROP
$ip -P FORWARD DROP
#ICMP
#ping
$ip -A INPUT -i $EXT -p ICMP --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
$ip -A INPUT -i $EXT -p ICMP -j DROP
$ip -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT
$ip -A FORWARD -o $EXT -p ICMP --icmp-type echo-request -j ACCEPT
$ip -A FORWARD -i $EXT -p ICMP --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
#source quench
$ip -A INPUT -p ICMP --icmp-type source-quench -j DROP
$ip -A OUTPUT -p ICMP --icmp-type source-quench -j ACCEPT
#hier werden versteckte Portscans oder Pingflooding verhindert
$ip -A INPUT -i $EXT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#Fragmentierte Pakete verwerfen
$ip -A INPUT -i $EXT -f -j DROP
#ssh fuer Fernwartung
$ip -A INPUT -i $INT -s $ipintern -p tcp --sport 22 --dport ssh -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$ip -A OUTPUT -o $INT -d $ipintern -p tcp --dport 22 --sport ssh -m state --state ESTABLISHED,RELATED -j ACCEPT
#kontrolle des verbindungzustandes
$ip -A INPUT -i $EXT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ip -A INPUT -i $EXT -m state --state NEW,INVALID -j DROP
$ip -A INPUT -i $EXT -p tcp --syn -j DROP
$ip -A OUTPUT -o $EXT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$ip -A FORWARD -i $INT -o $EXT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ip -A FORWARD -i $EXT -o $INT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ip -A FORWARD -i $EXT -o $INT -m state --state NEW,INVALID -j DROP
#ports
$ip -A INPUT -i $EXT -p tcp -m multiport --port $externport -j ACCEPT
$ip -A OUTPUT -o $EXT -p tcp -m multiport --port $externport -j ACCEPT
$ip -A FORWARD -i $EXT -o $INT -p tcp -m multiport --port $externport -j ACCEPT
$ip -A FORWARD -i $INT -o $EXT -p tcp -m multiport --port $externport -j ACCEPT
$ip -A INPUT -i $INT -p tcp -m multiport --port $internport -j ACCEPT
$ip -A OUTPUT -o $INT -p tcp -m multiport --port $internport -j ACCEPT
#eth1
$ip -A INPUT -i $INT -j ACCEPT
$ip -A OUTPUT -o $INT -j ACCEPT
$ip -A FORWARD -o $EXT -i $INT -j ACCEPT
$ip -A FORWARD -o $INT -i $EXT -j ACCEPT
#eth0
$ip -A INPUT -i $EXT -j DROP
$ip -A OUTPUT -o $EXT -j DROP
$ip -A FORWARD -i $EXT -o $INT -j DROP
$ip -A FORWARD -i $INT -o $EXT -j DROP
#NAT
$ip -t nat -A POSTROUTING -o $EXT -j MASQUERADE
#default policy
$ip -P INPUT DROP
$ip -P OUTPUT DROP
$ip -P FORWARD DROP