PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wer hilft mir bitte bei iptables?



thabermann
21.09.01, 06:33
Guten Morgen!
Ich versuche schon die ganze Zeit mit iptables eine gescheite Firewall für mein Heimnetzwerk einzurichten. Aber leider komm ich dabei auf keinen grünen Zweig, und ich trau mir auch nicht so recht zu das ganze dann auch richtig zu machen. Ich möchte eigentlich folgendes: Der Firewall sollte nach außen gegen Portscans geschützt sein. Er soll alle Anfragen von innen nach außen auf 80 (http) an den Squid Proxy auf der Firewall Maschine (3128) umleiten. Aktives FTP sollte möglich sein, ICQ, Netmeeting und Microsoft Messenger wenn möglich auch. Wenn es geht sollte Gnutella funktionieren, aber nur wenn das kein Risiko darstellt. Außerdem hab ich bis jetzt keinen Weg gefunden dass alle Windows Media und Real Player Filme funktionieren, selbst wenn ich alles offen lass und nur nach außen blockier geht es nicht, und die beiden brauch ich wirklich. Und zum Schluss wär es toll wenn ich dann noch Counterstrike und MSN Gaming Zone Spiele spielen könnte.

Vielleicht könnt ihr mir ja den ein oder anderen Tipp geben oder ihr kennt ein Firewall Skript das das oder ähnliches erledigt. Ein paar Dokumentationsadressen wären auch hilfreich, da ich mir die Sachen im Normalfall schon ganz gern selber mach. Aber bitte nicht die Netfilter HOWTOs, die kenn ich schon, aber da steht auch nicht drin was ich freischalten muss damit das und das funktioniert.
Also, jeder Hinweis hilft, wenn ich mir daraus ein komplettes Skript basteln kann poste ich es selbstverständlich ;)
Danke!!

bluesky666
21.09.01, 16:44
Hi,

ich hab nen gutes Firewall script, bei interesse kurz mailen an bluesky666doom@icqmail.com
es ist recht einfach zum einrichten.

gruß

Helge

thabermann
22.09.01, 15:45
Danke, das Skript ist schon mal ganz hilfreich. Aber leider lässt es sich ziemlich kompliziert anpassen, weil es ja diese Konfigurationsdatei dazu gibt. Ausserdem gefällt mir nicht so sehr dass da standardmäßig einige Ports von außen zugänglich sein sollen. Mir würde eine Vorlage mehr nützen die ich mir frei anpassen kann. Das Problem ist nicht dass ich iptables nicht bedienen kann, sondern dass ich nicht weiß welche Dinge wichtig sind. Trotzdem vielen Dank an Helge, das hält mich erstmal ein bisschen über Wasser. Kennt vielleicht noch jemand ein passendes Skript?

h0sch1
24.09.01, 20:52
Hi

Willste mal mein Script begutachten

ma.strauch@gmx.de :D

neo2k
26.09.01, 20:21
an iptables scripten immer interessiert, da kann man nie auslernen ... :P

wenn möglich bitte an
ddflatrate@web.de schicken
danke
T

kehj
02.10.01, 16:22
Jo, falls jemand ein gutes iptables-Skript hat, das er mir zu Ansicht überläßt, wäre ich auch dankbar ;)

Wie neo2k gesagt hat, man lernt nie aus... ;)
Ach ja, meine Mail: kehj@gmx.net

CUbE
09.11.01, 09:30
Hi,

das script hätte ich auch gerne!
s.kubala@web.de

MfG
CUbE

wadesch
09.11.01, 13:05
gude wie,



da kann ich mich nur anschliessen

wadesch (wadesch@freenet.de)

cejay
11.11.01, 08:28
Hi,

mein Firewallskript funktioniert eigentlich recht gut, allerdings blockt es nur Angriffe von aussen, da es für mein privates Netzwerk zuhause ist. Wenn ich mal wieder Zeit hab, versuch ichs mal zu erweitern, dass auch Trojaner o. ä. Progs keine Chance haben Daten nach aussen zu schicken:



