Dynamischer Verzeichnisschutz

Hallo liebe Experten,

ich versuche gerade etwas zu basteln, bei dem verschiedene Verzeichnisse mit jeweils einer htaccess Datei geschützt werden sollen…
Das Problem dabei ist, dass ich eine Möglichkeit suche das dynamisch zu generieren…

Sprich: Im Idealfall habe ich eine htaccess Datei, die auf eine htpasswd Datei verweist, die dynamisch die Passwörter zurückgibt (aus einer Datenbank kommend).

Allerdings scheint es dabei nicht zu klappen auf eine php Datei zu Deuten im stil von
AuthUserFile /.htpasswd.php

Ich denke mal, dass das daran liegt, dass die Datei vorher ja nicht durch den Parser gejagd wird…?
die Frage ist nur, wie ich das Problem in den Griff kriegen könnte und ob das überhaupt möglich ist…?

Mir ist bekannt, dass ich eine php-interne Authentifizierung einleiten kann - gemäss dem Beispiel hier: http://www.goldmann.de/kennwortschutz-und-authentifi…

Allerdings schützt eine derartige Authentifizierungsanfrage ja nur den Inhalt der jeweiligen php Datei - nicht aber den der darunter liegenden Dateien…
Wie könnte man das also machen?
Vielleicht ein redirect per .htaccess auf eine PHP Datei, die dann die Verifizierung prüft?
Würde sowas gehen? Und wenn ja - wie regle ich das, dass ein nicht authentifizierter User umgeleitet wird und ein authorisierter nicht mehr?

Vielen Dank schon mal für jegliche Denkanstösse…

Grüße
Munich

also für access via DB Auth gibbet schon ein modul

http://httpd.apache.org/docs/2.1/mod/mod_authn_dbd.html

trägst einfach so ein setz deine datenbank auf und machst den querry entsprechend :smile: und managen brauchste nur die db :smile: immer aktuell

dazu muss man sagen das die directiven sehr mächtig sind, man kann das für jeden ordner, jede datei etc extra gestallten.

mit rewrite , kann man auch download sicherungen realisieren mit info ausgabe etc, wo denn das php alles kontrolliert

also beispiel „http://praetorians.abacvs.org/website/praetorians/ab…

die Sequence17760.sec gibt es zwar , aber man bekommt erstmal eine ganz andere php datei mit parameter „download.php?info=Sequence17760.sec“

ergo schreib ich die url um, wenn man dann dort download clickt,
läd das download.php wirklich die datei „Sequence17760.sec“ (das wird nicht rewrited) und gibt sie aber mit dem alten (uploader) namen zum download an, hier „3x3 no mashines (win).sec“

es gibt also viele wege nach rom, jedes hat seine vor und nachteile , kann gut , schnell oder sicher oder umständlich sein.

Aber solange es sein zweck erfüllt, nutze die möglichkeiten.

Aber solange es sein zweck erfüllt, nutze die möglichkeiten.

hier noch das Verzeichniss und seine Dateien
http://praetorians.abacvs.org/website/praetorians/ab…

aber sobald man eine anklickt ist man wieder bei der download.php :smile: hihi

Danke und Sternchen schon mal für den Hinweis/Link…

Mein Problem bzw meine Probleme sind nun nur, dass
* ich nicht weiss, wie ich feststelle, ob das installiert ist und
* wenn es nicht installiert ist, ich wohl kaum die Rechte dazu habe das zu installieren… Zumindest nicht auf meinem Webspace…

Find ich die Info dazu in der phpinfo()?
Wobei das ja eigentlich eher was mit dem Indianer zu tun hat…?
Jedenfalls find ich als einziges, was mit „auth“ dort drin steht ein sogenanntes PAM_AUTH und das scheint auch nur zu prüfen, ob da jemand eingeloggt ist, oder nicht…

Ich weiss also nicht mal, ob ich die vorraussetzungen für dieses „authorisation module“ erfülle…

SSH Zugang hab ich - falls das was hilft… Allerdings bin ich noch wenig bewandert, was den Umgang damit betrifft…

Vielen Dank schon mal
Munich

