Routing

Message
Author
Klaus

Routing

#1 Post by Klaus »

Hallo,
ich habe da ein kleines Problem mit meine Linux Rechner den ich als Router einsetzen möchte. In diesem ist ein ISDN Karte eingebaut, welche gut funktioniert. Versuche ich aber über mein Netzwerk von einem andern Rechner in Internet zu kommen, sehe ich das eine Verbindung aufgebaut wird, auch die dynamische IP Adresse zugewiesen wird, aber auf den Rechner kommt diese Meldung nicht an.
Ich benutze Suse 6.4

Michael Moessner

Re: Routing

#2 Post by Michael Moessner »

Hi,
hast du das masquerading auf deinem router
akktiviert ?

Klaus

Re: Routing

#3 Post by Klaus »

ja ich habe es auf meinem router aktiviert in der firewall.rc.config. muß man es sonst noch irgendwo aktivieren

Cypher

Re: Routing

#4 Post by Cypher »

Firewalling ist so ne sache....
Ich habe bei mir nur squid und masquerading laufen. Das geht prima.
Meine Versuche mit der firewall sind bisher alle kläglichst gescheitert.
Mal war der Linuxserver komplett verschwunden, mal ließ sich nichts
mehr pingen... Wenn irgendjemand eine funktionierende firewall.rc.config
für SuSE 7 und firewals 2.6 hat, würde ich ihm gern mal über die Schulter
schauen <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">. Ach ja, Samba muß danach noch laufen, Squid hätte ich auch
gern noch drin, und es muß möglich sein, vom client aus ins i-net zu
telnetten <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Gruß,
Cypher

zaphode
Posts: 2
Joined: 25. Sep 1999 15:14
Location: 37139 Adelebsen

Re: Routing

#5 Post by zaphode »

Hi,
wenn du auch IPForwarding und IPDynamik eingeschaltet hast und mit ifconfig dein ippp0 device überprüft hast ob die IP-Adresse seitens des provider zugewiesen wurde, deine /etc/route.conf folgende einträge enthält:

192.168.1.0 255.255.255.0 eth0
192.168.1.1 255.255.255.255 eth0
192.168.1.2 255.255.255.255 ippp0
default 192.168.1.2
müßte es funktionieren!

wobei die 192.168.1.1 die netzwerkarte zu deinem intranet darstellt
und 192.168.1.2 die AVM Fritzcard als zweite netwerkkarte definiert wird, ach so die 192.168.1.0 ist natürlich hier die netwerkadresse.
du kannst die daten übernehmen.
Viel Glück
MfG

Gerd

cptchaos
Posts: 129
Joined: 06. Jun 2000 21:42

Re: Routing

#6 Post by cptchaos »

Moin Moin,

nein lieber Gerd so wird es warscheinlich nicht klappen.

In einer der letzten CT´ Ausgaben wurde das Thema recht gut behandelt, anbei war auch ein kleines FW Skript welches ich mir für meine Zwecke umfunktioniert habe.

Es sieht bei mir wie folgt aus :

#!/bin/sh
EXTIF=ippp0

ANY=0.0.0.0/0
LAN_01=192.168.110.0/24 # Netzwerk Segment 1.
LAN_02=192.168.111.0/24 # Netzwerk Segment 2.

PPP_01=192.168.115.2/32 # PPP Client tempoaer ueber ppp

# Module fuer das Masquering laden
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_raudio


# IP spoofing unterdruecken

if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $i
done
fi

if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi

for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $i
done

echo 1 > /proc/sys/net/ipv4/ip_forward


# alte Firewallregeln fluschen
/sbin/ipchains -F forward
/sbin/ipchains -F input
/sbin/ipchains -F output

# Grundregeln setzen
/sbin/ipchains -P input ACCEPT
/sbin/ipchains -P forward DENY
/sbin/ipchains -P output ACCEPT

# Keine ankommenden (neuen) Verbindungen von aussen zulassen
/sbin/ipchains -A input -l -i $EXTIF -p tcp -y -j DENY

# Pakete von aussen zu priviligierten Port unterbinden
/sbin/ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p udp -j DENY
/sbin/ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p tcp -j DENY

# Routing
/sbin/ipchains -A forward -s $LAN_01 -d $PPP_01 -j ACCEPT
/sbin/ipchains -A forward -s $PPP_01 -d $LAN_01 -j ACCEPT

