Joomla.it Forum
Non solo Joomla... => Sicurezza => : iccamar 01 Jun 2010, 17:17:05
-
Sto cercando di predisporre questa modifica come suggerito nelle security FAQ di Joomla
Directions
WARNING: Do not attempt this procedure unless, after reading several times, you understand it. This is not for beginners, ensure you have a back up of your site before attempting.
1. Create a directory in your domain outside of your public_html directory. You can name it anything you want. We used the name design2-files for the directory name in this example. Note: If you have multiple Joomla installs then each Joomla install you have should have its own directory outside of public_html to contain its configuration.php file.
2. Move configuration.php to the design2-files directory and rename it to whatever you want. We used the name joomla.conf for the configuration file in this example.
3. If your Joomla site is installed in the root of the public_html directory and not in a subdirectory under public_html, then create a new configuration.php file for your joomla install in the public_html directory containing only the following code:
<?php
require( dirname( __FILE__ ) . '/../design2-files/joomla.conf' );
?>
L'avevo già fatto su altro host senza problemi.
Ora sono passato su un VPS (con Plesk) e pur avendo controllato nomi dei file e cartelle, path e permessi, non riesco ad accedere alla cartella fuori dalla root. Non credo dipenda dalla proprietà dei files (problema noto) perché non funziona neppure inserendo il file in una delle altre cartelle accessibili dall'esterno
Ho cercato nei vari forum senza successo, ma credo che il problema sia stato gia' affrontato e risolto da altri
Suggerimenti?
Grazie a chi vorra' aiutarmi
Spero sia la sezione giusta, altrimenti prego il mod di spostare su "server"
-
__ ) . '/.
-------------------------
c'è uno spazio qui? . '
M
-
verifica nuovamente le path e tieni presente che apache potrebbe girare in chroot e quindi vedere permessi ed utenti diversi da quelli che vedi tu, o anche non vedere proprio la path, ma senza essere sul server non saprei dire.
imho:
veramente mi sono sempre chiesto quale fosse la reale utilità di questa mossa...
sarebbe molto più sicuro accedere alla shell, cambiare l'owner di tutte le dirs e togliere i permessi di scrittura e di esecuzione a tutti gli utenti e per tutti i files. poi attribuire owner e permessi 'corretti' SOLO alle dir necessarie al funzionamento di joomla (images, cache...).
in questo modo gli aggiornamenti sono una rottura, ma voglio vedere chi riesce a metterti qualcosa che non vuoi. ovviamente l'ftp è la prima cosa che deve saltare.
ciao,
marco
-
Grazie per le risposte.
mau_develop mi chiede se c'e' uno spazio nel codice. Purtroppo non c'é ed il problema si verifica anche quando cerco di proteggere con pw la cartella di amministrazione (altro accorgimento suggerito per aumentare la sicurezza)
mmleoni
La path è corretta.
Se ho ben capito cosa mi dici (non sono per niente esperto :-\), anche io - facendo ricerche - avevo immaginato che il problema fosse dovuto alla proprietà delle cartelle. E' noto che con Joomla c'e' questo problema della cartelle che hanno come owner apache e che impediscono anche l'installazione delle componenti che deve essere fatto abilitando l'FTP a meno di non cambiare la proprietà (come mi pare dici tu) ripetendo l'operazione ad ogni aggiornamento.
Ho però provato a mettere il file nelle cartelle che, da Plesk, indicano come user e group lo stesso della cartella httpdocs dove sono i files del sito e la cosa non riesce e ne ho dedotto che non è quello il problema.
Se pero' ho capito male, ti prego di dirmelo così provo a fare le modifche che hai suggerito (utlizzando un aiuto...in famiglia).
Grazie ancora
-
E' noto che con Joomla c'e' questo problema della cartelle che hanno come owner apache e che impediscono anche l'installazione delle componenti
---------------------------------------------------------------
... assolutamente no, non è noto nulla.
ciò che è noto è che molti non avendo conoscenze sufficienti credono che basti un hosting un db e pagare un po' di euri per avere un sito, poi si trovano davanti a qs problemi.
L'owner alle cartelle non lo assegna joomla ma Apache, peggio ancora se lo assegna IIS
M.
-
Hai ragione, scusa, mi sono espresso male :-[.
Il problema NON è di Joomla ma si pone CON Joomla.
Mi riferivo a quanto specificato qui:
http://www.sarnari.net/programmazione/2009/02/configurare-joomla-con-plesk/ (http://www.sarnari.net/programmazione/2009/02/configurare-joomla-con-plesk/)
gli stessi argomenti li avevo trovati in altri articoli e forum in inglese ed è per questo che ritenevo fosse cosa nota.
ciò che è noto è che molti non avendo conoscenze sufficienti credono che basti un hosting un db e pagare un po' di euri per avere un sito, poi si trovano davanti a qs problemi.
Anche su questo hai perfettamente ragione.
Io non sono tra quelli che credono che basti pagare un hoster ed un db, ma sono senz'altro tra quelli che non hanno competenze specifiche ::). Però, in tutta sincerità, non mi sento di rinunciare ad imparare qualcosa di nuovo facendo "esperimenti" e fermandomi davanti al primo problema.
Sono in Rete dal 1998 e tutto quel poco che so fare l'ho imparato così. Faccio un lavoro che non ha nulla a che fare con l'infomatica ed ho superato il mezzo secolo, quindi ho poche speranze di miglioramento delle mie concoscenze informatiche ;D
Per completezza: purtroppo il ricorso al VPS si è reso necessario perché sul server condiviso, dopo essere passato a Joomla, ho visto quintuplicati i costi mensili per le risorse richeste. Anche il VPS inizialmente si "suicidava" poi sono riuscito ad eliminare alcune componenti e plugin che succhiavano risorse (ma su questo vorrei aprire un topic sul forum "server")
Divagazione a parte (spero che dalle smiles avrai capito che la risposta non ha alcun intento polemico) a questo punto devo ritenere che il mio problema è dato proprio dalla proprietà delle cartelle?
Ma se è così, come mai la cosa non riesce neppure se metto il file nelle cartelle che - almeno da quanto vedo in Plesk- hanno gli stessi permessi di quella pubblica, httpdocs ?
Grazie ancora per la pazienza
-
prova a dare un'occhiata al post che ho scritto sui permessi, qualcosina in più riesci a capirlo, non molto perchè purtroppo i setup sono un po' "abiti su misura". ( ..come dice Marco "apache potrebbe girare in chroot "
...perchè non riesce? perchè anche se sposti tu i files durante l'installazione joomla ha bisogno di appoggiarsi ad altre cartelle che trova "chiuse"
molti problemi simili si incontrano se non sono corrette le path di cache e tmp.
poi... nn volevo assolutamente darti dell'incompetente, non so chi sei e non mi permetterei mai :) volevo solo dire che joomla ha dei pre-requisiti di ambiente, basta chiedere all'hoster quelle caratteristiche.
M.
-
Grazie,
adesso vedo di fare qualche verifica e poi posto il risultato a beneficio comune.
Grazie inoltre per la precisazione ma, in effetti, incompetente lo sono davvero, altrimenti non avrei di questi problemi! ;D.
L'hoster comunque è "attrezzato" per Joomla, tanto che lo ha inserito tra i CMS installabili "con un click" (servizio che non ho utilizzato in quanto le versioni preinstallate sono sempre non aggiornate).
-
Aggiornamento....
niente da fare! Provato anche da shell a cambiare i permessi etc. (con aiutino di mio figlio piu' esperto ::)) ma niente da fare. Non si va a leggere niente fuori da httpdocs.
Neppure siamo riusciti a modificare radicalmente i permessi come indicato da mmleoni: non avendo conoscenza approfondita di quali permessi attribuire a quali cartelle
permessi 'corretti' SOLO alle dir necessarie al funzionamento di joomla (images, cache...).
Usando come riferimento quelli elencati in ammnistrazione/aiuto/info sistema/ permessi cartelle non va.
Provero' con altri sistemi.
Intanto, mente facevamo questi esperimenti, hanno caricato sulla root un file php apparentemente con nome innocuo che conteneva uno script per leggere tutte le directory ed i permessi della root e caricare files.
L'ho rinominato e provato, riesce solo a legere le directory ed i permessi ma non a caricare file. Mi è andata bene, per ora. Il file è disponibile (ovviamente non qui) per chi volesse dare un'occhiata al codice.
Mi chiedo come facciano a caricare i files sulla root e che cosa si può fare per impedirlo.
-
ciao a tutti,
vedo siete andati avanti :)
il discorso su joomla ed i permessi non mi pare si applichi a questo caso, ma vi confermo che non è propriamente un problema di joomla, ma della config del server; ovviamente i provider poco seri dicono che è un problema dell'applicazione, e possono tranquillamente farlo finché dall'altra parte non c'è un sistemista che li manda a quel paese... il problema è poi comune a qualsiasi applicazione trovi gli stessi discorsi per drupal e wordpress.
un tentativo che puoi fare è creare un'altra cartella allo stesso livello di httpdocs ed attribuirle stessi permessi e ownership di quest'ultima, se non la legge neanche così non saprei che dire.
( dai un ls -la per leggere utente e gruppo e poi un chown -R utente:gruppo nuovacartella
per cambiare i permessi ad httpdocs preferisco non dare consigli perché se sbagli non ne esci più, solo una nota: sono solo tre o quattro le directories che debbono essere scrivibili perché joomla funzioni. tutte quelle indicate nella sezioni permessi servono scrivibili solo per l'installazione di estensioni e gli aggiornamenti di versione.
file caricato: ho hai qualcosa di non aggiornato/vulnerabile su joomla (però poi il programma dovrebbe riuscire ad effettuare l'upload) ho hanno trovato la pw di plesk. a distanza è difficile dirlo... :(
ciao,
marco
-
Ciao,
se vai a vedere, ho aperto una discussion riguardo a quell'articolo, su joomla.org.
La sintassi del path, infatti, non è corretta:
dirname( __FILE__ ) . '/../design2-files/joomla.conf
Si tratta, infatti, della concatenazione di due stringhe, che ne ritorna, ovviamente, una unica. Non si può usare "../" nel bel mezzo di un path.
Il risultato sarebbe del tipo:
home/giorgio/conf/../configuration.php
Che, ovviamente, non funziona.
Sostituisci tutto quello che c'è tra le parentesi più esterne con il path assoluto del file e vedrai che funziona.
veramente mi sono sempre chiesto quale fosse la reale utilità di questa mossa...
Esiste una buona letteratura su questo argomento, lo trovi tra le prime pagine di testi di autori che non possiamo certo discutere...
-
@iccamar
<?php
require( dirname( __FILE__ ) . '/components/../configuration.php' );
$j = new JConfig;
print_r($j);
?>
metti questo nella root, vedi se non funziona!
sul resto non commento :(
ciao,
marco
-
testi di autori che non possiamo certo discutere...
Pregasi citare Autori e testi (sarebbero graditi pure i links) e non lasciare fine a se stesse iniziative volte solo alla probaile alimentazione di flames personali.
Grazie
-
Nessun flame personale, anzi, sono sicuro che in questo forum ci siano persone eccezzionalmente preparate, e qui non scherzo. Solo che io penso che siamo qui per aiutare chi non riesce a fare qualcosa e, forse, ne sa un po' meno di noi (ma non è detto, a volte, semplicemente, due teste pensano meglio di una), quindi non ha molto senso infarcire i discorsi di paroloni per poi non puntare a soluzioni effettive.
Ma, lo ripeto, niente polemica.
Non allego link perchè io la programmazione la studio sui libri, sarò alla vecchia maniera.
Per un approccio semplice ma completo al problema, raccomando il bel libro di Larry Ullman, "PHP e MySQL per siti dinamici". Nella mia versione spiega questa soluzione alla pagina 198 "Organizzazione dei documenti", Capitolo 7.
Ne approfitto per correggermi: effettivamente la sintassi permette di inserire uno o più "../" all'interno della stringa di path, ma sul mio server ha dato errore fino a quando non ho inserito, semplicemente, il path assoluto.
Siccome, poi, il configuration.php che richiama il vero file di configurazione è sempre nella cartella principale di Joomla, non vedo perchè non convenga utilizzare (anche seguendo i suggerimenti dl libro succitato), un semplice path "../configdir/configfile.php".
-
Aggiornamenti....
Ho provato con la path assoluta, facendo:
<?php
require( '/var/www/vhosts/miosito.it/directorysicura/altro.file' );
?>
E mi da:
[Thu Jun 03 14:28:06 2010] [error] [client 207.46.204.242] PHP Warning: require() [<a href='function.require'>function.require[/url]]: open_basedir restriction in effect. File(/var/www/vhosts/miosito.it/directorysicura/altro.file) is not within the allowed path(s): (/var/www/vhosts/miosito.it/httpdocs:/tmp) in /var/www/vhosts/miosito.it/httpdocs/configuration.php on line 2
[Thu Jun 03 14:28:06 2010] [error] [client 207.46.204.242] PHP Warning: require(/var/www/vhosts/miosito.it/directorysicura/altro.file) [<a href='function.require'>function.require[/url]]: failed to open stream: Operation not permitted in /var/www/vhosts/miosito.it/httpdocs/configuration.php on line 2
[Thu Jun 03 14:28:06 2010] [error] [client 207.46.204.242] PHP Fatal error: require() [<a href='function.require'>function.require[/url]]: Failed opening required '/var/www/vhosts/miosito.it/directorysicura/altro.file' (include_path='.:') in /var/www/vhosts/miosito.it/httpdocs/configuration.php on line 2
Stesso identico errore se nel php.ini locale (in httpdocs) aggiungo:
open_basedir = /var/www/vhosts/miosito.it/httpdocs:/var/www/vhosts/miosito.it/directorysicura:/tmp
-
due cose:
1. path assoluto e path ottenuto come dice la guida di joomla sono la stessa cosa, se li scrivi bene.
2. dopo aver modificato php.ini devi dare il restart (non basta il reload) di apache se php gira come mod_apache.
ciao,
marco
ps: verifica i permessi come detto qualche post fa.
ciao,
marco
-
Grazie.
Avevo riavviato Apache sia da Plesk via SSH ma non ci sono effetti.
Quanto ai permessi, idem.
Sicuramente sbaglio io.....
-
Magari prova, anche solo a titolo di esperimento:
open_basedir = /var/www/vhosts/miosito.it:/tmp
Safe mode è off?
-
Provato. Niente (safe mode è off).
Devo trovare qualche metodoo alternativo....
-
...centra un tubo con la tua soluzione, però se il problema è quello di proteggere il configuration puoi tentare con bambalam (con alcune shell è stupendo), è un compilatore di files php
M.
-
Sei sicuro che il tuo php.ini sia attivo? Siamo partiti dal principio che c'era già, non l'hai semplicemente creato tu.
Certo è che devi fare anche tu una scelta: proteggere con openbase_dir o spostando il configuration? Spostarlo per poi "aprire" la directory è un mezzo controsenso...
Hai parlato con l'amministratore del server?
-
Spostarlo per poi "aprire" la directory è un mezzo controsenso...
In effetti, nella mia ignoranza, pensavo anche io la stessa cosa....
Il phpini lo abbiamo provato (parlo al plurale perché sfrutto bassamente mio figlio...) sia mettendo un file nella root, sia modificando quello sul server.
IN realtà la mia esigenza e' quella di aumentare la sicurezza del sito e, sempre per il fatto di non essere espserto, ho cercato di seguire le indicazioni contenute nele FAQ di sicurezza e nella Security checklist di Joomla.org. Col vecchi server condiviso non avevo avuto problemi e pensavo di rifare le stesse cose.
Intanto mi scarico bambalam e vedo se fa al mio caso (sempre con l'aiuto di cui sopra) ed intanto ripiego su qualche "accessorio" trovato nella JED (stavo leggendo qualcosa su Eyesite e kareebu Secure).
Grazie ancora per i preziosi consigli (seguo sempre questa parte del forum con gli RSS e cerco di imparare anche se certe risposte sono.... terrorizzanti).
-
In effetti, mi sembrava un path da Fedora Core...
Sai che per avere un php.ini locale non basta crearne uno in una directory, ma bisogna anche abilitare lo scan di quella directory, da parte di PHP alla ricerca dello stesso, vero?
Sai anche che quando fai un cambiamento al php.ini "centrale" bisogna riavviare httpd, vero?
Stai tranquillo, tanto la sicurezza informatica non esiste, nenche quelli dell'FBI la fanno franca...
-
Al riavvio (v. sopra) ci ero arrivato.
Per il resto, avevo usato lo stesso file php.ini che usavo in precedenza, ma avevo provato anche modifcando il php.ini sul server.
Lo so che la sicurezza non esiste, ma cerco di seguire tutte le regole consigliate per stare un po' più tranquillo.... ::)
-
occhio se usi bambalam di tenerti una copia non compilata del file qualora non funzionasse, nn lho mai provato per joomla e soprattutto non l'ho mai provato su un singolo file di un framework,...i risultati potrebbero non essere quelli attesi... mi sa che sasera lo rispolvero un po' anch'io e ci gioco un po'
...comunque non andare in paranoia, una qualsiasi lfi o rfi su un componente renderebbe vana qualunque forma di sicurezza.
M.
EDIT: LEGGEVO ORA CHE ci potrebbero essere dei problemi col php5 ... azz se son vecchio :)
-
Grazie, nessuna paranoia, solo un po' di prudenza (e preferisco non sapere cosa significa lfi o rfi.... ;D)
-
(e preferisco non sapere cosa significa lfi o rfi...
----------------------------------------------------------------
e no... se vuoi difenderti devi sapere da che cosa ti difendi, altrimenti corri il rischio di creare facili passaggi al tuo nemico
M.
-
A lllora ttendo spiegazioni: se faccio lfi si Google esce "La ferrovia italiana" :D :D :D :D
-
altre due cose:
1. rimetti il codice suggerito dall'articolo citato. è difficile che apache sia in chroot, ma, se così è, inserendo il percorso assoluto come hai fatto tu non funzionerà.
2. verifica che non ci sia un php.ini per ogni vhost.
ciao,
marco
-
Ho fatto varie prove e, per il momento, rinuncio.... Non sono all'altezza.
Rimedio provando ksecure e eyesite.
vediamo se funzionano
Grazie a tutti per la grande pazienza!