PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Passwortabfrage für Ports



Rettungsdackel
03.04.05, 15:20
HI,

gibt es eine Möglichkeit, Ports per Passwort zu schützen, unabhängig vom Apache-Server ?

Folgendes soll passieren: Auf Port 12000 (z.B.) sollen sich registrierte User für einen Streamserver einloggen können, Username und PW sollen aus der MySQL-DB ausgelesen werden.

Da der Streamserver ja unabhängig vom Apache läuft, ist ein PW-Schutz via Apache wohl nicht möglich, zumindest hat sich Apache bisher nur für http-Anfragen auf diesem Port interessiert.

System: SuSE Linux 9.2, Apache 2.0.50, PHP 4.3.8, MySQL 4.0.21

Danke, Dackel

3qualizer
03.04.05, 15:26
Nicht alle Protokolle sehen eine Authentifizierung vor und wenn, dann meist auf verschiedene Art.
[edit] wenn also der Stream-Server keine eigene Authentifizierung hat, sehe ich da wenig chancen, es "bequem" zu machen (s.U.)

Das beste was mir dafür einfällt wäre ein Tunneling oder ein Port-Knocking (wenn das das richtige Wort war ;)), beschrieben in 'ner Linux-Magazin. Dabei wird afair eine bestimmte Ping-Sequenz an den Rechner gesendet, welcher dann den Port öffnet.

Rettungsdackel
04.04.05, 00:31
Hi,

erstmal Danke für die erste Antwort. :)

Port-Knocking: Das was ich darüber bisher bei google gefunden hab, dürfte das nicht die Lösung sein, da ja mehrere User auf den selben Port zugreifen. So wie ich das bisher verstanden habe, würde er ja da vom ersten User geöffnet und die anderen können dann so rein. Oder hab ich das nun falsch verstanden? :eek:

Mal sehen was ich so über Tunneling finde.

Was ich suche ist eigentlich eine systemseitige Passwortabfrage , wobei die PWs in der MySQL stehen.

3qualizer
04.04.05, 01:59
Stimmt, Port-Knocking wäre also ungeeignet.


Mal ein paar Gedanken zum Tunneling am Beispiel einer FTP und einer POP3-Kommunikation

C = Client
S = Server

FTP:

C: 40324 -> S:21
S: 220 Service ready
C: username Doe
S: 331 User name ok, need password
C: password mumble
S: 230 User logged in

POP3

C: 41543 -> S:110
C: USER mrose
S: +OK mrose is a real hoopy frood
C: PASS secret
S: +OK mrose's maildrop has 2 messages (320 octets)


Das hier sind zwei Beispiele von Protokollen die eine Authentifizierung beinhalten, die ohne also mal aussen vor gelassen.

Die Login-Wege sind hier zwar ähnlich aber nicht gleich (und es gibt noch viele andere, auch nicht-Klartext etc). Zum anderen könntest du die Passwörter (ohne Änderung am Server-Code) nur dann mit der MySQL abchecken wenn die Software das unterstützt.


Also der Gedanke des Tunnelings (vereinfacht):

C = Client
S = Server

FTP:

S: 210 who are you?
C: user laberle
S: 300 password needed
C: passwd pw
S: 300 connecting to service...
S: 200 ok, clear to talk
C: data: C: 40324 -> S:21
C: data: S: 220 Service ready
C: data: C: username Doe
C: data: S: 331 User name ok, need password
C: data: C: password mumble
C: data: S: 230 User logged in

POP3

S: 210 who are you?
C: user laberle
S: 300 password needed
C: passwd pw
S: 300 connecting to service...
S: 200 ok, clear to talk
C: data: C: USER mrose
C: data: S: +OK mrose is a real hoopy frood
C: data: C: PASS secret
C: data: S: +OK mrose's maildrop has 2 messages (320 octets)

Vorteile:
- einheitliche Authentifizierung
- Tunnel-SW könnte die Passwörter aus einer DB holen
- einzelne Server-Prozesse nur noch von localhost erreichbar

Nachteile:
- Authentifizierung der einzelnen Server müsste entfallen, da sonst sinnlos ;)
- jeder Client müsste das Gegenstück zur Tunneling-SW haben


Das Problem besteht also darin, das so etwas nicht vorgesehen ist.