# Masquering
/sbin/ipchains -A forward -s $LAN_01 -j MASQ

/sbin/ipchains -A forward -s $PPP_01 -j MASQ




Hierbei ist noch Anzumerken das der PPP Client nicht die Internetverbindung ist, sondern ein über Ser. angeschlossener Client ist. Auch kann es sein das dem einen oder anderen die Default Regel am Anfang stören, aber mal ehrlich Fort Nox wird wohl keiner von uns Absichern wollen, und für einen Privatanwender ist es besser das Skript übersichtlich zu halten. Alle Verbindungsanfragen mit Syn werden abgeblockt, ebenso alle Verbindungen an Ports unter 1024. Wer will kann es ja wie ich als Basis nehmen und dann weiter ausbauen.

Ach Ja, nicht vergessen die zu ladenenen Module zu übersetzten diese liegen dem Kernel bei.

Marek

Klaus

Re: Routing

#7 Post by Klaus »

Hallo,

zuerst einmal Danke für die Hilfe. Ich habe nun den Router laufen, aber ohen Firewall.

Hallo Marek,
dein Script sieht ganz logisch aus, nur wo muß ich diesen eintragen.

Klaus

cerberusger
Posts: 348
Joined: 28. Dec 2000 13:30
Location: Muenchen

Re: Routing

#8 Post by cerberusger »

@marek:

ganz so sicher ist dein script aber nicht. es erfuellt nur den zweck, sich paketfilter (nichts anderes ist eine firewall) nennen zu duerfen. aber sonst macht es rein gar nix. (zumal ueber die unprivilegierten ports jeder reinkommt; und gerade das sind die ports, wo trojaner sitzen ...)

lieber erst mal alles verbieten, und dann nur die dienste erlauben, die man moechte. das macht es wesentlich sicherer.

vor allem: wie loest das script das prob der dynip? hierfuer eine loesung:

<b>IPADDR=$(/sbin/ifconfig | /bin/grep P-t-P | /usr/bin/cut -c 21-35 | cut -f1 -d" ")</b>

diese kleine zuweisung kommt (im gegensatz zu einfacheren) auch mit ip's klar, deren oktette alle nur eine stelle haben (obwohl das ziemlich unwahrscheinlich zu kriegen ist, aber andere loesungen scheitern schon bei zwei zwei-stelligen oktetten)

nun muss das script nur noch in die <b>/etc/ppp/ip-up</b> eingetragen werden, dann arbeitet es auch perfekt mit dem auto-dial und mehrfachen verbindungsauf- und -abbau zusammen (im gegensatz zum alleinigen eintrag in <b>/etc/rc.d/rc.local</b> oder <b>/etc/rc.d/boot.local</b> (wie weiter unten beschrieben), wo es aber trotzdem noch stehen soll!!)


@klaus:

trage es in die <b>/etc/rc.d/rc.local</b> (<b>redhat</b>) oder <b>/etc/rc.d/boot.local</b> (<b>suse</b>) ein, oder fuege es in deine sysv-init-scripten ein, indem du in <b>/etc/rc.d/rc3.d</b> einen sym-link auf dein fw-script einbaust:

<b>ln -s /pfad/zum/script/fw-script /etc/rc.d/rc3.d/S99firewall</b>


@all:

wer ein gutes funktionierendes firewall-script haben will, kann mir eine mail schreiben.


greetinx,

cerberus
Linux is a wigwam - no windows, no gates, apache inside <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

cptchaos
Posts: 129
Joined: 06. Jun 2000 21:42

Re: Routing

#9 Post by cptchaos »

@cerberus

Zur Sicherheit des Skriptes habe ich einen entsprechenden Kommentar beigefügt, der Sinn des Skriptes ist ein Kompromiss zwischen Sicherheit und möglichst freier Internetnutzung. Wenn man wirklich einen sicheren Firewall haben möchte ist wesendlich mehr Arbeit und Problembewältigung nötig. Das setzten der Default Regeln auf "DENY" ist dabei nur der Anfang.

Ziel des Skriptes ist es innerhalb der 3 internen Netzte den Datenverkehr ungehindert fließen zu lassen. Von innen soll ein Zugriff auf das Internet möglich sein (masquering) und nicht masquering fähige Dienste sollen über ein Proxy modul laufen.

