Säkerhetsfråga apache2 - skydda filer

Konfiguration av nätverk, hur man använder Ubuntu som server, och håller sin dator säker
edge90
Inlägg: 8
Blev medlem: 24 aug 2007, 17:35
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Säkerhetsfråga apache2 - skydda filer

Inlägg av edge90 »

Hej!

Jag har ett webhotell där en websida ligger, där jag vill att man skall kunna hämta filer via. Filerna i sin tur ligger på min ubuntu-server, där jag har tänkt mig att de skall ligga under apache2.

Mitt problem, eller undran är:

Jag vill att man skall kunna få åtkomst till filerna via webbsidan som ligger under mitt webhotell, men att man inte direkt skall kunna länka till filerna via sin webläsare, dvs. kunna skriva ex. "http://10.1.1.1.1/files/file.mp3". Inte heller att man skall kunna bläddra på servern. Filerna skall alltså vara skyddade för åtkomst för allt annat än via webbsidan.

Finns det något sätt som man smidigt kan lösa detta på? Är ganska ny vad gäller att confa apache...

Tacksam för alla funderingar/lösningar

Tack på förhand // edge90 :)
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Säkerhetsfråga apache2 - skydda filer

Inlägg av andol »

Att förbjuda bläddring utav filer är relativt enkelt. Det löser du lämpligt genom att sätta Options -Indexes.

Att hindra folk från att plocka filerna direkt är lurigare. Den traditionella lösningen är att titta på HTTP referrers. Detta är dock inte helt optimalt med tanke på att dessa nuförtiden till och från döljs på klientsidan.

En variant är förstås att använda ett skriptomslag på webbhotellet som hämtar filerna, med lämplig autentisering, och sen skickar dem vidare till klienten. Nackdelen med detta är att alla filer tvingas gå omvägen från din server via webbhotellets server. Fast visst, handlar det bara om begränsats lagringsutrymme så kanske det kan vara acceptabelt.

Sen går det förstås säkert att göra något obfuscatat med hjälp utav Javascript. Fast där drar i alla fall jag gränsen för vad som är för osnyggt...
edge90
Inlägg: 8
Blev medlem: 24 aug 2007, 17:35
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: Säkerhetsfråga apache2 - skydda filer

Inlägg av edge90 »

Tack för tipsen andol! Grymmt bra!

Har satt options - indexes vilket fungerar bra.

Tror du att det skulle fungera att sätta:

Kod: Markera allt

order allow,deny
allow from www.mittwebhotell.se
deny from all
Då kommer ju anslutningar till min server endast accepteras om de kommer från "www.mittwebhotell.se"...eller? Det kanske blir samma problematik som med HTTP referrers?
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Säkerhetsfråga apache2 - skydda filer

Inlägg av andol »

edge90 skrev: Tror du att det skulle fungera att sätta:

Kod: Markera allt

order allow,deny
allow from www.mittwebhotell.se
deny from all
Då kommer ju anslutningar till min server endast accepteras om de kommer från "www.mittwebhotell.se"...eller? Det kanske blir samma problematik som med HTTP referrers?
Det beror lite på hur du tänker i övrigt? Att bara köra den lösningen är ju ingen höjdare, eftersom alla filförfrågningar kommer direkt från besökarnas webbläsare och därmed deras adresser. Däremot borde det vara en funkis variant givet att du väljer att slussa allt skyddat material genom ovan nämnda skriptlösning.

Hängde du förresten med på vad jag menade med att servera filerna genom ett skriptomslag? Alternativt vill du ha ett exempel?
edge90
Inlägg: 8
Blev medlem: 24 aug 2007, 17:35
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: Säkerhetsfråga apache2 - skydda filer

Inlägg av edge90 »

Okej! Förstår vad du menar! Skriptlösning låter bra, ett exempel kan vara bra för att se mer konkret vad du menar!

Tack på förhand!
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Säkerhetsfråga apache2 - skydda filer

Inlägg av andol »

Som exempel kan vi ta bilden http://people.ifm.liu.se/andol/privat/puffy.png, vilken man bara kommer åt via vissa explicit angivna ip-adresser. Då en av dessa explicit angivna ip-adresser tillhör halleck.arrakis.se så har jag där slängt upp följande PHP-skript, som visar bilden ifråga - http://halleck.arrakis.se/temp/puffy.php

Kod: Markera allt

<?php
header("Content-type: image/png");
$bild = fopen("http://people.ifm.liu.se/andol/privat/puffy.png", "rb");
while (!feof($bild)){
  echo fread($bild, 8192);
 }
fclose($bild);
flush();
?>
Notera dock följande...
  • Jag använder mig utav en specifik Content-type. Kan mycket väl vara så att du vill använda dig utav en annan.
  • Jag är egentligen ingen PHP-kodare. Det kan mycket väl finnas bättre/snyggare lösningar på att få PHP att spotta ur sig binärdata.
  • I mitt exempel finns det hårdkodande sökvägar, vilket är lugnt. Bygger man något mera dynamiskt gäller det dock att tänka till så man inte gör något säkerhetsmässigt trasigt.
  • Dylik lösning kräver att ens PHP är konfigurerad med allow_url_fopen = On. Tyvärr har den inställningen tendensen att låta dåligt skriven PHP-kod bli säkerhetshål. Inställningen allow_url_include = Off hjälper en hel del.
  • En mer generell lösning för att servera filer som egentligen ligger på en annan server är att låta till exempel Apache agera Reverse Proxy (se mod_proxy). Dylik lösning kräver dock att man kan peta direkt på webbservern, vilket jag utgår från att inte är fallet med ditt webhotellskonto?
edge90
Inlägg: 8
Blev medlem: 24 aug 2007, 17:35
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: Säkerhetsfråga apache2 - skydda filer

Inlägg av edge90 »

Så filerna går "genom" php-scriptet? php läser alltså filerna? Förstår inte riktigt hur själva scriptet fungerar...

Kod: Markera allt

while (!feof($bild)){
  echo fread($bild, 8192);
Är det så att man för varje fil då måste specificera dess längd/storlek?


Det är ett ganska stort förråd av ljudfiler (packade till zip-filer) som kommer att vara ändamål för filhämtning. Det jag vill ha ut av scriptet är att man som användare skall kunna hämta ner filerna till sin burk ungefär som genom att skriva:

Kod: Markera allt

<a href="http://10.1.1.1.1/files/file.zip">Ladda ner</a>
i html fast med hjälp av scriptomslag.

Sorry om jag känns trögfattad ??? ...har inte varit i kontakt med säkerhetssammanhang så mycket i forna dar... :)
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Säkerhetsfråga apache2 - skydda filer

Inlägg av andol »

Innan vi går vidare vill jag bara påminna om något som jag sa tidigare, så vi inte missförstår varandra.
andol skrev:En variant är förstås att använda ett skriptomslag på webbhotellet som hämtar filerna, med lämplig autentisering, och sen skickar dem vidare till klienten.
Att bara köra med ett skriptomslag hjälper i sig föga. Det går ju precis lika bra för folk att komma åt exempelvis http://halleck.arrakis.se/temp/puffy.php direkt, oavsett om det länkas från HTML:en eller ej. Det intressant med ett skriptomslag är som sagt möjligheten till att kontrollera lämplig autentisering. Är det så att hemsidan i övrigt nyttjar någon form utav inloggning är det då något som går alldeles utmärkt att kontrollera via skriptomslaget.
Skriv svar

Återgå till "Nätverk, säkerhet och servrar"