SuSE Linux 9 als Router

Post Reply
Message
Author
tschakakahn
Posts: 4
Joined: 07. Nov 2003 14:47
Location: Sasbach

SuSE Linux 9 als Router

#1 Post by tschakakahn »

Wer kennt eine Asnleitung oder kann mir beschreiben wie ich über KDE SuSE Linux 9 als Router einrichte. Es geht um ein Netzerk mit schwitches 1000Gbs und einer DSL Internetverbindung mit fester IP.
TschkaKahn
___________________
Nichts ist umsonst
Nicht mal der Tod
Denn der kostet das Leben

Philippe Regenass

Re: SuSE Linux 9 als Router

#2 Post by Philippe Regenass »

Hallo

Also wie man den Router unter Linux genau konfiguriert weiss ich nicht. Ich habe aber als Router folgendes Produkt im Einsatz: www.clarkconnect.com

Eventuell hilft dir das weiter.

Viele Grüsse

Philippe

arthur

Re: SuSE Linux 9 als Router

#3 Post by arthur »

hallo
kann aus meiner erfahrung - habe vor 1 jahr ersten kontakt mit linux - nur empfehlen beim router auf kde-einrichtung zu verzichten und selbst ein firewall skript zu schrieben. die nötige info zu iptables, squid. ftp, usw. findest du hier auf der seite oder im netz. mußte damals feststellen, dass die einarbeitung in susefirewall ohne grundkenntnis der materie für mich sehr frustrierend war.

vielleicht hilft dir mein skript oder du/andere finden fehler oder schwachstellen .....

#!/bin/tcsh

#VARIABLEN
#---------
set ipt = /usr/sbin/iptables
#
#ports
set p_low = 0:1023
set p_high = 1024:65535
set p_squid = 8080
set p_http = 80:81
echo "Ports => READY"
#
#hosts
set NS = (212.185.249.50 194.25.2.129)
set intern = 192.168.0.0/255.255.255.0
set gate = 192.168.0.1
set pop_web = 217.72.192.134
set smtp_web = 217.72.192.157
set skipper = 192.168.0.2
echo "Hosts => READY"
#
#interfaces
set int = eth0
set ext = ppp0
echo "Interfaces => READY"
#
#dynamische kernelparameter
echo "0" > /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 "Kernelparameter => OK"
#
#Kernelmodule
modprobe ip_conntrack
echo "Kernel Module => OK"
#
#DEFAULT POLICY
#--------------
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT DROP
echo "Default Policy => DROP"
$ipt -F
$ipt -t nat -F
$ipt -X
echo "Flush => OK"
#
#lokale prozesse
$ipt -A OUTPUT -o lo -j ACCEPT
$ipt -A INPUT -i lo -j ACCEPT
echo "Prozesse ueber lo => READY"
#
#telnet
$ipt -A INPUT -i $int -s $intern -p TCP --sport $p_high --dport telnet \
-m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$ipt -A OUTPUT -o $int -d $intern -p TCP --dport $p_high --sport telnet \
-m state --state ESTABLISHED,RELATED -j ACCEPT
echo "TELNET => RAEDY"
#
#ssh
$ipt -A INPUT -i $int -s $intern -p TCP --sport $p_high --dport ssh \
-m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$ipt -A OUTPUT -o $int -d $intern -p TCP --dport $p_high --sport ssh \
-m state --state ESTABLISHED,RELATED -j ACCEPT
echo "SSH => RAEDY"
#
#MASQUERADING
#------------
$ipt -t nat -A POSTROUTING -o $ext -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "Masquerading => READY"