#!/bin/bash
#
# Firewallscript
#
# erstmal ein paar Variablen setzen
#
IPTABLES=/sbin/iptables
NET_LOC="192.168.0.0/24"
BCAST_LOC="192.168.0.255"
IF_LOC=eth0
IF_EXT=ippp0
#
# Module laden
#
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ipt_MASQUERADE
modprobe ipt_MIRROR
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_state
modprobe ipt_tcpmss
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
#
# setzen von dynamischen Kernelparametern, erschwert DoS-Angriffe
# für mehr Info siehe /usr/src/linux/Documentation/networking/ip-sysctl.txt
#
# keine Antwort auf Broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# keine Antwort auf unsinnige Fehlermeldungen
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# einige Timeouts setzen
echo "5" > /proc/sys/net/ipv4/icmp_destunreach_rate
echo "5" > /proc/sys/net/ipv4/icmp_echoreply_rate
echo "5" > /proc/sys/net/ipv4/icmp_paramprob_rate
echo "10" > /proc/sys/net/ipv4/icmp_timeexceed_rate
# keine sourcegerouteten Pakete akzeptieren
echo "0" > /proc/sys/net/ipv4/conf/$IF_EXT/accept_source_route
# keine ICMP-Redirects akzeptieren
echo "0" > /proc/sys/net/ipv4/conf/$IF_EXT/accept_redirects
# Reverse-Path_Filtering aktivieren
echo "1" > /proc/sys/net/ipv4/conf/$IF_EXT/rp_filter
# loggen falscher Pakete aktivieren
echo "1" > /proc/sys/net/ipv4/conf/$IF_EXT/log_martians
# bootp-Relay deaktivieren
echo "0" > /proc/sys/net/ipv4/conf/$IF_EXT/bootp_relay
#
# IP-Forwarding aktivieren
echo "1" > /proc/sys/net/ipv4/ip_forward
# wenn dynamische Adresszuweisung durch den ISP, aktivieren
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
#
##################################################
#############################
# Regeln
##################################################
#############################
#
# evtl. vorhanden Regeln löschen
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
# Standardregeln auf DROP setzen
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
# Zugriff auf Loopback-Device zulassen
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT
#
# alle Pakete, die von aussen kommen und vorgeben von innen zu sein abweisen
$IPTABLES -A INPUT -i $IF_EXT -s $NET_LOC -j REJECT
# Merkwürdige Pakete vernichten
$IPTABLES -t nat -A PREROUTING -i $IF_EXT -s 192.168.0.0/16 -j DROP
$IPTABLES -t nat -A PREROUTING -i $IF_EXT -s 10.0.0.0/8 -j DROP
$IPTABLES -t nat -A PREROUTING -i $IF_EXT -s 172.16.0.0/12 -j DROP
# Pakete wie ungültige Header, illegale Kombination von TCP-Flags, illegale
# TCP/IP-Optionen, Ping of Death u.a. löschen
$IPTABLES -A INPUT -m unclean -j DROP
$IPTABLES -A FORWARD -m unclean -j DROP
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
#
# unbeschränkten Verkehr von innen nach aussen zulassen
$IPTABLES -A INPUT -i $IF_LOC -s $NET_LOC -j ACCEPT
$IPTABLES -A FORWARD -i $IF_LOC -s $NET_LOC -j ACCEPT
$IPTABLES -A FORWARD -o $IF_EXT -i $IF_LOC -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Verkehr von innen nach innen zulassen
$IPTABLES -A OUTPUT -o $IF_LOC -d $NET_LOC -j ACCEPT
# Verkehr von aussen nach innen blocken
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# Schutz gegen Ping-Flood
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
# keine Pings ins interne Netz forwarden
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -o $IF_LOC -j REJECT
# kein Ping auf Broadcast zulassen
$IPTABLES -A INPUT -p icmp -d $BCAST_LOC -j DROP
# andere ICMP zulassen
$IPTABLES -A INPUT -p icmp -j ACCEPT
# eingehende Antworten zulassen
$IPTABLES -A FORWARD -i $IF_EXT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SMB nach aussen sperren
$IPTABLES -A FORWARD -o $IF_EXT -p tcp --dport 137:139 -j REJECT
$IPTABLES -A FORWARD -o $IF_EXT -p udp --dport 137:139 -j REJECT
#
#
# einige Ports werden komplett abgedichtet aber geloggt
$IPTABLES -A INPUT -p tcp --dport 6670 -m limit -j LOG --log-prefix "Deepthroat scan"
$IPTABLES -A INPUT -p tcp --dport 6670 -j DROP
$IPTABLES -A INPUT -p tcp --dport 6711:6713 -m limit -j LOG --log-prefix "Subseven scan"
$IPTABLES -A INPUT -p tcp --dport 6711:6713 -j DROP
$IPTABLES -A INPUT -p tcp --dport 12345:12346 -m limit -j LOG --log-prefix "netbus scan"
$IPTABLES -A INPUT -p tcp --dport 12345:12346 -j DROP
$IPTABLES -A INPUT -p tcp --dport 20034 -m limit -j LOG --log-prefix "netbus scan"
$IPTABLES -A INPUT -p tcp --dport 20034 -j DROP
$IPTABLES -A INPUT -p tcp --dport 31337 -m limit -j LOG --log-prefix "Back Orifice Scan"
$IPTABLES -A INPUT -p tcp --dport 31337 -j DROP
$IPTABLES -A INPUT -p tcp --dport 6000 -m limit -j LOG --log-prefix "X-Windows Port"
$IPTABLES -A INPUT -p tcp --dport 6000 -j DROP
# Traceroutes benötigen zugemachten Port, deswegen kein Antworten von diesen
$IPTABLES -A INPUT -p udp --dport 33434:33523 -j DROP
# ident nicht loggen, sonst wird immer geloggt wenn man IRC benutzt
$IPTABLES -A INPUT -p tcp --dport 113 -j DROP
#
#
# und zu guter letzt Masquerading aktivieren
$IPTABLES -t nat -A POSTROUTING -o $IF_EXT -j MASQUERADE


