PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : webmin auf port 80 ueber apache routen



bjoernforce
12.05.03, 07:48
hallo leute.

hab mal wieder ein groesseres problem

erst einmal mein netzaufbau:
ich habe eine dsl-flatrate. hinter dem dsl-modem haengt ein 8port-netgear-vpn-firewall-router. hinter dem router stehen 3 rechner. die win-kiste von meinem vater. mein linux-server und meine linux-workstation.

auf dem linuxserver ist webmin, apache, ssh installiert. der apache bietet eine homepage im internet an. der router sperrt alle ports ausser ftp, http, htts, ssh. webmin(10000) ist nach draussen gesperrt. das soll auch so bleiben

auf meiner homepage will ich jetzt eine admin-section aufbauen. dort will ich an webmin ran, genau so wie an die grafische konfigurations-oberflaeche meines routers. mein router ist von aussen nicht ansprechbar und webmin wird nicht durchgeroutet.

wenn ich auf meiner homepage jetzt die links von den beiden konfigurations-tools lege, sind die natuerlich von lan aus zu erreichen. vom internet komme ich da nicht drauf.

doch genau das will ich aendern.
ich will, dass mein apache die webmin-seite bei anfrage laedt, auf port 80 legt und mir nach draussen schickt. das gleiche mit der router-oberflaeche. die beiden dienste sollen also nur ueber den apache verfuegbar sein und nicht direkt (geht ja auch nicht wegwn firewall).

so. jetzt meine frage. kann apache soetwas ueberhaupt. wenn ja, wie mache ich das?

und dann habe ich noch eine frage. wenn es moeglich sein sollte die beiden seiten ueber apache zu routen, kann man diese dabei auch veraendern.
nehmen wir an meine website ist in gruen gestaltet, die netgear-router-seite aber in blau. kann man solche html-tags ueber php oder aehliches filtern, bzw. veraendern.

ich weiss das meine fragen nicht gerade alltaeglich sind. aber wenn einer von euch eine idee hat wuerde ich mich darueber sehr freuen.

also schon mal vielen dank fuer eure antworten!!!

so long

bjoern