Ein Problem mit der dyn. IP vergabe tritt nicht auf, da der EXT (Internetport) anhand des Gerätes und nicht an seiner IP festgemacht wird. Dadurch kann es auch mit in die Startskipte (init.d; /etc/rc.d) aufgenommen werden (wie Du es ja schon richtig erkannt hattest), und muß nicht bei jedem Dail up neu ausgeführt werden !

Zu Sicherheit, keine Beschränkungen unter den Subnetzten, keine Zugriffe von aussen auf die prev. Ports unter 1024 da hier in der Regel alle wichtigen Dienste des Rechners liegen. Es können keine TCP Verbindungen von aussen zum Rechner aufgemacht werden, Verbindungen können nur vom Rechner ins Internet geöffnet werden. Kein Schutz vor UDP Paketen von aussen, und alle Port´s über 1024 können Verbindungen noch aussen aufbauen (über masquering auch die Rechner der 3. Netze). Dadurch besteht sicherlich immer noch die Gefahr von Trojanern und Homephonern eine Verbindung zum Master aufzunehmen, ein Sperren dieser Möglichkeit würde aber auch viele Funktionen und Möglichkeiten des Internet´s aussperren. Ein Zugriff aus dem Internet auf Rechner im inneren Netz ist nich möglich, dadurch fallen Trojaner wie BO aus der Gefahrenliste raus, da diese von aussen aktiviert werden.

Warum willst Du nur diejenigen die dir eine E-Mail schicken an deinen geistigen Erungenschaften teilhaben lassen. Poste und dokumentiere dein FW doch hier, oder noch besser mache daraus doch einen Workshop für Pro-Linux.


@klaus

Das Skript kann in das /etc/rc.d (/sbin/init.d) kopiert werden, ich würde dann in den Verzeichnissen ../rc2.d und ../rc3.d einen Link auf dieses Skript legen. Ggf. kannst Du das auch allen anderen Unterverzeichnissen ../rcX.d ab ../rc.2.d machen, sinnvoll wäre es aber nur für die Runlevel mit denen Du ins Internet gehst (in der Regel wohl 2 oder 3).
Prüfen ob die Regeln aktiv sind kannst Du mit der Anweisung
~ipchains -L

Unter <a href="http://freeshell.org/~djsf/masq-icq/" target="_blank"><!--auto-->http://freeshell.org/~djsf/masq-icq/</a><!--auto-->
oder <a href="http://djsf.narod.ru/masq-icq" target="_blank"><!--auto-->http://djsf.narod.ru/masq-icq</a><!--auto-->

Findest Du ein masquering Modul für ICQ, muß dann doch übersetzt und installiert werden.

um dieses zu aktivieren ist bei den Modulen noch die Zeile

/sbin/modprobe ip_masq_icq

zu ergänzen.



@all

Also noch einmal, das Skript ist ein Kompromiss zwischen Sicherheit, Funktionalität und Bedienbarkeit. Nicht jeder möchte seine Haus Bank ans Internet anschließen, sondern vielleich nur seiner Familie den gemeinsamen Internetzugang ermöglichen.

cerberusger
Posts: 348
Joined: 28. Dec 2000 13:30
Location: Muenchen

Re: Routing

#10 Post by cerberusger »

warum nicht? hier also mein firewall-script. es laesst alle wichtigen dienste zu, und verhindert attacken von aussen.

was nicht geht, ist icq-filetransfer, -chat, etc. wenn das icq_masq-modul das leistet (auch fuer icq 2000er, ich meine gelesen zu haben es geht nur fuer die 99er), bitte ich um entsprechenden hinweis <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle"> thx.

hier also das script:

<b>
#!/bin/sh

# ----------------------------------------------------------------------------
# Copyright (C) 1999, 2000 Gerhard Feiner

echo "Starting firewalling... " >/dev/tty

# ----------------------------------------------------------------------------
# Einige Einstellungen fuer leichtere Administration
# PASST DIESE AN EURE BEDUERFNISSE UND ISP'S AN !!!!

EXTERNAL_INTERFACE="ippp0" # Interface fuer's Internet
LOOPBACK_INTERFACE="lo" # Loopback
LOCAL_INTERFACE_1="eth0" # internes LAN Interface

# ----------------------------------------------------------------------------
# Hier wird die dynamische IP festgestellt:

IPADDR=$(/sbin/ifconfig | /bin/grep P-t-P | /usr/bin/cut -c 21-35 | cut -f1 -d" ")

