PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : eigenes Firewallscript - iptables - ??



Los_Andros
05.03.02, 12:46
Hi Leute,
Also, ich will folgendes Szenario realisieren (Es handelt sich um ein Heimnetzwerk zum probieren):

3 Clients (2x WinME, 1xSuSE Linux 7.3)
1 Server (P233 32MB, SuSE 7.2Prof)

Auf dem Server läuft squid für http, samba und sendmail/fetchmail.
Diesen Rechner möchte ich gerne durch eine Firewall nach aussen absichern (so gut es geht) und zusätzlich ftp ermöglichen.

Nach aussen (über ippp0, dynamisch vergebene IP vom Provider) sollen auf jeden Fall folgende Dienste erreichbar sein: http, ftp, mail (pop3, smtp), icmp (ping)

Nach innen (eth0) sollen natürlich auch diese Dineste verfügbar sein, darüber hinaus aber noch ssh, telnet und X (für remote - arbeiten mit cygwin)

Das ganze möchte ich mit iptables lösen (logisch), aber dazu habe ich noch ein paar Fragen:
1. Ich habe von den Protokollen udp und igmp gelesen, brauch ich diese, bzw. für was bräuchte ich sie?

2. Für ftp brauche ich masquerading, wie funktioniert das genau, reicht es aus eine neue Regel wie folgt zu erstellen?
"iptables -t nat -A POSTROUTING -o ippp0 -j MASQUERADE"
Welche Regeln muss ich zusätzlich erstellen, diese hat ja eigentlich nicht direkt was mit ftp zu tun??

3. Kann mir jemand ein kleines Beispielscript zeigen, wie ich das ganze Aufbaue (ja, ich habe die Howto's gelesen, der Anfang ist auch noch logisch, aber dann streikt mein Gehirn und nach fünfmal lesen werd ich daraus dann immer noch nicht schlau)?

Superriesendank

[WCM]Manx
05.03.02, 14:29
Hi!

Würd Dir das empfehlen:
http://www.susepress.de/de/katalog/3_934678_40_8/index.html

... auf der Homepage des Autors gibts auch Beispielscripts.
http://www.swobspace.de/linux/das-firewall-buch/material-das-firewall-buch.html

(ein gewisses Grundwissen vorausgesetzt)

weitere Infos:
http://www.linuxguruz.org/iptables/

Sollte fürs erste reichen.

Grüße

Manx

Los_Andros
07.03.02, 08:56
So, dank dem guten Buch (danke für den Tip) und einigen How To's im Internet habe ich jetzt mal ein Firewallscript geschrieben, eine kleine Frage habe ich dazu noch (da es nicht wirklich gut funktioniert)

Nachdem ich einige Variablen deklariert habe

set IPTABLES = /usr/sbin/iptables
set INTERN = 192.168.1.0/255.255.255.0 # int- Netz
set INT = eth0 # Interface ins interne Netz
set EXT = ippp0 # Interface ins Internet
set p_ssh = 1000:1023 # ssh Ports
set p_high = 1024:65535 # unprivileged ports
set p_x = 6000:6001 # Port des X-Servers 6000-6063

set NS = ( 194.97.3.1 194.97.109.1 ) # DNS von Freenet
set IF = ( $EXT $INT )

werden laut dem Firewall Buch noch einige dynamische Kernelparameter gesetzt

echo "0" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
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 "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
foreach if ( $IF )
echo "1" > /proc/sys/net/ipv4/conf/$if/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/$if/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/$if/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/$if/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/$if/log_martians
end

Meine Fragen:

1. Muss ich die Kernelparameter setzen? dyn_ip wird bei SuSE automatisch auf yes gesetzt!

2. Wo finde ich im Internet infos zu diesen Kernelparametern? (ich will schließlich wissen was ich da mache)

3. Grundsätzliches, wenn ioch als client eine ssh Verbindung zu meiner Firewall aufbauen will, über welchen Port läuft das. Das Problem ist nämlich folgendes, ich greife remote auf meinen Server zu und wenn ich die Firewall einschalte, dann wars das erstmal mit remote (obwohl ich ssh freigeschaltet habe)
$IPTABLES -A INPUT -i $INT -s $INTERN -p TCP \
--sport $p_ssh --dport ssh -m state \
--state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A OUTPUT -o $EXT -d $INTERN -p TCP \
--dport $p_ssh --sport ssh -m state \
--state ESTABLISHED,RELATED -j ACCEPT

Woran könnte das liegen?

[WCM]Manx
07.03.02, 09:14
Hi!

Zum ssh-Problem:

Die ssh-Ports "set p_ssh = 1000:1023" sind zu knapp bemessen.
Gib mal 500:65535 an, dann sollte es klappen!

In die Logs schauen hilft oft bei der Fehlersuche.

Grüße

Manx

Los_Andros
07.03.02, 09:16
ok, werd ich mal probieren,

jduck01
07.03.02, 09:59
Hi,

würde eher 1023:65535 eingebem, da alle Port unter 1023 festen Diensten zugeordnet sind.

CU
Jduck001