bjoernforce
13.05.03, 18:15
hat denn keiner von euch zufaellig ne idee. kleine anhaltspunkte wuerden ja schon reichen, aber ich weiss garnicht wo ich anfangen soll.:(

so long

bjoern

majobu
13.05.03, 18:25
100%ig bin ich nicht, aber soweit ich das sehe kann der Webmin das nicht von Haus aus... vielleicht kannst du aber folgendes umbauen damit es das tut was du brauchst: http://freshmeat.net/projects/arbitroweb/?topic_id=92

Majobu

Dellerium
14.05.03, 10:45
Wenn du in Perl net nen absoluter Anfänger bist, solltest du evtl. auch in der Lage sein, nen Cgi Prog zu schreiben, das von Localhost die Seiten von Webmin abholt, umbaut, und dann umkodiert - den Inhalt kannste dann wieder ausgeben lassen - ist sicher viel bastellei, aber dann sollte es ganz gut funzn, denke ich ... - ist aber mit Sicherheit nen bissel aufwendig ....

gruss Andre

netzmeister
14.05.03, 10:49
Hallo bjoernforce,

webmin ist ein eigener Server, der hat mit dem Apachen überhaupt nichts zu tun.

Auf den Port 80 kann immer nur ein Server "hören"!

Eine Möglichkeit wäre in diesem Fall die verwendung einer zweiten IP-Adresse,
dann kannst Du beide Server auf den gleichen Port lauschen lassen.

Viele Grüße

Eicke

majobu
14.05.03, 11:54
hmm... ich denke mal das bjoernforce nur eine dynamische IP hat... das ist jetzt einfach mal geraten :D Dann wird leider nix aus dem Tip von Eicke... Ansonsten ist das natürlich die einfachste und schnellste Möglichkeit.

Gruß
Majobu

bjoernforce
15.05.03, 06:25
danke erstmal fuer eure antworten.
ich habe jetzt ein par php-scripte gefunden, die das machen sollen.
ausserdem gibt es fuer den apache 2 module die mir glaub ich helfen werden.
das eine ist mod_proxy und das andere mod_rewrite. ich hoffe das eines von beiden laufen wird.

tja. das mit dem perl-script selber schreiben wird leider nichts. dafuer bin ich zu bloed.
und eine zweite ip habe ich auch nicht. aber das soll ja auch garnicht gehen. webmin soll nur nach einer erfolgreichen anmeldung an apache funktionieren. ich werde keine weiteren ports aufmachen.

vielen dank nochmal.
ich werds schon irgendwie hinkriegen, hoffe ich zumindestens.

so long

bjoern

sauertopf
15.05.03, 06:48
Vielleicht wäre auch eine Idee, auf dem Server einen Proxy aufzusetzen, der entweder mit dem Apache oder mit dem Webmin weiterverbindet. Der Proxy (z. B. squid) könnte sogar transparent auf Port 80 hören.

MfG sauer

mbo
15.05.03, 07:18
... wenn es auch einfach geht?

moin,

bau dir ein frame und zieh den webmin da rein. und wenn du ganz geschickt bist, tauscht du den "html-frame" gegen ein "server-frame"; dyndns zwei hostname rgistrieren, virtuell host ...

cu/2 iae

ThyMaster
25.08.03, 10:12
Hi,


Original geschrieben von mbo
... wenn es auch einfach geht?

moin,

bau dir ein frame und zieh den webmin da rein. und wenn du ganz geschickt bist, tauscht du den "html-frame" gegen ein "server-frame"; dyndns zwei hostname rgistrieren, virtuell host ...

cu/2 iae

Ähm, wie genau hast Du dir das gedacht?

Gruß
Falko

I-Master
25.08.03, 10:22
Also ich wäre glaube ich für die Idee von Sauertopf. Da habe ich auch zuerst dran gedacht.

Wenn Du Squid so konfigurierst, dass wenn Du auf nen Link klickst die Anfrage mit einer internen IP auf Webmin erfolgt könnte das gehen. Gemacht habe ich das aber auch noch nie.

Jasper
25.08.03, 18:35
Original geschrieben von bjoernforce
h
so. jetzt meine frage. kann apache soetwas ueberhaupt. wenn ja, wie mache ich das?


ja, das geht. am besten mit mod_rewrite. mod_proxy geht auch, aber rewriting ist einfacher. das ganze sieht ungefaehr so aus (nicht getestet!):

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteLog rewrite.log
RewriteLogLevel 9
RewriteCond %{REQUEST_URI} /webmin/.*
RewriteRule .*/(.*) http://localhost:10000/$1 [P] [L]
RewriteCond %{HTTP_REFERER} https://server.extern/webmin.*
RewriteRule .*/(.*) https://server.extern/webmin/$1 [R]
</IfModule>

so greife ich auf web-apps zu, die von sich aus kein ssl können.

-j

ThyMaster
26.08.03, 08:03
Wow!

Nur mal so zum Verständnis:

Die von Dir vorgeschlagene Lösung basiert auf einem laufenden Webserver (miniserv von Webmin) auf Port 10000 des Rechners auf dem auch apache läuft (localhost), richtig?

Und alle Requests auf https://server.extern/webmin werden "umgebogen" auf http://localhost:10000

Die Ausgabe dieser "umgebogenen" Requests wiederum landet auf https://server/extern/webmin/[Seitenname]

Meine Frage:
Benötige ich dazu noch einen alias oder ähnliches, oder sollte Deine Lösung (fast) Out-of-the-Box funzen?

Gruß
Falko

ThyMaster
26.08.03, 15:36
Ok, ich gebe auf.
Das mod_rewrite verstehe ich nicht :(

Aber mit mod_proxy sollte es ja auch gehen (und das verstehe ich besser ;) )

<IfModule mod_proxy.c>
ProxyRequests off
ProxyPass /webmin http://localhost:10000
ProxyPassReverse /webmin http://localhost:10000/
</IfModule>

dachte ich, tut den Job... Aber nee, nur die Eingansseite wird auf /webmin/index.cgi umgebogen, alle weiteren Seiten wollen wieder unter / dargestellt werden.
Was natürlich nicht geht.

Wie kann ich erreichen, dass die Dokument-Root auch auf /webmin umgesetzt wird?

Gruß
Falko

Jasper
26.08.03, 18:42
Original geschrieben von ThyMaster
Benötige ich dazu noch einen alias oder ähnliches, oder sollte Deine Lösung (fast) Out-of-the-Box funzen?


hab grade nochmal auf meinem server nachgesehen. das sollte out-of-the-box funktionieren.

-j

Jasper
26.08.03, 18:45
Original geschrieben von ThyMaster

<IfModule mod_proxy.c>
ProxyRequests off
ProxyPass /webmin http://localhost:10000
ProxyPassReverse /webmin http://localhost:10000/
</IfModule>


mit mod_proxy sehe es so aus:

<IfModule mod_proxy.c>
ProxyRequests on

ProxyPass /webmin/ http://localhost:10000/
ProxyPassReverse /(.*) http://localhost:10000/$1
</IfModule>

aber das funktionierte nicht in allen fällen, rewriting ist besser. damit klappt bisher alles.

-j

ThyMaster
27.08.03, 08:24
Danke für die Antworten :)