LOCALNET_1="192.168.1.0/24" # meine lokalen Netze, wer weniger
LOCALNET_2="192.168.2.0/24" # oder nur eines hat kann die rest-
LOCALNET_3="192.168.3.0/24" # lichen beiden Definitionen weglassen

ANYWHERE="any/0" # jede IP-Adresse

# ----------------------------------------------------------------------------
# Den Nameserver muesst ihr anpassen !!!!

NAMESERVER_1="62.96.3.6" # Nameserver den ich benutze

NEWS_LOKI="news.lokigames.com" # News-Server
NEWS_VMWARE="news.vmware.com" # dito
NEWS_MS="news.microsoft.com" # dito
SMTP_SERVER="smtp.puretec.de" # SMTP-Server
POP_SERVER="pop.puretec.de" # POP3-Server

LOOPBACK="127.0.0.0/8" # Loopback-Addressen
CLASS_A="10.0.0.0/8" # class A private
CLASS_B="172.16.0.0/12" # class B private
CLASS_C="192.168.0.0/16" # class C private
BROADCAST_SRC="0.0.0.0" # Broadcast Quell-Addresse
BROADCAST_DEST="255.255.255.255" # Broadcast Ziel-Addresse
PRIVPORTS="0:1023" # well known, privilegierte Ports
UNPRIVPORTS="1024:65535" # unprivilegierte Ports

# ----------------------------------------------------------------------------

NFS_PORT="2049" # (TCP/UDP) NFS
SOCKS_PORT="1080" # (TCP) Socks

# X Windows Port-Allocation beginnt bei 6000 und steigt bis 6063
# fuer jeden weiteren laufenden Server.

XWINDOW_PORTS="6000:6063" # (TCP) X windows

# Der SSH client startet bei 1023 und arbeitet sich runter bis 513 fuer
# jede zusaetzliche, gleichzeitige Connection von einem priv. Port.
# Clients koennen auch zur Nutzung unpriv. Ports konfiguriert werden.
SSH_LOCAL_PORTS="1022:65535" # Port-Bereich fuer lokale Clients
SSH_REMOTE_PORTS="513:65535" # Port-Bereich fuer remote Clients

# traceroute benutzt normalerweise -S 32769:65535 -D 33434:33523
TRACEROUTE_SRC_PORTS="32769:65535"
TRACEROUTE_DEST_PORTS="33434:33523"

# ----------------------------------------------------------------------------
# Default Policy ist DENY
# Es werde explizit gewuenschte IN- und OUTBOUND Connections zugelassen.

# Alle existierenden Paketfilter-REgeln entfernen
ipchains -F

# Default-Policy auf DENY setzen
ipchains -P input DENY
ipchains -P output REJECT
ipchains -P forward REJECT

# Masquerading-Timeout 10h fuer TCP-Connections
ipchains -M -S 144000 28800 28800


# ----------------------------------------------------------------------------

# IP-Forwarding aktivieren
echo 1 > /proc/sys/net/ipv4/ip_forward

# TCP SYN Cookie Protection aktivieren
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Immer defragging Protection aktivieren
echo 1 > /proc/sys/net/ipv4/ip_always_defrag

# Broadcast Echo Protection aktivieren
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Bad Error Message Protection aktivieren
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# IP-Spoofing Protection aktivieren
# Quell-Address-Pruefung einschalten
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done

# ICMP Redirect Acceptance deaktivieren
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done

# Source-Routed Pakete deaktivieren
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done

# Logge gespoofte Pakete, Source Routed Pakete, Redirect Pakete
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 1 > $f
done


# Masquerading Module fuer spezielle Dienste.
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio ports=554,7070,7071,6970,6971
/sbin/modprobe ip_masq_irc

# ----------------------------------------------------------------------------
# LOOPBACK

# Loopback ungehindert zulassen.

ipchains -A input -i $LOOPBACK_INTERFACE -j ACCEPT
ipchains -A output -i $LOOPBACK_INTERFACE -j ACCEPT

# ----------------------------------------------------------------------------
# Interne Netzwerke ungehindert zulassen.

# Alle internen Rechner haben ungehinderten Zugang zum Firewall-Rechner.

ipchains -A input -i $LOCAL_INTERFACE_1 -s $LOCALNET_1 -j ACCEPT
ipchains -A output -i $LOCAL_INTERFACE_1 -d $LOCALNET_1 -j ACCEPT