Die am ehesten passende Lösung (je nach Vorgabe, fiel mir grad spontan ein) wäre vielleicht keins von den zweien sondern eine Art Proxy auf dem Server-Rechnet:

Client sendet Authentifizierung
Proxy Prüft, welches Protokoll gefahren wird
Proxy holt, abhängig vom Protokoll die Zugangsdaten heraus und prüft per DB
Proxy ändert u.U. Authentifizierung zu generischen Werten und leitet die Pakete weiter

Bei einigen Plaintext-Protokollen dürfte das gehen. Alles andere dürfte zumindest schwierig werden.


Fazit: Es kommt darauf an, was für Dienste du anbieten willst welcher Aufwand bei den Clients möglich ist etc. Am besten verrätst du, was du brauchst ;)

MaxKnax
04.04.05, 06:50
Man könnte da noch etwas zusammenschustern:

User kann sich auf einer Website mittels PW anmelden. Dann wird eine IPtables Regel erstellt, die für die IP, von der der User gekommen ist, den Port frei giebt. Und vielleicht automatisch nach 2 Stunden wieder schließt.

Größter Nachteil: Wenn mehrere User von einer IP kommen, können alle mit einer Anmeldung.

Btw. Gibts nicht einen Streamingserver mit Auth? Mir ist da so.

Rettungsdackel
04.04.05, 10:56
Hallo 3qualizer,


Am besten verrätst du, was du brauchst

Wenn Du so direkt fragst: Einen Passwortschutz für einen Shoutcast- Streamserver. Der Hörer soll, wenn er mit Winamp o.ä. zu uns connectet, eine Passwortabfrage erhalten, wo Name und PW mit der Datenbank verglichen werden.
Da der Shoutcast aber ein eigenständiger Server ist, wird das mit einer PW-Abfrage via .htaccess oder auth_mysql übern Apache nix.
Für Shoutcast gibts da zwar so ein PW-Script, aber das arbeitet bei uns nicht zufriedenstellend, weils nicht mit md5-Verschlüsselung klarkommt.

Das größte Problem an der ganzen Sache ist, das viele User schon Probleme haben, das Einfachste zu installieren. Wenn wir da jetzt was anbieten würden, was die User installieren müßten....dann Gute Nacht, Marie :D

@MaxKnax

Gibts nicht einen Streamingserver mit Auth?
Gehört bzw. gelesen hab ich auch schon mal was in dieser Richtung. Werd mal google dazu befragen.

Rettungsdackel
12.04.05, 15:14
Ich mal wieder,

also mit Tunneling ist auch nicht viel zu machen :-(

Gibts denn gar keine Lösung einen bestimmten Port Systemseitig mit einem PW zu schützen??

3qualizer
12.04.05, 17:30
Ich sags mal so... no f...ing way. Es ist einfach nicht vorgesehen.
Natürlich steht es dir frei das zu ändern (Netzwerktreiber/glibc oder so ändern) aber dann auch bitte auf allen Client-Rechnern. Es ist... halt einfach nicht vorgesehen ;)
Das was mir einfiele was am nächsten rankommt (Sicherheitsbedenken mal völlig aussen vor) wäre ein Web-Interface auf dem sich die User einloggen können und dann temporär und nur für diese IP die Firewall geöffnet wird.

linuxhanz
12.04.05, 17:36
Hi,

erstmal Danke für die erste Antwort. :)

Port-Knocking: Das was ich darüber bisher bei google gefunden hab, dürfte das nicht die Lösung sein, da ja mehrere User auf den selben Port zugreifen. So wie ich das bisher verstanden habe, würde er ja da vom ersten User geöffnet und die anderen können dann so rein. Oder hab ich das nun falsch verstanden? :eek:

Mal sehen was ich so über Tunneling finde.

Was ich suche ist eigentlich eine systemseitige Passwortabfrage , wobei die PWs in der MySQL stehen.


Hallo , du kannst doch auch den Port per cron/at oder eben porknocking wierder zumachen.
oder du machst halt alles dicht und nimmst ssh.
hm systemseitig, eventuell squid?

Rettungsdackel
28.04.05, 09:03
Hi Leute,

Leider hat nix die erhoffte Lösung gebracht.

trotzdem Danke an alle