Ok, die frage ist welches Paket als Server hast du und bei welchem provider, dann kann man gugen was du so alles mit deinem SSH zugang so machen kannst.
Wenn das ein Virtual Server etc ist, dann kannst du alles machen , die frage ist nur welches OS drauf läuft, linux wäre spitze :smile:

Wenn du also dort quasi admin rechte hast, dann freu freu freu .
Wenn nicht, mal anfragen an den Support ob sowas installiert ist, bzw ob das angeschaltet werden kann.

Aber mit mehr infos , kann man das schon herrausbekommen :smile:

1 Like

Ok, die frage ist welches Paket als Server hast du und bei
welchem provider, dann kann man gugen was du so alles mit
deinem SSH zugang so machen kannst.
Wenn das ein Virtual Server etc ist, dann kannst du alles
machen , die frage ist nur welches OS drauf läuft, linux wäre
spitze :smile:

das hier hab ich:
http://www.1blu.de/extra/
phpinfo gibt mir darüber hinaus noch diese Info:
PHP Version 5.2.4-2ubuntu5.9
Und Ubuntu ist ja meines Wissens nach Linux :wink:

Wenn du also dort quasi admin rechte hast, dann freu freu freu
.

uff… keine Ahnung *g*
Jedenfalls kann und soll ich z.B. meine Cronjobs über ssh erstellen und konfigurieren…
Da muss ich mich dann auch noch einlesen *g*
Im Moment ist das noch nicht so dringend - hab mein Paket erst vor kurzem Abgeschlossen und bin nur langsam dabei ein wenig den Umfang des möglichen zu nutzen…

Wenn nicht, mal anfragen an den Support ob sowas installiert
ist, bzw ob das angeschaltet werden kann.
Aber mit mehr infos , kann man das schon herrausbekommen :smile:

sag mir einfach, was für Infos Du brauchst bzw wo ich das finden kann *g*

Vielen Dank nochmal :smile:
Grüße
Munich

