Ports blockieren
Christian
- perl
0 Stefan Bach0 Christian
Gude,
ich möchte ein Script schreiben, das auf meinem Linux rechner läuft und abfragen kann ob jemand auf meinen Port 21 oder 80 zugreift wenn dies der Fall ist soll das Script meine Download Ports sperren.
Kann mir jemand sagen wie ich dies realisieren kann oder hat jemand vielleicht schon so ein Script. Muß nicht unbedingt Perl sein.
Hallo,
ich möchte ein Script schreiben, das auf meinem Linux rechner läuft und abfragen kann ob jemand auf meinen Port 21 oder 80 zugreift wenn dies der Fall ist soll das Script meine Download Ports sperren.
Was sind bitte schön deine Download Ports? Ich gehe mal davon aus, dass du Filesharing oder so was meinst.
Du kannst mit Perl durchaus herausfinden, ob jemand auf diese Ports bei dir zugreifen möchte. Wie du einen TCP/IP Server realisierst findest du zum Beispiel in perldoc perlipc
. (Oder du verwendest den inetd, der dein Perlscript aufruft.)
Das Programm muss dann, nachdem es eine Verbindung erhalten hat, diese wieder trennen und durch einen iptables (oder ipchains) Aufruf deine Firewall so umstellen, dass sie die Kommunikation deiner "Download Ports" mit der IP Adresse welche die Verbindung hergestellt hat verhindert.
Diese Einträge würde ich dann irgendwo ablegen, zusammen mit der Zeit zu der sie erstellt wurden und dann nach x Stunden wieder löschen.
Viele Grüße,
Stefan
Hi,
Was sind bitte schön deine Download Ports? Ich gehe mal davon aus, dass du Filesharing oder so was meinst.
logisch
Du kannst mit Perl durchaus herausfinden, ob jemand auf diese Ports bei dir zugreifen möchte. Wie du einen TCP/IP Server realisierst findest du zum Beispiel in
perldoc perlipc
. (Oder du verwendest den inetd, der dein Perlscript aufruft.)
wie kann ich das mit dem inetd realisieren?
Das Programm muss dann, nachdem es eine Verbindung erhalten hat, diese wieder trennen und durch einen iptables (oder ipchains) Aufruf deine Firewall so umstellen, dass sie die Kommunikation deiner "Download Ports" mit der IP Adresse welche die Verbindung hergestellt hat verhindert.
kann ich nicht einfach mit iptables die Ports blockieren ohne die Verbindung zu beenden? sorry ich kann eigentlich weder Perl noch kenne ich mich allzugut mit Linux aus. Wills aber lernen.
Diese Einträge würde ich dann irgendwo ablegen, zusammen mit der Zeit zu der sie erstellt wurden und dann nach x Stunden wieder löschen.
Meinst du als log oder als zeitliche einschalt Verzögerung der Ports?
Viele Grüße zurück.
Hallo,
Du kannst mit Perl durchaus herausfinden, ob jemand auf diese Ports bei dir zugreifen möchte. Wie du einen TCP/IP Server realisierst findest du zum Beispiel in
perldoc perlipc
. (Oder du verwendest den inetd, der dein Perlscript aufruft.)wie kann ich das mit dem inetd realisieren?
Musst du suchen. Über inetd kannst du bei einer Verbindung auf die entsprechenden Ports ein Perlscript starten lassen. (Siehe man inetd)
Allerdings bin ich mir nicht sicher, ob dieses Script die IP des Clients kennt, um ihn dann sperren zu können.
kann ich nicht einfach mit iptables die Ports blockieren ohne die Verbindung zu beenden?
Damit meinte ich die Verbindung die der Client zu deinem Perlscript hergestellt hat. Diese muss ja schließlich nicht bis zum timeout warten.
Diese Einträge würde ich dann irgendwo ablegen, zusammen mit der Zeit zu der sie erstellt wurden und dann nach x Stunden wieder löschen.
Du könntest die gesperrten IPs zusammen mit der Zeit zu der sie gesperrt wurden loggen. Über Cron lässt du dann alle Stunde ein Script aufrufen, welches schaut welche Sperrung schon alt genug ist, diese dann aufhebt und wieder aus dem Log löscht.
Viele Grüße,
Stefan
Hi, erstmal Danke. Muß jetzt leider Schluß machen. Ich melde mich mich vielleicht in ein paar Tagen/Wochen nochmal zu dem Thema da ich erst dann Zeit habe das auszubrobieren. Schönen Abend noch.