ipchains -A input -i $LOCAL_INTERFACE_1 -s $LOCALNET_2 -j ACCEPT
ipchains -A output -i $LOCAL_INTERFACE_1 -d $LOCALNET_2 -j ACCEPT

ipchains -A input -i $LOCAL_INTERFACE_1 -s $LOCALNET_3 -j ACCEPT
ipchains -A output -i $LOCAL_INTERFACE_1 -d $LOCALNET_3 -j ACCEPT

# ----------------------------------------------------------------------------
# Maskiere internen Traffic.

# Aller interner Traffic ist nach aussen maskiert.
ipchains -A forward -i $EXTERNAL_INTERFACE -s $LOCALNET_1 -d $ANYWHERE -j MASQ
ipchains -A forward -i $EXTERNAL_INTERFACE -s $LOCALNET_2 -d $ANYWHERE -j MASQ
ipchains -A forward -i $EXTERNAL_INTERFACE -s $LOCALNET_3 -d $ANYWHERE -j MASQ
# ----------------------------------------------------------------------------
# SPOOFING & BAD ADDRESSES
# Verweigere gespoofete Pakete.
# Ignoriere illegale Quell-Adressen.
# Schutz vor dem Senden an illegale Adressen.

# Alle externen Pakete, die behaupten vom externen IF zu kommen ablehnen.
ipchains -A input -i $EXTERNAL_INTERFACE -s $IPADDR -j DENY -l

# ----------------------------------------------------------------------------
# Erlaube selektiven Traffic fuer spezielle Dienste

# ICQ (habe dafuer kein Masq-Modul, darum lasse ich nur bestimmte Ports zu

ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE $UNPRIVPORTS -d $IPADDR 13003:13033 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR 13003:13033 -d $ANYWHERE $UNPRIVPORTS -j ACCEPT


#-----------------------------------------------------------------------------
# Roger Wilco Settings (Kommunikations-Programm fuer Sprachuebertragung)

ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE 3782 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE 3783 -d $IPADDR $UNPRIVPORTS -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 3782 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 3783 -j ACCEPT


# ----------------------------------------------------------------------------
# Unreal Tournament Settings (muss ich net erklaeren <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE 7777 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE 7778 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE 7779 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE 27900 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE 7744 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE 7733 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE 7745 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE 7734 -d $IPADDR $UNPRIVPORTS -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 7777 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 7778 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 7779 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 27900 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 7744 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 7733 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 7745 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 7734 -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 74 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 73 -j ACCEPT

# ----------------------------------------------------------------------------
# TCP UNPRIVILEGIERTE PORTS

# NFS: Keine Connection von aussen erlauben und entspr. Versuche loggen
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $NFS_PORT -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $NFS_PORT -j REJECT -l

# Xwindows: Keine Connection von aussen erlauben und entspr. Versuche loggen
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $XWINDOW_PORTS -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $XWINDOW_PORTS -j REJECT -l

# SOCKS: Keine Connection von aussen erlauben und entspr. Versuche loggen
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $SOCKS_PORT -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $SOCKS_PORT -j REJECT -l

# ----------------------------------------------------------------------------
# UDP UNPRIVILEGIERTE PORTS

# NFS: Keine Connection von aussen erlauben und entspr. Versuche loggen
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--destination-port $NFS_PORT -j DENY -l

# UDP INBOUND TRACEROUTE
# aus dem lokalen Netz zulassen
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
-s $LOCALNET_1 $TRACEROUTE_SRC_PORTS \
-d $IPADDR $TRACEROUTE_DEST_PORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
-s $LOCALNET_2 $TRACEROUTE_SRC_PORTS \
-d $IPADDR $TRACEROUTE_DEST_PORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
-s $LOCALNET_3 $TRACEROUTE_SRC_PORTS \
-d $IPADDR $TRACEROUTE_DEST_PORTS -j ACCEPT

# von aussen verbieten
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--source-port $TRACEROUTE_SRC_PORTS \
--destination-port $TRACEROUTE_DEST_PORTS -j DENY -l

# ----------------------------------------------------------------------------
# von innen initiierte Connections auch wieder reinlassen <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y \
-d $IPADDR -j ACCEPT

# ------------------------------------------------------------------

# DNS client (53)
# ---------------
ipchains -A output -i $EXTERNAL_INTERFACE -p udp \
-s $IPADDR $UNPRIVPORTS \
-d $NAMESERVER_1 53 -j ACCEPT

ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
-s $NAMESERVER_1 53 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT


ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $NAMESERVER_1 53 -j ACCEPT