Ok, dann fangen wir gleich mal an.

  1. download putty.exe (http://www.chiark.greenend.org.uk/~sgtatham/putty/do…)
    1.1. starten von putty.exe (bzw install dann starten)
  2. bei Host deine domain (oder ip) eingeben dann SSH anklicken und d auf connect clicken .
  3. Warten auf Terminal user eingabe und passwort
    3.1. gegebenenfals das Zertifikat annehmen (für die sichere übertragung (SSH))
  4. user eingeben, dann passwort, dann sollte eine schöne Terminal umgebung auftauchen, sprich ein schwarzes fenster mit einer kommandozeile :smile:

du solltest dich also nun irgentwo auf deinem Ubuntu rechner wiederfinden.

z.b. könnte deine kommandozeile so aussehen

ubuntu :> _

nun gibst du mal ein

ubuntu :> cd /etc

und dann

ubuntu :> ls

also nur das hinter dem :> eingeben , das davor sieht halt bei jedem rechner anders aus :smile:

aufjedenfall solltest du nun das directory des verzeichnisses /etc sehen. Da irgentwo ist dann auch ein apache ordner wo die apache configurationen sind, das wichtig, aber das später !!!

Sollte das dir gelingen , dann freu freu freu , du solltest genug zugriff haben um das modul zu aktivieren etc.

Zusätzlich brauchst du natürlich ein phpMyAdmin für die MySQL datenbank.

OK bis hier erstmal, die Übung ist leicht, einloggen auf deinen Server via Putty SSH und schonmal bekannt machen mit der Kommandozeile.

1 Like

ach ja,
ubuntu :> exit

verlässt den login und lässt meist das terminal fenster terminieren:smile:

Dankeschön schon wieder für Deine Engelsgeduld und die ausführliche Anleitung…

  1. download putty.exe
    (http://www.chiark.greenend.org.uk/~sgtatham/putty/do…)
    1.1. starten von putty.exe (bzw install dann starten)
  2. bei Host deine domain (oder ip) eingeben dann SSH
    anklicken und d auf connect clicken .
  3. Warten auf Terminal user eingabe und passwort
    3.1. gegebenenfals das Zertifikat annehmen (für die sichere
    übertragung (SSH))
  4. user eingeben, dann passwort, dann sollte eine schöne
    Terminal umgebung auftauchen, sprich ein schwarzes fenster mit
    einer kommandozeile :smile:

du solltest dich also nun irgentwo auf deinem Ubuntu rechner
wiederfinden.

die Schritte hatte ich alle schon mal getan :smile:

aufjedenfall solltest du nun das directory des verzeichnisses
/etc sehen. Da irgentwo ist dann auch ein apache ordner wo die
apache configurationen sind, das wichtig, aber das später !!!

Sollte das dir gelingen , dann freu freu freu , du solltest
genug zugriff haben um das modul zu aktivieren etc.

freu freu freu :wink:
das hab ich… allerdings heisst das Verzeichnis bei mir „/etc/apache2“ und darin gibt es eine apache2.conf, die vermutlich relevant ist?

Zusätzlich brauchst du natürlich ein phpMyAdmin für die MySQL
datenbank.

den hab ich - die DB ist auch schon erstellt, nur die Tabelle noch nicht…

OK bis hier erstmal, die Übung ist leicht, einloggen auf
deinen Server via Putty SSH und schonmal bekannt machen mit
der Kommandozeile.

hm ja… so gut es eben geht, wenn man nur sehr oberflächliche Linuxkenntnisse hat… :-/

Grüße
Munich

freu freu freu :wink:
das hab ich… allerdings heisst das Verzeichnis bei mir
„/etc/apache2“ und darin gibt es eine apache2.conf, die
vermutlich relevant ist?

Zusätzlich brauchst du natürlich ein phpMyAdmin für die MySQL
datenbank.

den hab ich - die DB ist auch schon erstellt, nur die Tabelle
noch nicht…

sehr goil :smile:

ok du bist dir also schon bewust was du da tust, die komadnozeilenfersteuerung :smile:

jetzt müssen wir gugen was du so als texteditor kennst , wenn du keinen kennst, dann müssen wir erstmal das lernen :smile:

ich schau mal nach was ubunto so hat :smile:

jetzt müssen wir gugen was du so als texteditor kennst , wenn
du keinen kennst, dann müssen wir erstmal das lernen :smile:

ich schau mal nach was ubunto so hat :smile:

damit wir so ziemlich das gleiche können wäre ein midnight commander eine gute wahl

per SSH mal

ubuntu :> mc

eingeben, wenns eine fehlermeldung gibt dann gehts weiter , wenn nicht, schreib mir, dann gehen wir über in die apache2 modul konfig :smile:

gibbet als paket

lads dir doch manuell runter:

www.packages.debian.org/mc

kommando ist dann

ubuntu :> dpkg --install datei.dep

wobei datei.deb die mc…deb datei ist :smile:

… das ist ein einfaches tool, kann nicht viel aber genug, und lässt sich gut über die F-Tasten bedienen :smile:

also lade das paket , von mir aus via FTP dann auf dein Server übertragen. (merken wo du das dahin pakst :smile: wenns geht in dein home verzeichniss.

dann via SSH einloggen , in das verzeichnis springen mit

ubuntu :> cd /verzeichnis/verzeichnis/

und dann

ubuntu :> dpkg --install mc-datei.dep

sollte auch bei ubuntu das gewünsche machen.

ok du bist dir also schon bewust was du da tust, die
komadnozeilenfersteuerung :smile:

jepp :smile: das ist mir schon bewusst

jetzt müssen wir gugen was du so als texteditor kennst , wenn
du keinen kennst, dann müssen wir erstmal das lernen :smile:
ich schau mal nach was ubunto so hat :smile:

ich hab vorhin mal eben „vi“ versucht, aber der ist ja glaub ich nur zum editieren und selbst dafür sehr kompliziert zu bedienen *g*

Ich lese hier gerade was von kate und kedit…
werd das mal eben ausprobieren…

)

mc klappt so erst mal nicht…
ich hätte allerdings hier http://wiki.ubuntu-forum.de/index.php/Editor gefunden, dass es zwei gibt, die auch zu funktionieren scheinen.
vim und
nano

aber ich probier das mit dem MC gleich mal aus…

ubuntu :> dpkg --install datei.dep

soweit sogut…
allerdings erhalte ich da dann diese Meldung:
dpkg: requested operation requires superuser privilege

also hab ich wohl keine su…
Kann ich das andere Dings dann trotzdem einrichten?

also hab ich wohl keine su…
Kann ich das andere Dings dann trotzdem einrichten?

hmmm… gerade mal mit nano versucht eine minimale Änderung in die apache2.conf zu machen… (Leerzeichen in die Kommentare)

Und ich erhalte eine „Permission Denied“ Meldung *seufz*
Dann befürchte ich wird das wohl nix… :frowning:

hmm, ja, das ist dann das root passwort, rankommen an den login kommt man durch ein user mit userpasswort

ubuntu :> sudo a2enmod

und root passwort

oder einfach mal versuchen

ubuntu :> a2enmod

da gibbet ne liste mit den modulen zum enable , fals vorhanden.

Ansonsten mal schreiben an den support , welche möglichkeit die vorschlagen. Wie du zu deinem Ziel kommen könntest.

also da sieht man was ubunto so hat

http://www.netlobo.com/ubuntu_apache_modules.html

ergo ist es dabei, den rest könnten wir sonst einfach mal in einer .htaccess datei in einem Verzeichniss probieren, und vorallem die Datenbank tablle :smile:

Erstmal die vorarbeiten, die Datenbank :smile:

dein PHP admin sollte dir entweder schon eine Datenbank bereitstellen mit 0 tabellen drinne, oder halt nur die system dbs.

Legen wir eine Datenbank an, nennen wir sie erstmal wie die vorlage
DBDParams „dbname=apacheauth user=apache password=xxxxxx“

also heist unsere db „apacheauth“
erstellen :smile:

nun noch ein benutzer dieser datenbank zugriff gewährleisten !!

im PhpMyAdmin nach anlegen der datenbank oben auf
Server: localhost

klicken

dann unten auf den Menu punkt

Rechte

clicken.

Neuen Benutzer hinzufügen

Benutzername : meindatenbankuser
Host: localhost
Passwort: [Textfeld verwenden] ganzgeheim
Wiederholen: ganzgeheim

Datenbank für Benutzer

  • Keine

Globale Rechte (keine hacken)

und OK clicken

im folgenden fenster

Datenbankspezifische Rechte
Rechte zu folgender Datenbank hinzufügen: [apacheauth] auswählen

dann im folgenden sollte stehen

Benutzer ‚meindatenbankuser‘@‚localhost‘ - Datenbank apacheauth : Rechte ändern

Globale Rechte ( Alle auswählen) clicken

und OK clicken.

damit hat der user jetzt com localhost (php apache also alles vom server) die erlaubniss alles mit der datenbank (und nur mit der) zu machen.

Nun wählen wir links bei Datenbank: [apacheauth] aus um danach unsere tabelle anzulegen.

laut : # mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery \
„SELECT password FROM authn WHERE user = %s“

müssen wir eine tabelle namens „authn“ anlegn mit mindestens 2 feldern.

user vom typ varchar 255
password vom typ varchar 255

ich hoffe du findest die tabelle erstellen und Felder hinzufügen funktion.

wenn nicht melden :smile:

ubuntu :> sudo a2enmod

und root passwort

da fragt er mich nach einem Passwort für den User, der so lautet wie mein ftp account (beginnt sogar mit „ftpxxx“)
Allerdings klappt das Passwort nicht…

oder einfach mal versuchen
ubuntu :> a2enmod

„command not found“

Ansonsten mal schreiben an den support , welche möglichkeit
die vorschlagen. Wie du zu deinem Ziel kommen könntest.

das werd ich morgen mal machen…
Ne andere Möglichkeit sehe ich leider jetzt auch nicht mehr…

Mal gucken, was die dann sagen werden…

Vielen Dank jedenfalls für Deine Hilfe.
Ich hoffe, ich darf wieder auf Dich zukommen, falls die mir das installieren und ich dennoch nicht weiterkommen sollte…?

Grüße
Munich