Leider funktionieren beide Lösungen nicht.

Die Proxy-Lösung krankt daran, dass Webmin von https://mein.server/webmin gestartet wird, bei der Rückgabe aber in die root https://mein.server zurückfällt.
Dort werden dann die weiteren CGI Scripts nicht mehr gefunden.

Deine Rewrite Lösung funktioniert leider auch nicht.
Einmal in die httpd.conf eingetragen (vorger natürlich den Servernamen angepaßt) und ich bekomme nur die 404 (File not found) Seite. Im Log-File steht leider auch nix (ist leer).

Gruß
Falko

ThyMaster
27.08.03, 11:04
Sooo,

die mod_rewrite Lösung funktioniert teilweise nachdem ich die Bedingungen direkt in den VHost für SSL eingetragen habe.

Teilweise deswegen, da ich jetzt zwar den Login-Screen von Webmin bekomme, aber trotz korrekten Einloggens immer nur wieder auf den Login-Screens redirected werde :(

Ich werd noch weich hier...

Addendum: Der Grund warum immer wieder die Login-Maske von Webmin angezeigt wird, ist der, dass es einen falschen Login gibt (trotz garantiert richtigem Passwort).
Irgendwie werden die eingegebenen Daten nicht durchgeleitet....

Gruß
Falko

Wastel
27.08.03, 11:19
Hi!
ne ganz andere möglichkeit wäre wenn du
port 81 auf deiner externen IP auf Intern:1000 umleitest,
also das z.B 217.xx.xx.23:81 auf 192.168.42.23:10000.
Unter W2K Server hab ich das damals immer gemacht um den TerminalServer im Browser anzeigen zu lassen.
Ich wollte allerdings port 3889 nicht nach drausen aufmachen und mit dem IIS ne zweite "sicherheitsbariere" (jaja... IIS...) einbauen.

Hat funktioniert.

Wastel

ThyMaster
27.08.03, 12:21
Genau das geht nicht, da die Firewall in der Firma eben nur Port 443 für https/ssl akzeptiert.

Und Webmin ünverschlüsselt über's Internet zu nutzen ist IMHO ein Scheunentor.

Gruß
Falko

Wastel
27.08.03, 15:56
Original geschrieben von ThyMaster
Genau das geht nicht, da die Firewall in der Firma eben nur Port 443 für https/ssl akzeptiert.


Ups wusste ich nicht, aber wenn du port 443 auf intern 1000 umleitest?
Das müsste die Firewall der Firma doch durchlassen.

Wastel

ThyMaster
27.08.03, 15:59
Ja, aber dann kann ich keine weiteren Dienste (z.B. squirrelmail) über https nutzen :(

BTW: Sonst wäre es ja super-easy ;)
Webmin auf SSL umstöpseln und als Port 443 wählen

Gruß
Falko

ThyMaster
27.08.03, 17:25
Original geschrieben von Jasper
ja, das geht. am besten mit mod_rewrite. mod_proxy geht auch, aber rewriting ist einfacher. das ganze sieht ungefaehr so aus (nicht getestet!):

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteLog rewrite.log
RewriteLogLevel 9
RewriteCond %{REQUEST_URI} /webmin/.*
RewriteRule .*/(.*) http://localhost:10000/$1 [P] [L]
RewriteCond %{HTTP_REFERER} https://server.extern/webmin.*
RewriteRule .*/(.*) https://server.extern/webmin/$1 [R]
</IfModule>

so greife ich auf web-apps zu, die von sich aus kein ssl können.

-j

Hi,

ich glaube es gibt da eine Schwäche im Script:

Die RewriteRule .*/(.*) in Kombi mit $1 führt m.E. dazu, das immer nur die letzte Anweisung des Strings durchgereicht wird.
Soll heißen:
Aus "/webmin/eins/zwei/drei.html" wird "https://localhost:10000/drei.html"

Es soll aber "https://localhost:10000/eins/zwei/drei.html" werden.

Hat irgenwer eine Ahnung wie man das erreichen kann??

Gruß
Falko

Jasper
27.08.03, 21:26
Original geschrieben von ThyMaster

ich glaube es gibt da eine Schwäche im Script:

Die RewriteRule .*/(.*) in Kombi mit $1 führt m.E. dazu, das immer nur die letzte Anweisung des Strings durchgereicht wird.
Soll heißen:
Aus "/webmin/eins/zwei/drei.html" wird "https://localhost:10000/drei.html"

Es soll aber "https://localhost:10000/eins/zwei/drei.html" werden.

Hat irgenwer eine Ahnung wie man das erreichen kann??


he cool, du hast einen fehler gefunden :) hab ich bisher nicht bemerkt, weil ich keine so lange URIs verwende.

