Hallo,
Bitte lese dir auf alle Fälle die Howtos zu Netfilter http://www.netfilter.de durch. Siehe dazu auch die Postings weiter unten.
Soweit so gut. Ich habe bereits mehrer Ports gesperrt.
Allerdings gibt es hier und dort immer noch Probleme. Es soll
eine Log Funktion geben, in denen alle Zugriffe auf Ports
mitgeloggt werden.
Ja diese gibt es und aus der Doku geht hervor wie Sie funktioniert. 
Nebentehma -> syslog
Ich könnte dann zum Beispiel alle Ports des Servers, außer die
SSH Verbindung sperren, mir die Logs ansehen und dann die
Ports die von Programmen die ich benutze verursacht wurden
wieder öffnen.
Ich halte das für die einfachste Möglichkeit die vielen Ports
zu finden die geöffnet sein müssen, damit der Server auch als
solches benutzt werden kann.
Solltest du nicht wirklich machen.
Zum einen müssen nur die Ports offen sein von den Diensten die du anbieten möchtest. Bsp. Webserver.
Du kannst dir mittels des commandos netstat (-> man netstat) anzeigen welche Ports auf deinem Rechner offen sind und somit dienste anbieten. Sei jedoch gewarnt, du solltest nicht jeden dienst der offen ist auch im packetfilter aufmachen, dann könntest du dir den packetfilter nämlich schenken.
BTW
Wenn du auf deinem Server nur Dienste anbietest die jeder nutzen darf, dann brauchts du keinen packetfilter.
Wenn du nun weißt welche Dienste du anbietest, musst du natürlich noch wissen welche Protokolle dort benutz werden. Für viele Protokolle wirst du im Internet dokus finden wie die Firewall eingestellt werden muss damit es funktioniert.
Im einfachsten fall reicht eine Regel die erlaubt das von aussen auf den Port des Dienstes zugeriffen wird. (Bsp. ssh)
Für die Protokolle die du nicht findest…
Du kannst mit hilfe des Programmes tcpdump -> man tcpdump den Netzwerkverkehr mitscheinden und so ermitteln was offen sein muss und was nicht.
Alternativ kannst du dann auch den von dir vorgeschlagenen Weg nehmen und mit iptables einfach alles loggen was du nicht erlaubt hast.
Weiß jemand wo ich diese Log Datei einsehen kann?
z.B. /var/log/*
Wenn es eine
bessere und einfachere Lösung zum anlegen der iptables Filter
gibt, wäre ich natürlich sehr interessiert.
Ich habe mal tools gesehen die automatisch den Netzwerktraffic analysieren und danach die regel generieren. Ich habe sie jedoch nie benötig und von daher kann ich keine Aussage über die Qulität der Proggys treffen.
Meine Meinung:
Ich würde es lieber selber machen, anstat es durch automatismen machen zu lassen.
Zum Schluss noch ein Bsp. einer Quick and Dirty Firewall.
Services: HTTP and SSH on localhost
Chain INPUT (policy DROP 0 packets, 0 bytes)
target prot opt in out source destination
ACCEPT all – lo * 0.0.0.0/0 0.0.0.0/0
ACCEPT all – * * 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED
ACCEPT all – * * 0.0.0.0/0 0.0.0.0/0 state RELATED
ssh-in tcp – * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
http-in tcp – * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
drop-log all – * * 0.0.0.0/0 0.0.0.0/0
chain OUTPUT (policy DROP 0 packets, 0 bytes)
target prot opt in out source destination
ACCEPT all – * lo 0.0.0.0/0 0.0.0.0/0
ACCEPT all – * * 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED
ACCEPT all – * * 0.0.0.0/0 0.0.0.0/0 state NEW
ACCEPT all – * * 0.0.0.0/0 0.0.0.0/0 state RELATED
drop-log all – * * 0.0.0.0/0 0.0.0.0/0
Chain http-in (1 references)
target prot opt in out source destination
ACCEPT all – * * 10.3.4.0/24 0.0.0.0/0
Chain ssh-in (1 references)
target prot opt in out source destination
ACCEPT all – * * 10.3.4.5 0.0.0.0/0
Chain drop-log (3 references)
target prot opt in out source destination
LOG all – * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
DROP all – * * 0.0.0.0/0 0.0.0.0/0
cu
polarix