#Ausgehende Pakete bei bestehender Verbindung
$ipt -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $int -o $ext \
-m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Ausgehende Pakete einer bestehender Verbindung => READY"
#
#Rueckkanal: eingehende Pakete zu einer bestehenden Verbindung
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $ext -o $int \
-m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Eingehende Pakete einer bestehenden Verbindung => READY"
#
#FILTERREGEL FUER LOKALE DIENSTE
#-------------------------------
echo "Lokale Dienste..."
#icmp
$ipt -A OUTPUT -o $int -d $intern -p ICMP --icmp-type echo-request -j ACCEPT
$ipt -A INPUT -i $int -s $intern -p ICMP --icmp echo-request \
-m state --state NEW -j ACCEPT
echo "Echo-Request intern => OK"
echo "Lokale Dienste => READY"
#
#SYN-Flood-Schutz
$ipt -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
$ipt -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
echo "SYN-Flood Protection => OK"
#
#Portscanner
$ipt -A FORWARD -p tcp --tcp-flags ALL NONE -m limit --limit 1/h -j ACCEPT
$ipt -A INPUT -p tcp --tcp-flags ALL NONE -m limit --limit 1/h -j ACCEPT
echo "Portscanner Protection => OK"
#
#Ping of deth
$ipt -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
echo "Ping Protection => OK"
#
#FILTERREGEL FORWARDING
#----------------------
echo "FORWARD..."
#icmp
$ipt -A FORWARD -i $int -s $intern \
-o $ext -p ICMP --icmp-type echo-request -j ACCEPT
echo "Echo-Request extern => OK"
#
#dns
foreach ns ($NS)
$ipt -A FORWARD -o $ext -m state --state NEW -p UDP \
--sport $p_high -d $ns --dport domain \
-j ACCEPT
$ipt -A FORWARD -o $ext -m state --state NEW -p TCP \
--sport $p_high -d $ns --dport domain \
-j ACCEPT
#echo ($NS)" => OK"
end
echo "DNS => OK"
#
#ftp
$ipt -A FORWARD -o $ext -m state --state NEW \
-p TCP --sport $p_high --dport ftp \
-j ACCEPT
$ipt -A FORWARD -o $ext -m state --state NEW \
-p TCP --sport $p_high --dport $p_high \
-j ACCEPT
echo "FTP => OK"
#
#smtp, pop3
echo "POP3 & SMTP..."
$ipt -A FORWARD -o $ext -m state --state NEW -s $intern -d $pop_web -j ACCEPT
$ipt -A FORWARD -o $ext -m state --state NEW -s $intern -d $smtp_web -j ACCEPT
echo "pop3 & smtp @web.de => OK"
echo "FORWARD => READY"
#
#FILTERREGELN FUER SQUID (OUTPUT- & INPUTCHAIN)
#----------------------------------------------
#dns fuer squid
echo "SQUID ..."
foreach ns ($NS)
$ipt -A OUTPUT -o $ext -m state --state NEW -p UDP \
--sport $p_high -d $ns --dport domain \
-j ACCEPT
$ipt -A OUTPUT -o $ext -m state --state NEW -p TCP \
--sport $p_high -d $ns --dport domain \
-j ACCEPT
end
echo "DNS fuer SQUID => OK"
#
#client
$ipt -A INPUT -i $int -s $intern -p TCP --sport $p_high --dport $p_squid \
-m state --state NEW -j ACCEPT
echo "Client ueber SQUID => OK"
#
#squid
$ipt -A OUTPUT -o $ext -p TCP --sport $p_high --dport 80:81 \
-m state --state NEW -j ACCEPT
echo "SQUID @HTTP => OK"
$ipt -A OUTPUT -o $ext -p TCP --sport $p_high --dport https \
-m state --state NEW,ESTABLISHED,RELATED \
-j ACCEPT
echo "SQUID @HTTPS => OK"
echo "SQUID => READY"
#
#FILTERREGELN FUER SAMBA
#-----------------------
echo "Samba ..."
$ipt -A INPUT -i $int -s $intern -p UDP --sport 137:139 --dport 137:139 \
-m state --state NEW -j ACCEPT
$ipt -A OUTPUT -o $int -s $intern -p UDP --sport 137:139 --dport 137:139 \
-m state --state NEW -j ACCEPT
$ipt -A INPUT -i $int -s $intern -p TCP --sport $p_high --dport 137:139 \
-m state --state NEW -j ACCEPT
echo "Samba => OK"
#
#FILTERREGELN FUER FTP UEBER OUTPUT
#---------------------------------
$ipt -A OUTPUT -o $ext -m state --state NEW \
-p TCP --sport $p_high --dport ftp \
-j ACCEPT
$ipt -A OUTPUT -o $ext -m state --state NEW \
-p TCP --sport $p_high --dport $p_high \
-j ACCEPT
echo "FTP UERBER OUTPUT => OK"

arthur

Re: SuSE Linux 9 als Router

#4 Post by arthur »

hallo
kann aus meiner erfahrung - habe vor 1 jahr ersten kontakt mit linux - nur empfehlen beim router auf kde-einrichtung zu verzichten und selbst ein firewall skript zu schrieben. die nötige info zu iptables, squid. ftp, usw. findest du hier auf der seite oder im netz. mußte damals feststellen, dass die einarbeitung in susefirewall ohne grundkenntnis der materie für mich sehr frustrierend war.