hier die korregierte version:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteLog rewrite.log
RewriteLogLevel 9
RewriteCond %{REQUEST_URI} /webmin/.*
RewriteRule .+?/(.*) http://localhost:10000/$1 [P] [L]
RewriteCond %{HTTP_REFERER} https://server.extern/webmin.*
RewriteRule .+?/(.*) https://server.extern/webmin/$1 [R]
</IfModule>

-j

ThyMaster
28.08.03, 09:00
Sorry, aber Deine Lösung funzt (immer noch) nicht.

Probier's mal mit:

RewriteEngine on
RewriteLog /var/log/httpd/rewrite_log
RewriteLogLevel 9
RewriteCond %{REQUEST_URI} /webmin/.*
RewriteRule ^/webmin(.*) http://localhost:10000$1 [P] [L]
RewriteCond %{HTTP_REFERER} https://server.extern/webmin.*
RewriteRule ^(.*) https://server.extern/webmin$1 [R]

Dann funktioniert es (theoretisch) einwandfrei.
ABER:
Leider läßt Webmin trotz und alledem kein Login zu :mad:
Die Login-Daten werden einfach nicht durchgereicht. Es kommen immer nur leere Felder beim Webmin Server an.

Weiß irgendwer WARUM???

Gruß
Falko

ThyMaster
29.06.04, 12:43
Sooo viel später, aber eine Antwort (immerhin ;))


Es macht wenig Sinn Apache und miniserv parallel laufen zu lassen
Die mod_rewrite Option wird dabei überflüssing
Eine gute Anleitung für Webmin-über-Apache findet sich hier (http://www.webmin.com/apache.html)
Unter SuSE muß noch an den SUID-Rechten gedreht werden (s.u)


SUID Rechte unter SuSE ändern:
In /etc/permissions.local
/usr/bin/suidperl root.root 4755
eintragen.
Danach unbedingt SuSEconfig aufrufen.

Dann klappt's auch!

Gruß
Falko

mbo
29.06.04, 13:07
Sooo viel später, aber eine Antwort (immerhin ;))


Es macht wenig Sinn Apache und miniserv parallel laufen zu lassen
Die mod_rewrite Option wird dabei überflüssing
Eine gute Anleitung für Webmin-über-Apache findet sich hier (http://www.webmin.com/apache.html)
Unter SuSE muß noch an den SUID-Rechten gedreht werden (s.u)



Nur um mal wieder Haarspalter zu spielen: es macht doch Sinn, wenn man zb mehrer Server mit Webmin hat, aber nur auf einem einen Apache, bindet man alle Webmins als virtuelle Hosts in die Apacheconf ein ...

cu/2 iae