Mit YaST unter Suse9.2 habe ich die Firewall soweit eingestellt. Nur: unter Windows habe ich wirklich ALLES unter Kontrolle. Da ist ALLES gesperrt und ich gebe nur das frei, was ich wirklich benutze (egal ob rein oder raus), IP-Adresse für IP-Adresse. Das geht soweit, dass meine Email-Provider eben nur aus Thunderbird erreichbar, aber von keinem anderen Programm aus erreichbar sind.
Seit dem 28.Januar 2005 versuche ich ein ähnliches Verhalten unter Linux hinzubekommen – mit wenigen Ausnahmen jeden Abend mindestens 2 Stunden, i.d.R. bis weit nach Mitternacht. Gelernt habe ich einiges, aber ein Ergebnis kann ich noch nicht vorweisen. Zumindest habe ich keine volle Kontrolle über das was den Rechner verlässt, bzw. reinkommt. Das macht mich insofern eben stutzig, weil man allgemein liest, dass Firewalls mit Linux viel besser sein sollen als mit Windows realisierte.
Solange ich nicht weiss, was passiert bin ich halt unsicher, aber vielleicht ist man da nur “Angstgeschädigt aus alten Windowszeiten”. Gerade die Sicherheit von Linux war für mich das Argument bei dem neuen PC es mit Linux zu versuchen, nachdem ich mehrfach virengeschädigt war. Danach habe ich die obige extrem restriktive Firewall erstellt und hatte Frieden.
Hallo
Anbei ein kleines Shell-Script, das ich für meine Firewall benutze!!! Sollte eigentlich selbsterklärend sein ;-).
IP-Adressen und Ports müssen noch entsprechend angepasst werden.
Iptables ist ein Feature des Kernels 2.4.x & 2.6.x (sollte bei den neuen Distris immer vorhanden sein !!!).
Programmfilter wie unter Windows-Firewalls existieren bei iptables nicht. Aber es gibt diverse andere Möglichkeiten dies unter Linux zu erledigen (nicht ganz Trivial !!!).
Ansonsten brauchst du dir wenig Sorgen über Viren & Würmern unter Linux machen.
Trojaner kommen durch alle Firewalls (eMail-Anhänge etc). Daher sollte man sich jeden eMail-Anhang 3x anschauen, bevor man ihn öffnet, obwohl ich nach 10 Jahren Linux noch nie einen Trojaner für Linux gesehen habe (und sie existieren doch ?!).
Die Standartfirewall bei SuSE ist unter Umständen sehr restrektiv, daher versuche es ‘mal mit dem Skript unten, oder wühl dich durch das Yast-Setup von Iptables (Experten-Setup glaube ich ;-)). Dort kannst du deine Firewall entsprechen anpassen.
ciao stefan
LISTENING_PORT=22,25,53,80,1720
#UDP_PORT=5000,5001,5002,5003
#NETZWERK_1=eth0
#NETZWERK_2=eth1
# Löschen alle alten Regeln
iptables -P OUTPUT ACCEPT # ACCEPT
iptables -P INPUT ACCEPT # ACCEPT
iptables -P FORWARD ACCEPT # ACCEPT
iptables -F
#Alles erstmal verbieten
iptables -P OUTPUT DROP # DROP
iptables -P INPUT DROP # REJECT/DROP
iptables -P FORWARD DROP # DROP
# Eingang für LISTENING_PORTs erlauben
# Chains um z.B. die Ports 22,25,53,80 (ssh,smtp,domain,www,http+ssl) durchzulassen
iptables -A INPUT -p tcp -m state –state NEW -m multiport –ports $LISTENING_PORT -j ACCEPT
# Voyager (localhost) udp Pakete
iptables -A INPUT -p udp -s 192.168.0.0/24 -j ACCEPT
# Routen von Paketen von INTERN (z.B. eth0 192.168.0.1) nach EXTERN
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE
# Chain fuer ausgehende Pakete (alles erlaubt)
iptables -A OUTPUT -m state –state NEW -j ACCEPT
# Chains um einmal aufgebaute Verbindungen zu erhalten
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
# Voyager (localhost) locales Netz frei fuer tcp
# Wichtig da sonst X11 etc unter Umständen nicht mehr läuft !!!
iptables -A INPUT -p tcp -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp -s 127.0.0.0/24 -j ACCEPT
#Ping fuer localhost erlauben
iptables -A INPUT -p icmp -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p icmp -s 127.0.0.0/24 -j ACCEPT
# Identitaets (userid etc) Infos nicht herausgeben
iptables -I INPUT -p tcp –dport ident -j REJECT –reject-with tcp-reset
# Chain fuer LOG
iptables -A INPUT -m state –state NEW -j LOG –log-level warn –log-prefix “INPUT LOG — Deny “
# Chains um alles andere abzublocken
iptables -A INPUT -j DROP # REJECT/DROP
iptables -A OUTPUT -j DROP # DROP
iptables -A FORWARD -j DROP # DROP
# IP-Forwarding erlauben (Router)
echo “1” > /proc/sys/net/ipv4/ip_forward
Hallo!
Gut. Also so wie ich das sehe, ist es unter Linux prinzipiell mit “iptables” (setze ich unter Debian im Gateway ein) fast nicht moeglich eine Firewall wie z.B. die “Sygate Personal Firewall” (SPF, setze ich auf meinem Desktop ein) nachzubilden.
Was man theor. mit iptables (und die meisten Linux-Firewalls setzen schlussendlich darauf auf) machen kann, ist per –pid-owner die Pakete an Hand einer PID zu matchen (siehe als Beispiel [1]). Ich habe ehrlich gesagt nur noch nie eine Firewall oder ein Beispielscript gesehen, das diesen Parameter wirklich verwendet.
Weiters kann man ja bei der SPF in einem Popup entscheiden, ob man den Traffic zulassen will oder nicht. Mit iptables wird das schwer bis unmoeglich. Die iptables-Regeln werden mehr oder weniger im Kernel abgearbeitet. Um das Verhalten von SPF nachzubilden, muesste von dort aus ein User benachrichtigt werden (was ich so noch nie gesehen habe, meist wird ein Logfile gepollt und im Notfall was angezeigt – ausserdem muss bei einem Linuxsystem ja nicht unbedingt ein User online sein) und dieses und weitere Pakete so lange nicht weitergeschickt werden, bis der User sich entschieden hat.
Was man machen koennte: Alle Interfaces so einstellen, dass keine Pakete durchgelassen werden, aber diese geloggt werden (mache ich z.B. schon). Nun braucht man ein Programm, das das Logfile dauernd abfragt und nach solchen Eintraegen sucht. Wenn so ein Eintrag kommt, wird der User gefragt, wie in Zukunft verfahren werden soll (allerdings wird der Traffic bis zur Antwort auf jeden Fall gesperrt – LOG+DROP). Dann wird eine neue Regel eingefuegt: entweder in Zukunft droppen ohne loggen oder eben durchlassen fuer diesen Prozess. Allerdings muesste man das Programm so bauen, dass dieses bei jedem Start irgendeines Programmes (das ist der Knackpunkt) die Regeln angepasst (sprich entsprechend den Uservorgaben die PID/PIDs des Programmes in die iptables eintraegt und am Ende wieder rausloescht).
Allerdings gilt das Ganze natuerlich nicht fuer Traffic der durch die Box geht (da hilft nur Source/Destination-IP/Port). So. Das ist mal das, was ich mir vorstellen koennte.
Im Moment kann ich nicht wirklich erkennen, ob ein Programm Pakete verschickt oder nicht (unter Linux – netstat is lustig, aber ned hilfreich und /proc/net/ip_conntrack ist ned wirklich hilfreich). Dafuer habe ich unter Linux natuerlich das Ehrenwort aller OSS-Entwickler und den Leuten, die deren Sourcecode durchsuchen, dass sie z.B. keine Infos von mir an ihre Server schicken ;-))))
Fuer Anregungen, Korrekturen und Beschwerden bin ich immer zu haben.
mfG
Vogge
[1] http://iptables-tutorial.frozentux.net/scripts/pid-owner.txt
P.S: Vielleicht aendert sich die Firewallsituation ja noch etwas, wenn sich Linux auch soweit durchgesetzt hat, dass es viele (v.a. auch technisch nicht versierte) Leute auf dem Desktop einsetzen und diese man mal eben schnell auch irgendwelche Programme installieren, denen man nicht immer 100% vertrauen kann/will (bzw. einfach sehen will wohin es seine Daten so versendet). Ich persoenlich faende so ein System wie bei der SPF wirklich gut. Die Zeiten, dass alles was von intern kommt auch wirklich gut ist, sind vorbei. Sad but true. :-)
Statt netstat kannst Du auch ethereal zur Netzwerküberwachung nehmen. Das Tool ist grafisch und Log auch mit und spricht dich vielleicht eher an. Ansonsten sind deine Beiträge ein wenig Trollig ;-).
Klar gibt es so kleine Patzer wie Firefox & Google, aber man sieht auch schnell wie lange solche Kungeleien halten (nicht mal ‘ne Woche, wenn ich mich nicht recht irre.)
Und unter Windows hast du wirklich die vollkommene Kontrolle über das Netzwerk ??? :-) :-) :-)
Hallo!
Zuerst zum “Trollig”: jup. Sind sie. Etwas. Absichtlich, sonst waeren sie zu trocken. Ich hoffe nicht zu viel ;-)
netstat vs ethereal. Ersteres zeigt die offenen connections an (exkl. derer, die durch die Box geroutet werden) und zweiteres ist ein Paketsniffer. Ethereal ist zwar genial (z.B. um Http-Traffic zu sniffen und damit Probleme in ner Webapplikation zu ergruenden), aber fuer eine Firewall so nicht sinnvoll.
Ich habe eben unter Linux einige Moeglichkeiten um Connections zu begrenzen nicht, wie dies eben die Firewalls unter Windows koennen: Traffic auf Applikationsebene begrenzen. Dass ich die pid als nicht ausreichend betrachte, habe ich schon angemerkt. Dass es nicht geht, ist auf der einen Seite klar und auch ned mal uebel (ich kann eben nen Router/Gateway aufstellen, der kein GUI braucht und kein Feedback) aber eben auf der anderen Seite auch ned immer optimal (als Desktopsystem moechte ich eben mehr Kontrolle auf meine laufenden Apps ausueben – v.a. weil da eben meist mehr Apps laufen als auf einem Server).
Nochmal: was der Erstposter sich wuenschte – feinere Einstellungen an der Firewall auf Applikationsebene, wenn Linux als Desktopsystem benutzt wird, habe ich mir auch schon gewuenscht und festgestellt, dass es das in der Art (noch) nicht gibt. Falls aber jemand etwas in der Richtung kennt, waere ich ebenso wie der Erstposter daran interessiert.
mfG
Vogge
P.S: Windows und Kontrolle ueber das Netzwerk: wenn die Firewall funktioniert und ich den Herstellern vertrauen kann, dann habe ich auch “vollkommene” Kontrolle ueber meine Netzwerkkarte bzw. den Traffic darueber. D.h. ich muss in dem Fall einer Firma trauen, die mir die Software gratis zur Verfuegung stellt. Bei Linux muss ich a) den Leuten trauen die iptables geschrieben haben (kein Vorteil von OSS ueber closed-source) oder b) mir alles ueber Firewalls und deren Funktion beibringen und den Source durchlesen und ueberprüfen und dann kann ich ned mal 100% sicher sein, dass sich meine Regeln nicht aushebeln lassen oder c) anderen vertrauen, dass sie der Software vertrauen ;-)
P.P.S: Ich versteige mich zur Behauptung, dass keine Software “vollkommen” ist ;-))
P.P.P.S: Ich traue sowohl meiner Firewall unter Windows als auch der unter Linux. Der Rest ist Restrisiko und gehoert dazu.
Stimmt, da hat Windows die Nase vorn. Technisch ist das Abarbeiten der Regeln wahrscheinlich ähnlich gelöst, nur halt eine nette GUI drüber gestrickt.
Allerdings sehe ich nicht, wieso das Belästigen des Users mit Firewallpopups benutzerfreundlich sein soll. Meine User technisch nicht versierten User würden mich lynchen, wenn ich die mit Firewallmeldungen belästigen würde! Sowas ist doch eher was für den Hobbyuser mit Poweruserambitionen:-)
Gegen feindliche Software auf der eigenen Kiste ginge mir so eine “Personal Firewall” auch garnicht weit genug! Wenn ich von so einer Situation ausgehen müsste (sprich: wenn meine User Software installieren könnten), dann würde ich mir RSBAC und SElinux anschauen. Damit kann man dann extrem fein einstellen, was ein User und ein Programm darf (inkl. welche Dateien es öffnen darf, ob es andere Programme starten darf und wenn ja welche, ob es auf das Netz zugreifen darf, etc).
Das will ich so nicht stehen lassen: Ich denke schon, das bei Linux die Kontrolle über die Netzwerkkarten deutlich weiter geht, als bei Windows. Insbesondere, das man unter Windows ein Programm nicht nur an bestimmte Karten binden kann nervt mich immer wieder. OK, ist bei Servern wichtig, nicht bei Clients um die es Dir ja hauptsächlich zu gehen scheint.
Zweitens: Du redest über Packetfilter, nicht Firewalls. Eine Firewall beinhaltet je nach Definition mindestens zwei Packetfilter mit Proxies zwischen drin oder ist gar “nur” ein theoretisches Konzept, das mit Packetfiltern, Proxies u.ä. realisiert wird.
Drittens: Was Du mit a), b) und c) sagen willst verstehe ich nicht.
Hallo, hier ist nochmals der “Erstposterer”. Die Susefirewall bleibt ein Buch mit 7 Siegeln für mich, Shorewall habe ich installiert und verstanden, dass ich micht mit den Möglichkeiten zufrieden geben muss (kein Begrenzung der Applikationen), ok.
Nur läuft bei mir Shorewall noch nicht, weil in einer Confi-Datei noch ein Eintrag fehlt, ich aber nicht weiss, wo genau dieser Eintrag zu machen ist.
Gibt es einen Shorewall 2.2 Anwender unter Suse 9.2 hier? Dann kann ich ja nochmals die Problematik genau beschreiben…
hallo Juergen,
vielleicht solltest du dir mal die xinetd.conf anschauen:
damit kannst du auch einen kontrollierten zugriff einrichten, z.b.:
service smtp
{
socket_type = stream
protocol = tcp
wait = no
user = mail
server = /usr/sbin/exim
server_args = -bs
}
wobei dann der xinetd gestartet werden muss und sicherer sein soll wie inetd.
ob das auch für ausgehenden verkehr konfigurierbar ist – keine ahnung, mit diesen möglichkeiten habe ich keine erfahrung und sehe das eher als brainstorming….
gruß
m.
siehe auch http://www.xinetd.org/
Ach ja, mit welchem Programm du deine eMails liest bestimmst ja ausschließlich du. Von da her muss du dir nur die Frage stellen, ob jemand anders dein System benutzt, oder dort einbrechen kann.
Die Programmfilter unter Windows sind ja recht schön, wenn man nicht auf Performance achtet, unter Linux hast du aber schon durch das durchdachte Mehrbenutzersystem ein sehr hohen Schutz bezüglich des Systems. So können diverse Programme zum formatieren von Festplatten oder andere Manipulationen des System nur von root ausgeführt werden. Also eMails immer als normaler User lesen !!!
Allgemein kann man sagen: Fühl dich sicher, aber gehe nicht nachlässig mit dem System um (gilt eh für alle Systeme !!!). Ab und zu mal das System zu patchen sollte man auch unter Linux, vorallen als Sysadmin ;-).