vielleicht hilft dir mein skript oder du/andere finden fehler oder schwachstellen .....

#!/bin/tcsh

#VARIABLEN
#---------
set ipt = /usr/sbin/iptables
#
#ports
set p_low = 0:1023
set p_high = 1024:65535
set p_squid = 8080
set p_http = 80:81
echo "Ports => READY"
#
#hosts
set NS = (212.185.249.50 194.25.2.129)
set intern = 192.168.0.0/255.255.255.0
set gate = 192.168.0.1
set pop_web = 217.72.192.134
set smtp_web = 217.72.192.157
set skipper = 192.168.0.2
echo "Hosts => READY"
#
#interfaces
set int = eth0
set ext = ppp0
echo "Interfaces => READY"
#
#dynamische kernelparameter
echo "0" > /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 "Kernelparameter => OK"
#
#Kernelmodule
modprobe ip_conntrack
echo "Kernel Module => OK"
#
#DEFAULT POLICY
#--------------
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT DROP
echo "Default Policy => DROP"
$ipt -F
$ipt -t nat -F
$ipt -X
echo "Flush => OK"
#
#lokale prozesse
$ipt -A OUTPUT -o lo -j ACCEPT
$ipt -A INPUT -i lo -j ACCEPT
echo "Prozesse ueber lo => READY"
#
#telnet
$ipt -A INPUT -i $int -s $intern -p TCP --sport $p_high --dport telnet \
-m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$ipt -A OUTPUT -o $int -d $intern -p TCP --dport $p_high --sport telnet \
-m state --state ESTABLISHED,RELATED -j ACCEPT
echo "TELNET => RAEDY"
#
#ssh
$ipt -A INPUT -i $int -s $intern -p TCP --sport $p_high --dport ssh \
-m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$ipt -A OUTPUT -o $int -d $intern -p TCP --dport $p_high --sport ssh \
-m state --state ESTABLISHED,RELATED -j ACCEPT
echo "SSH => RAEDY"
#
#MASQUERADING
#------------
$ipt -t nat -A POSTROUTING -o $ext -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "Masquerading => READY"

