ssh mit firewall

daiv

AgainstAllAuthority
hi
habe das firewallscript aus dieser anleitung

http://www.mbpublish.de/index.php?open=6__FreeBSD&file=13__DSL-Router Teil3.html

übernommen (devices angepasst).

wenn ich jetzt dieses script starte, habe ich angst nicht mehr auf die bsd box per ssh connecten zu können (steht nicht hier). brauche ich einen bestimmen eintrag noch in dem script?

ich muss eins sagen: ich verstehe fast alles irgendwie nach ner zeit bei freebsd (bin relativ neu), ABER dieses firewallzeux check ich einfach nicht. es geht nicht in meinen kopf, genauso wie mathe.

danke
 
nochwas: kann man wenn man die regeln ändert die firewall "killen" und neustarten?
 
also wenn ich die letzte zeile lösche müsste ich auf das system connecten können?!

du hast recht ich muss mich echt mehr damit beschäftigen :_(

aber danke erstmal!
 
Ich hab mich bis jetzt auch noch nicht richtig mit firewalls beschäftigt, aber wenn ich es richtig verstehe darfst du die Kiste anpingen aber sonst nix.
Steht ja auch da:
http://www.mbpublish.de schrieb:
Die letzte Regel sollte immer dazu dienen alles zu verbieten was nicht vorher expliziet erlaubt wurde. Dies führt allerdings auch dazu, dass man unter Umständen viel Zeit damit verbringen muss alles einzutragen was erlaubt werden soll. In diesem Bsp. sollte unbedingt noch alles über den Port 80 erlaubt werden, um zumindest das Surfen auf HTTP Seiten zu erlauben.
 
also wenn ich das mache komm ich trotzdem nicht drauf.

kann mir vielleicht jemand eine firewall config geben in der er nen web- und ftpserver und ssh freigeschaltet hat? dann könnte ich das leichter verstehen.

vielen dank!
 
danke dir, aber das howto hab ich schon durchgemacht. ich check die regeln einfach nicht. die einzelnen zeilen. die gehen nicht in meinen kopf. wie das funzt.

deshalb wollte ich eine config mit webserver ftp und ssh ports offen damit ich das begreifen kann wie das geht.

:(
 
dann probier das mal aus:

#!bin!sh
#

#Mach "Quiet"
fwcmd="/sbin/ipfw -q"

#Erstmal alles saubermachen bevor wir anfangen
${fwcmd} -f flush

ipfw add 10 divert natd all from any to any via xl0

#Das setzen unserer eigenen Variabeln
interface="xl0" # ${interface} Netzwerkkarte
dns_server="62.2.24.162" # ${dns_server} DNS-Server
open_tcpports="21,22,80" # ${open_tcpports} Offene TCP-Ports
#open_udpports="" # ${open_udpports} Offene UDP-Ports

#Erlaubt Loopbackverbindungen
${fwcmd} add allow ip from any to any via lo0

#Erlaubt Verbindungen welche von hier initiiert wurden
${fwcmd} add allow tcp from any to any out xmit ${interface} setup
${fwcmd} add allow udp from any to any out xmit ${interface} setup

#Erlaubt der Verbindung offen zu bleiben
${fwcmd} add allow tcp from any to any via ${interface} established
${fwcmd} add allow tcp from any to any via ${interface} established

#Erlaubte Dienste die aus dem Netzwerk erreicht werden duerfen
${fwcmd} add allow tcp from any to any ${open_tcpports} setup
${fwcmd} add allow udp from any to any ${open_udpports} setup
${fwcmd} add allow tcp from any to any ${open_tcpports} out xmit ${interface}
${fwcmd} add allow udp from any to any ${open_udpports} out xmit ${interface}
${fwcmd} add allow tcp from any to any ${open_tcpports} in recv ${interface}
${fwcmd} add allow udp from any to any ${open_udpports} in recv ${interface}

#Sendet RESET an alle ident Packete
${fwcmd} add reset tcp from any to any 113 in recv ${interface}

#Erlaubt ausgehende DNS-Anfragen NUR auf angegebenem DNS-Server
#${fwcmd} add allow udp from any to ${dns_server} 53 out xmit ${interface}
#${fwcmd} add allow tcp from any to ${dns_server} 53 out xmit ${interface}
#${fwcmd} add allow udp from ${dns_server} 53 to any in recv ${interface}
#${fwcmd} add allow tcp from ${dns_server} 53 to any in recv ${interface}

#Loggt ICMP Anfragen (echo und dest. unreachable)[/I]
${fwcmd} add allow log icmp from any to any in recv ${interface} icmptype 3
${fwcmd} add allow log icmp from any to any in recv ${interface} icmptype 8

#ICMP erlauben
${fwcmd} add allow icmp from any to any

#Alles andere verbieten (Wird nicht geloggt)
${fwcmd} add deny ip from any to any


musst halt noch dein interface und dns anpassen! korrigiert mich bitte wenn was falsch sein solltte.
 
also das haut auch nicht hin :(

ich komm dann garnicht mehr raus. nicht mal vom rechner selbst.

interface="xl0" # ${interface} Netzwerkkarte = ist die netzwerkkarte für das netzwerk und nicht für dsl oder?

was kann ich noch machen?!
 
hi,

poste doch mal ob dein rechner direkt am dsl oder an einem switch hängt. willst du ein gateway oder nur ftp, www und ssh haben?

gruss
 
natd rennt

rechner ist sozusagen router und die anderen rechner im netzwerk sollen auch ins internet können. was auch geht wenn die firewall aus ist

hier meine firewall conf:
ipfw add 10 divert natd all from any to any via xl0

#Das setzen unserer eigenen Variabeln
interface="vr0" # ${interface} Netzwerkkarte
dns_server="62.27.27.62" # ${dns_server} DNS-Server
open_tcpports="21,22,80" # ${open_tcpports} Offene TCP-Ports
#open_udpports="" # ${open_udpports} Offene UDP-Ports

#Erlaubt Loopbackverbindungen
${fwcmd} add allow ip from any to any via lo0

#Erlaubt Verbindungen welche von hier initiiert wurden
${fwcmd} add allow tcp from any to any out xmit ${interface} setup
${fwcmd} add allow udp from any to any out xmit ${interface} setup

#Erlaubt der Verbindung offen zu bleiben
${fwcmd} add allow tcp from any to any via ${interface} established
${fwcmd} add allow tcp from any to any via ${interface} established

#Erlaubte Dienste die aus dem Netzwerk erreicht werden duerfen
${fwcmd} add allow tcp from any to any ${open_tcpports} setup
${fwcmd} add allow udp from any to any ${open_udpports} setup
${fwcmd} add allow tcp from any to any ${open_tcpports} out xmit ${interface}
${fwcmd} add allow udp from any to any ${open_udpports} out xmit ${interface}
${fwcmd} add allow tcp from any to any ${open_tcpports} in recv ${interface}
${fwcmd} add allow udp from any to any ${open_udpports} in recv ${interface}

#Sendet RESET an alle ident Packete
${fwcmd} add reset tcp from any to any 113 in recv ${interface}

#Erlaubt ausgehende DNS-Anfragen NUR auf angegebenem DNS-Server
#${fwcmd} add allow udp from any to ${dns_server} 53 out xmit ${interface}
#${fwcmd} add allow tcp from any to ${dns_server} 53 out xmit ${interface}
#${fwcmd} add allow udp from ${dns_server} 53 to any in recv ${interface}
#${fwcmd} add allow tcp from ${dns_server} 53 to any in recv ${interface}

#Loggt ICMP Anfragen (echo und dest. unreachable)[/I]
${fwcmd} add allow log icmp from any to any in recv ${interface} icmptype 3

#ICMP erlauben
${fwcmd} add allow icmp from any to any

#Alles andere verbieten (Wird nicht geloggt)
${fwcmd} add deny ip from any to any

braucht ihr noch was?


dieses firewallzeux bringt mich noch um.
 
IPFilter

Einleitung
----------------------------------------------------------------------------------------------
Wieso versucht Du nicht einfach ipfilter statt ipfw als Firewall? IPFilter hat aus meiner Sicht folgende Vorteile gegenüber ipfw:

1.) Einfachere, lesbarere Firewallregeln.
2.) Mit FreeBSD-5.3 wird eine dritte Firewall namens pf eingeführt. PF kommt von OpenBSD und wird sehr wahrscheinlich die beiden
existierenden FreeBSD-Firewalls verdrängen. Damit Du nicht nochmal bei Null anfangen musst, empfehle ich Dir schon jetzt mit
IPFiler zu üben! IPFilter benutzt einen sehr ähnlichen Firewallregel-Syntax wie pf.


IPFilter-Installation
----------------------------------------------------------------------------------------------
In /etc/rc.conf:

ipfilter_enable="YES"

Zusätzlich in den Kernel einbauen:

options IPFILTER #ipfilter aktivieren
options IPFILTER_DEFAULT_BLOCK #blocke alle Pakete per default


IPFilter-Konfiguration
-----------------------------------------------------------------------------------------------
Die Firewallregeln werden von /etc/ipf.rules gelesen. Du musst diese Datei von Hand erstellen!

Für einen gewöhnliche Heim-Computer mit Internetanschluss (DHCP) und aktiviertem SSH-Server
reicht folgende /etc/ipf.rules aus:


#*****************************************************************************
# /etc/ipf.rules
# FreeBSD-ipfilter-Firewall-Konfiguration
# Andy, am 19.7.2004

# Regeln
#-------------------------------------------------------------------------

# setup a default deny policy
block in on fxp0
block out on fxp0

# pass traffic on the loopback interface in either direction
pass in quick on lo0
pass out quick on lo0

# Blockiere den externen Verkehr mit privaten Adressen
block in quick on fxp0 from 10.0.0.0/8 to any
block in quick on fxp0 from 192.168.0.0/16 to any
block in quick on fxp0 from 172.16.0.0/12 to any
block in quick on fxp0 from 127.0.0.0/8 to any
block out quick on fxp0 from any to 10.0.0.0/8
block out quick on fxp0 from any to 192.168.0.0/16
block out quick on fxp0 from any to 172.16.0.0/12
block out quick on fxp0 from any to 127.0.0.0/8

# pass tcp, udp, and icmp out on the external (Internet) interface.
pass out on fxp0 proto tcp from any to any flags S keep state keep frags
pass out on fxp0 proto udp from any to any keep state
pass out on fxp0 proto icmp from any to any keep state

# Server-Ports freigeben
pass in on fxp0 proto tcp from any to any port = ssh flags S/SA keep state keep frags

# Ende von /etc/ipf.rules
#*****************************************************************************************


ersetze fxp0 mit dem Kürzel Deiner Netzwerkkarte (ifconfig gibt Auskunft).


Firewallregeln-Kontrolle
-------------------------------------------------------------------------------
Kontrolliere mit:

ipf -Fa
ipf -f /etc/ipf.rules
ipfstat -io

ob Deine Firewallregeln auch korrekt formuliert sind!


Firewall-Minimaltest
-------------------------------------------------------------------------------
Beachte bitte, dass die oben aufgelisteten Firewallregeln schwammig sind, da wegen den dynamisch vergebenen IP-Adressen
meistens nur any statt eine fixe IP-Adresse eingesetzt wurde. Aber es funktioniert, wie Du zum Beispiel unter:

http://scan.sygatetech.com/prequickscan.html

feststellen kannst!


IPFilter-Firewallregeln lesen
-------------------------------------------------------------------------------
Die Firewall fängt bei der ersten Regel an, und arbeitet sich durch alle
Regeln durch und wendet schliesslich die letzte passende Regel an.

+++++++++++++++++++++++++++++
z.B. ping www.gmx.ch

block out on fxp0 => Blockiere ausgehenden Verkehr

pass out on fxp0 proto icmp from any to any keep state => Lasse Ping-Request hinaus. Und erstelle
eine temporäre Firewallregel (keep state), die das Ping-Echo wieder hinein lässt!

Da "pass out on fxp0 proto icmp from any to any keep state" die letzte passende Regel ist, wird
diese angewendet, obwohl weiter oben eine Blockierregel steht!
+++++++++++++++++++++++++++++

Eine Ausnahme bilden quick-Regeln. Passt eine Firewallregel, welche ein "quick" enthält, so werden
die nachfolgenden Firewallregeln nicht mehr beachtet. Es wird direkt die quick-Regel angewendet.

+++++++++++++++++++++++++++++
ssh-Zugriff von einem privaten Netz (192.168.0.1) auf den ssh-Server

block in quick on fxp0 from 192.168.0.0/16 to any => Alle Pakete aus privaten Netzen werden blockiert

=> Die nachfolgende, auch passende Regel:
pass in on fxp0 proto tcp from any to any port = ssh flags S/SA keep state keep frags
wird gar nicht beachtet!
+++++++++++++++++++++++++++++

Viel Spass!
--------------------------------------------------------------------------------
 
Hmm, wo ist denn Dein "tun0" device in Deiner Config? Hier geht es doch um eine DSL Strippe mit tun0 oder?
 
ja ist dsl
habe die anleitung von mroscic genommen. also wenn es nicht drin steht geht es auch nicht? ich will eigentlich nur den webserver, ftpserver laufen lassen und mit meinen clients ins internet. aber das haut alles nicht hin :( ich heule gleich

danke AndreasMeyer. wenn ich hier echt nicht mehr weiterkomme, werde ich deine methode versuchen! dann belästige ich dich damit ;)
 
ipfw add 10 divert natd all from any to any via tun0 -> rl0 das war wohl der fehler

jetzt scheint es zu funzen ;) zumindest zeigt mir http://scan.sygate.com/quickscan.html bei den ports die zu sind "blocked" an, nicht closed. das stimmt dann so, oder?

jetzt noch eine frage: wie kann ich wenn ich einen neuen port öffne, die regeln übernehmen? ./fwrules geht nicht. permission denied

und verstehe ich es richtig: jetzt können die clients alles im internet machen, der server ist allerdings abgesichert? weil ich kann ohne probleme auf irc, oder icq zugreifen.
 
ich hab jetzt zb ein problem: ich dachte wenn ich das so einstelle dann können die clients alles machen. aber dcc zb geht nicht. weiß auch nicht warum.

muss man hier jeden port einzeln freischalten?

kann man auch port ränge freischalten? zb. 5000-5005 oder so?
 
Zurück
Oben