Vorschläge zur Verbesserung? Nur zu!

CU
cejay

linuxkiller
13.11.01, 12:30
@ cejay

Ganz ordentlich dein Skript! Doch was ist jetzt wenn ich den Port 27015 von aussen nach irgendwie 192.168.1.127:27015 weiterleitet?
Das ist wirklich noch das einzige, was ich nicht so begreife...

greezzz
LiNuXKiLLeR

cejay
14.11.01, 06:55
@linuxkiller

wird das nicht mit

$IPTABLES -A INPUT -i $IF_EXT -s $NET_LOC -j REJECT
verhindert?

cu
cejay

aycaramba
14.11.01, 16:28
Die aufgeführte Regel betrifft die INPUT chain, nicht aber die FORWARD.

Du mußt nur folgendes machen:

$IPTABLES -A FORWARD -i $IF_EXT -p tcp --dport 27015 -j ACCEPT


und dann noch

$IPTABLES -t nat -A PREROUTING -p tcp --dport 27015 -i $IF_EXT -j DNAT --to 192.168.1.127:27015

Das ganze sieht nach einem Halflife Mod aus, ich weiß nicht genau, aber es könnte sein, dass da auch noch ein udp Port gebraucht wird, in dem Fall müßte das o.g. nocheinmal benutzt werden, allerdings müßte dann "tcp" in "udp" gewandelt werden.

Gruß Marc

linuxkiller
14.11.01, 19:03
@ aycaramba

Hey, danke vielmals ;)
Nun kann ich endlich anfangen, mein eigenes Skript für den Firewall zu schreiben...


greezzz
LiNuXKiLLeR

pitfl
20.11.01, 22:27
Hallo cejay,
wollte unter Suse 7.3 Dein vorgestelltes Firewall Script mal testen.
Erhalte dabei nachfolgende Fehlermeldung:

/firewall: /proc/sys/net/ipv4/icmp_destunreach_rate: Datei oder Verzeichnis nicht gefunden
./firewall: /proc/sys/net/ipv4/icmp_echoreply_rate: Datei oder Verzeichnis nicht gefunden
./firewall: /proc/sys/net/ipv4/icmp_paramprob_rate: Datei oder Verzeichnis nicht gefunden
./firewall: /proc/sys/net/ipv4/icmp_timeexceed_rate: Datei oder Verzeichnis nicht gefunden
./firewall: /proc/sys/net/ipv4/conf/ppp0/accept_source_route: Datei oder Verzeichnis nicht gefunden
./firewall: /proc/sys/net/ipv4/conf/ppp0/accept_redirects: Datei oder Verzeichnis nicht gefunden
./firewall: /proc/sys/net/ipv4/conf/ppp0/rp_filter: Datei oder Verzeichnis nicht gefunden
./firewall: /proc/sys/net/ipv4/conf/ppp0/log_martians: Datei oder Verzeichnis nicht gefunden
./firewall: /proc/sys/net/ipv4/conf/ppp0/bootp_relay: Datei oder Verzeichnis nicht gefunden
Da ich kein isdn besitze, habe ich in Deinem Script nur ipp0 auf ppp0
geändert. Wähle mich über ein Modem ins Internet ein. Das Verzeichnis ppp0 existiert aber definitiv nicht in /proc/sys/net/ipv4/conf.
Was muß ich noch tun? Benutze z.Zt die Personal Firewall von Suse.

mfg
pit

cejay
21.11.01, 07:23
Hi,

also da ich mich weder mit Modem noch mit SuSe besonders auskenne kann ich dir nur ein paar allgemeine Hinweise geben.
Im Kernel müssen
-TCP/IP Networking
- Sysctl support
- /proc filesystem support
eingebunden sein.
Selbstverständlich müssen ppp und iptables installiert sein.
Bei Mandrake 8.1 musste ich am Kernel nix ändern, ich denk mal, dass das beim SuSe-Standardkernel auch nicht nötig ist.

Vielleicht hat noch jemand anderes Vorschläge ;)

cu cejay

pitfl
21.11.01, 11:21
Hallo,
danke für die schnelle Antwort. Hilft mir aber nicht weiter, da eigentlich alles erforderliche aktiv ist.
mfg
pit

wadesch
21.11.01, 11:45
hier (http://www.malibyte.net/security/fwscripts.html) gibt es ein gutes firewall-script, braucht man nur noch anpassen und abgeht's :D

cejay
21.11.01, 17:26
@pitfl

das Verzeichnis /proc/sys/net/ipv4/conf/ppp0 wird erst dann erstellt, wenn Du das Device ppp0 mit ifup ppp0 aktiviert hast. D. h. erst Device, dann Firewall starten!:rolleyes:

hoffe es hilft

mfg
cejay

Elektronator
21.11.01, 22:02
üblicherweise schreibt man den Start der Firewall in die /etc/ppp/ip-up.local und holt sich die (dyn.) IP des externen dev mit grep aus ifconfig. Dann ist man sehr sicher, daß die firewall auch (aktuell) da ist, wenn man sie braucht (online).

pitfl
21.11.01, 22:11
Hallo,
bedanke mich bei allen für die Unterstützung. Hilft mir sicher ein Stück weiter.
mfg
pit

pitfl
22.11.01, 17:47
Hallo, habe mir erst mal ein paar theoretische Grundlagen zum Thema Firewall gesaugt. Gehe das Problem nach Durcharbeitung dieser Unterlagen, noch mal an.
Man kann ja davon nicht dümmer werden.

Eine Frage hätte ich jedoch noch.

Wie kann man auf seinem System feststellen ob offene Ports vorhanden sind und wenn ja, welche?
Kann man diesen Scan vom eigenen PC ausführen, wenn ja, mit welchem Programm?
Gibt es eine seriöse Webseite wo man so einen Test durchführen lassen kann?

mfg
pit

cejay
22.11.01, 19:06
hi,

www.lfd.niedersachsen.de/service/service_selbstt.html (http://www.lfd.niedersachsen.de/service/service_selbstt.html)

greez

cejay

pitfl
22.11.01, 20:37
Hallo cejay,
herzlichen Dank für Deine Info.
Dein letzter Tip betreffs if up ppp0 hat mir übrigens weitergeholfen.

Viele Grüße
pit