# ------------------------------------------------------------------

# HTTP client (80)
# ----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 80 -j ACCEPT

# HTTP client (81)
# ----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 81 -j ACCEPT

# HTTP client (82)
# ----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 82 -j ACCEPT


# ------------------------------------------------------------------

# HTTPS client (443)
# ------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 443 -j ACCEPT

# ------------------------------------------------------------------

# NNTP NEWS client (119)
# ----------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $NEWS_SERVER 119 -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $NEWS_LOKI 119 -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $NEWS_VMWARE 119 -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $NEWS_MS 119 -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 119 -j ACCEPT

# ------------------------------------------------------------------

# POP client (110)
# ----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $POP_SERVER 110 -j ACCEPT

# ------------------------------------------------------------------

# SMTP client (25)
# ----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $SMTP_SERVER 25 -j ACCEPT

# ------------------------------------------------------------------

# SSH client (22)
# ---------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $SSH_LOCAL_PORTS \
--destination-port 22 -j ACCEPT

# ------------------------------------------------------------------

# TELNET client (23)
# ------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 23 -j ACCEPT

# ------------------------------------------------------------------

# AUTH server (113)
# -----------------

# REJECT statt DENY den internen Auth-Port. (NET-3-HOWTO)
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp \
--source-port $UNPRIVPORTS \
-d $IPADDR 113 -j REJECT -l


# AUTH client (113)
# -----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 113 -j ACCEPT

# ------------------------------------------------------------------

# WHOIS client (43)
# -----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 43 -j ACCEPT

# ------------------------------------------------------------------

# FINGER client (79)
# ------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 79 -j ACCEPT

# ------------------------------------------------------------------

# FTP client (21)
# ---------------

# outgoing request
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 21 -j ACCEPT


# PORT mode data channel
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp \
--source-port 20 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $IPADDR $UNPRIVPORTS \
--destination-port 20 -j ACCEPT

# ------------------------------------------------------------------

# IRC client (6667)
# -----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 6667 -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port $UNPRIVPORTS -j ACCEPT

# ------------------------------------------------------------------

# RealAudio / QuickTime client
# ----------------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 554 -j ACCEPT

# TCP ist sicherer: 7070:7071

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 7070:7071 -j ACCEPT

# UDP ist das bevorzugte Protokoll: 6970:6999
# Fuer LAN Maschinen braucht UDP das RealAudio Masquerading-Module und
# die 'ipmasqadm'-Software.

ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--source-port $UNPRIVPORTS \
-d $IPADDR 6970:6999 -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p udp \
-s $IPADDR 6970:6999 \
--destination-port $UNPRIVPORTS -j ACCEPT

# ------------------------------------------------------------------

# ICQ client (4000) nochmal ICQ fuer die Logins
# -----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 2000:4000 -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p udp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 4000 -j ACCEPT

ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--source-port 4000 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT

# ----------------------------------------------------------------------------
# UDP wird nur auf ausgewaehlten Ports akzeptiert
# ---------------------------------

# -----------------------
# NTP-SERVER (zeit-server)
# -----------------------

ipchains -A output -i $EXTERNAL_INTERFACE -p udp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 123 -j ACCEPT -l

ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--source-port $UNPRIVPORTS \
-d $IPADDR 123 -j ACCEPT -l


# ------------------------------------------------------------------

# OUTBOUND TRACEROUTE
# -------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p udp \
-s $IPADDR $TRACEROUTE_SRC_PORTS \
--destination-port $TRACEROUTE_DEST_PORTS -j ACCEPT

# ----------------------------------------------------------------------------
# ICMP

# Die folgenden Regeln verhindern DoS-Angriffe, die meist auf
# ICMP-Bomben aufbauen

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type echo-reply \
-d $IPADDR -j ACCEPT

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type destination-unreachable \
-d $IPADDR -j ACCEPT

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type source-quench \
-d $IPADDR -j ACCEPT

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type time-exceeded \
-d $IPADDR -j ACCEPT

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type parameter-problem \
-d $IPADDR -j ACCEPT

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
-s 192.168.1.0/24 echo-request \
-d $IPADDR -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p icmp \
-s $IPADDR echo-reply \
-d 192.168.1.0/24 -j ACCEPT