#Ausgehende Pakete bei bestehender Verbindung
$ipt -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $int -o $ext \
-m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Ausgehende Pakete einer bestehender Verbindung => READY"
#
#Rueckkanal: eingehende Pakete zu einer bestehenden Verbindung
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $ext -o $int \
-m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Eingehende Pakete einer bestehenden Verbindung => READY"
#
#FILTERREGEL FUER LOKALE DIENSTE
#-------------------------------
echo "Lokale Dienste..."
#icmp
$ipt -A OUTPUT -o $int -d $intern -p ICMP --icmp-type echo-request -j ACCEPT
$ipt -A INPUT -i $int -s $intern -p ICMP --icmp echo-request \
-m state --state NEW -j ACCEPT
echo "Echo-Request intern => OK"
echo "Lokale Dienste => READY"
#
#SYN-Flood-Schutz
$ipt -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
$ipt -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
echo "SYN-Flood Protection => OK"
#
#Portscanner
$ipt -A FORWARD -p tcp --tcp-flags ALL NONE -m limit --limit 1/h -j ACCEPT
$ipt -A INPUT -p tcp --tcp-flags ALL NONE -m limit --limit 1/h -j ACCEPT
echo "Portscanner Protection => OK"
#
#Ping of deth
$ipt -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
echo "Ping Protection => OK"
#
#FILTERREGEL FORWARDING
#----------------------
echo "FORWARD..."
#icmp
$ipt -A FORWARD -i $int -s $intern \
-o $ext -p ICMP --icmp-type echo-request -j ACCEPT
echo "Echo-Request extern => OK"
#
#dns
foreach ns ($NS)
$ipt -A FORWARD -o $ext -m state --state NEW -p UDP \
--sport $p_high -d $ns --dport domain \
-j ACCEPT
$ipt -A FORWARD -o $ext -m state --state NEW -p TCP \
--sport $p_high -d $ns --dport domain \
-j ACCEPT
#echo ($NS)" => OK"
end
echo "DNS => OK"
#
#ftp
$ipt -A FORWARD -o $ext -m state --state NEW \
-p TCP --sport $p_high --dport ftp \
-j ACCEPT
$ipt -A FORWARD -o $ext -m state --state NEW \
-p TCP --sport $p_high --dport $p_high \
-j ACCEPT
echo "FTP => OK"
#
#smtp, pop3
echo "POP3 & SMTP..."
$ipt -A FORWARD -o $ext -m state --state NEW -s $intern -d $pop_web -j ACCEPT
$ipt -A FORWARD -o $ext -m state --state NEW -s $intern -d $smtp_web -j ACCEPT
echo "pop3 & smtp @web.de => OK"
echo "FORWARD => READY"
#
#FILTERREGELN FUER SQUID (OUTPUT- & INPUTCHAIN)
#----------------------------------------------
#dns fuer squid
echo "SQUID ..."
foreach ns ($NS)
$ipt -A OUTPUT -o $ext -m state --state NEW -p UDP \
--sport $p_high -d $ns --dport domain \
-j ACCEPT
$ipt -A OUTPUT -o $ext -m state --state NEW -p TCP \
--sport $p_high -d $ns --dport domain \
-j ACCEPT
end
echo "DNS fuer SQUID => OK"
#
#client
$ipt -A INPUT -i $int -s $intern -p TCP --sport $p_high --dport $p_squid \
-m state --state NEW -j ACCEPT
echo "Client ueber SQUID => OK"
#
#squid
$ipt -A OUTPUT -o $ext -p TCP --sport $p_high --dport 80:81 \
-m state --state NEW -j ACCEPT
echo "SQUID @HTTP => OK"
$ipt -A OUTPUT -o $ext -p TCP --sport $p_high --dport https \
-m state --state NEW,ESTABLISHED,RELATED \
-j ACCEPT
echo "SQUID @HTTPS => OK"
echo "SQUID => READY"
#
#FILTERREGELN FUER SAMBA
#-----------------------
echo "Samba ..."
$ipt -A INPUT -i $int -s $intern -p UDP --sport 137:139 --dport 137:139 \
-m state --state NEW -j ACCEPT
$ipt -A OUTPUT -o $int -s $intern -p UDP --sport 137:139 --dport 137:139 \
-m state --state NEW -j ACCEPT
$ipt -A INPUT -i $int -s $intern -p TCP --sport $p_high --dport 137:139 \
-m state --state NEW -j ACCEPT
echo "Samba => OK"
#
#FILTERREGELN FUER FTP UEBER OUTPUT
#---------------------------------
$ipt -A OUTPUT -o $ext -m state --state NEW \
-p TCP --sport $p_high --dport ftp \
-j ACCEPT
$ipt -A OUTPUT -o $ext -m state --state NEW \
-p TCP --sport $p_high --dport $p_high \
-j ACCEPT
echo "FTP UERBER OUTPUT => OK"

petameta
prolinux-forum-admin
Posts: 1294
Joined: 14. Feb 2003 13:19

Re: SuSE Linux 9 als Router

#5 Post by petameta »

Du wirst ja sicher Masquerading benutzen - ich nehme mal an feste IP bedeutet nur eine feste IP für den Router.

In diesem Fall solltest Du Dir ein firewall-Skript schreiben. Folgende Sachen sind dabei für das routing nötig:

- Einschalten des forwarding:
echo "1" > /proc/sys/net/ipv4/ip_forward
- Aktivieren des Masquerading:
iptables -A INPUT -p icmp -i ppp0 --icmp-type echo-request -j DROP

Jetzt sollte es soweit schon funktionieren. Allerdings müssen die Pakete bei DSL fragmentiert werden, die MTU liegt bei nur 1492:

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Macht man den letzten Schritt nicht, sind oft einige Internet-Seiten nicht erreichbar.

Außerdem rate ich Dir _unbedingt_, Dir Gedanken zu machen, wie die Firewall zu konfigurieren ist. Z. B. ist es Sinnvoll, das Ping nach außen hin abzuschalten:

iptables -A INPUT -p icmp -i ppp0 --icmp-type echo-request -j DROP

Auch das Blocken der Ports 1 bis 1023 für eingehende Verbindungen ist eine gute Idee:

iptables -A INPUT -i ppp0 -d 0.0.0.0/0 -p TCP --dport 1:1023 -j DROP
iptables -A INPUT -i ppp0 -d 0.0.0.0/0 -p UDP --dport 1:1023 -j DROP

Post Reply