ipchains -A output -i $EXTERNAL_INTERFACE -p icmp \
-s $IPADDR fragmentation-needed -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p icmp \
-s $IPADDR source-quench -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p icmp \
-s $IPADDR echo-request -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p icmp \
-s $IPADDR parameter-problem -j ACCEPT

ipchains -A output -i $EXTERNAL_INTERFACE -p icmp \
-s $IPADDR time-exceeded \
-d 192.168.1.0/24 -j ACCEPT


# ----------------------------------------------------------------------------
# Aktiviere Logging fuer ausgewaehlte DENYed Pakete:

ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -j DENY -l

ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--destination-port $PRIVPORTS -j DENY -l

ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--destination-port $UNPRIVPORTS -j DENY -l


ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type 5 -j DENY -l
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type 13:255 -j DENY -l

# ----------------------------------------------------------------------------

echo "done" >/dev/tty

exit 0
</b>

so, das war's. verbesserungsvorschlaege sind natuerlich willkommen <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Linux is a wigwam - no windows, no gates, apache inside <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

cptchaos
Posts: 129
Joined: 06. Jun 2000 21:42

Re: Routing

#11 Post by cptchaos »

moin moin, und frohes neues ....

@cerberus

Sauber, so in der Art stelle ich mir ein gut recherchieren FW vor. Hat dich sicherlich auch viel Mühe und Arbeit gekostet, aber einem einfachem User ist es nicht zuzumuten (und er will es meistens auch gar nicht) so ein Skript aufzusetzten oder zu warten. Alleine die Informationsbschaffung der Ports und der notwendigen Dienste kostet viel Mühe, Zeit und Ausdauer (Testen).
Also keine schlechte Leistung, Hut ab,
ich werde mir das Script in den nächsten Tagen einmal zu Gemüte führen.

Zum Thema ICQ, das Masq. Modul (0.56) läuft auch mit (oder für) ICQ2000b (Windows).
Eventuell würde ich den Befehl ipchains durch die direkte Angabe /sbin/ipchains ersetzten, sonst ist es möglich das Tool ipchains zu ersetzten. Man braucht dafür nur ein Programm ipchains in ein Verzeichs kopieren das im $PATH vor dem /sbin steht.

Marek Walther

cerberusger
Posts: 348
Joined: 28. Dec 2000 13:30
Location: Muenchen

Re: Routing

#12 Post by cerberusger »

hi marek <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

mit /sbin/ipchains hast du recht. das hab ich doch glatt uebersehen.

schon passiert <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">


<i>im kommando-modus des vi (symb. durch den doppelpunkt)</i>:

<b>:1,$s/ipchains/\/sbin\/ipchains/g</b>


danke fuer den tipp
Linux is a wigwam - no windows, no gates, apache inside <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

cerberusger
Posts: 348
Joined: 28. Dec 2000 13:30
Location: Muenchen

Re: Routing

#13 Post by cerberusger »

btw, marek:

hast du erfahrungen mit dem icq-masq-modul? ich hab's geschafft, filetransfers rauszuschicken, kann aber keine annehmen. hab der fw die (beim modul voreingestellten) ports 60200:61000 zugewiesen. aber geht net ... <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">
Linux is a wigwam - no windows, no gates, apache inside <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

cptchaos
Posts: 129
Joined: 06. Jun 2000 21:42

Re: Routing

#14 Post by cptchaos »

Moin moin,

muß leider gestehen das ich bis jetzt eigendlich nur die messaging Dienste von ICQ nutze. Und haubsächlich ICQ unter Linux fahre, der ist auch nicht so aufgebläht wie das ICQ2000b für Windows. Dafür habe ich gelegendlich Probleme mit der Linuxversion, hauptsächlich mit der chatfunktion dort kann es vorkommen das ICQ sich beendet oder kein chat aufgebaut werden kann. Bin leider diese Woche etwas im Stress, und werde mir das ICQ Problem mal am Wochende anschauen.

Marek

cerberusger
Posts: 348
Joined: 28. Dec 2000 13:30
Location: Muenchen

Re: Routing

#15 Post by cerberusger »

cool. danke. hab 2000a. finde die linux-clients net so gut, weil die nie die conversation in einem fenster anzeigen, sondern man hat immer eins fuer in und eins fuer out messages.

es sei denn, ich war wieder mal blind, und hab die einstellung noch net gefunden. aber mit grafischen oberflaechen hab ich's net so ... <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Linux is a wigwam - no windows, no gates, apache inside <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Post Reply