martedì 29 novembre 2011

YaCy

Una di quelle cose che potrebbe ingenerare un vero terremoto nel web.

Un motore di ricerca libero (licenza GPL), aperto (codice Java open source) decentralizzato (tecnologia peer to peer), flessibile, configurabile, che si installa con facilità e gira nel browser preferito.

Ed è, soprattutto, rispettoso della privacy, perchè non traccia i gusti degli utenti per proporre pubblicità su misura.

E' YaCy :-)

Dolphin ed il menu contestuale

Sarà che sto invecchiando :-D , ma non sono riuscito a trovare in rete (oh, c'è sicuro, ma uno non ha a disposizione tempo all'infinito) una spiegazione rapida per integrare e/o modificare a piacere il menu contestuale di Dolphin per tutti gli utenti del sistema, ad es. per inserire manualmente i link ai vari componenti della suite LibreOffice insieme a, od al posto di, quelli che vengono mostrati di default.
Si, il sistema canonico è quello di utilizzare l'opzione "Crea nuovo/Link ad applicazione...", ma per chi non si ricorda come mettere i parametri giusti, c'è un sistema facile facile e completamente grafico.

Apriamo una cartella qualunque nella nostra home (ad es. Documenti), lanciamo LibreOffice dal menu applicazioni e salviamo nella cartella un documento vuoto per ogni tipo (ad es. Database.odb , Drawing.odg , Formula.odf , Impress.odp , Spreadsheet.ods , Text.odt ).
Qundi lanciamo un file manager con privilegi di root (ad es. dal terminale: sudo nautilus + password  , oppure l'ottimo Krusader, sempre con l'opzione root) e trasferiamo i files che abbiamo appena creato dalla cartella Documenti alla cartella
/usr/share/templates/.source            (ecco perchè serve essere root).

A questo punto trasferiamoci nella cartella immediatamente superiore
/usr/share/templates
e creiamo un documento di testo nominandolo LibreOffice_Text cui assegneremo l'estensione .desktop, ad es. LibreOffice_Text.desktop

Apriamo il file con un editor qualunque, sempre con privilegi di root, ed inseriamo questo contenuto:

[Desktop Entry]
Name=LibreOffice Text Document...
Comment=New LibreOffice Text document
Type=Link
URL=.source/Text.odt
Icon=application-vnd.oasis.opendocument.text

Fatto.
Aprendo Dolphin in una cartella dove avete privilegi di scrittura, e dando tasto destro in una zona vuota di questa, comparirà un menu dove, selezionando "Crea nuovo..." avrete la possibilità di creare un nuovo file testo di Libreoffice.
Se volete nominare in altro modo i files creati nella cartella .source , dovrà essere modificato in maniera corrispondente il valore del campo URL 

Per gli altri tipi si ha:
--------------------------
nome del file:
LibreOffice_Spreadsheet.desktop

Contenuto

[Desktop Entry]
Name=LibreOffice Spreadsheet Document...
Comment=New LibreOffice Spreadsheet document
Type=Link
URL=.source/Spreadsheet.ods
Icon=application-vnd.oasis.opendocument.spreadsheet

--------------------------
nome del file:
LibreOffice_Impress.desktop

Contenuto

[Desktop Entry]
Name=LibreOffice Presentation Document...
Comment=New LibreOffice Presentation document
Type=Link
URL=.source/Impress.odp
Icon=application-vnd.oasis.opendocument.presentation
--------------------------
nome del file:
LibreOffice_Drawing.desktop

Contenuto

[Desktop Entry]
Name=LibreOffice Drawing Document...
Comment=New LibreOffice Drawing document
Type=Link
URL=.source/Drawing.odg
Icon=application-vnd.oasis.opendocument.graphics
--------------------------
nome del file:
LibreOffice_Formula.desktop

Contenuto

[Desktop Entry]
Name=LibreOffice Formula Document...
Comment=New LibreOffice Formula document
Type=Link
URL=.source/Formula.odf
Icon=application-vnd.oasis.opendocument.formula
--------------------------
nome del file:
LibreOffice_Database.desktop

Contenuto

[Desktop Entry]
Name=LibreOffice Database Document...
Comment=New LibreOffice Database document
Type=Link
URL=.source/Database.odb
Icon=application-vnd.oasis.opendocument.database
--------------------------

Buona personalizzazione :-)

domenica 9 ottobre 2011

MySQL reload

Capita a volte che piccoli errori, specie all'inizio dei settaggi di MySQL (tipo assegnare una password all'utente root e non dare i flush privileges), determini l'impossibilità di modificare alcunchè in mysql, con florilegio di errori tipo ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) o il non riconoscere l'utente root ed i suoi privilegi.
Per evitare di perdere quantitativi industriali di tempo, all'inizio è meglio reinstallare i dati di base di mysql.
Se però uno prova a disinstallarlo (per poi reinstallarlo) scopre che insieme a mysql gli parte mezza installazione di Linux, che non è proprio una bella cosa.
Che fare, allora ?
Ci viene in aiuto il solito Dangermouse che con un paio di tips sistema tutto.

Fermiamo prima di tutto mysqld:
# service mysqld stop

Da root, cancelliamo il contenuto della cartella /var/lib/mysql in modo da eliminare tutti i settaggi inizialmente fatti, compresi quelli sbagliati.

Facciamo ripartire mysqld:
# service mysqld start

Lanciamo
# mysql_secure_installation
e settiamo nuovamente il sistema

giovedì 6 ottobre 2011

Siate affamati, siate folli.....


C'è poco da dire.
Oggi non mi importa di open o di closed, di diritti negati o battaglie per la libertà.
Tutte cose giuste, ma che rimandiamo a domani.
Oggi il mondo si mostra intellettualmente un po' più povero, e certamente un po' più lento, fino a che non emergerà una figura che ne possa anche solo avvicinare la grandezza.
Senza di lui, avremmo ancora delle clave informatiche in mano, e saremmo ancora in balia di un deficiente occhialuto che ci prende per il sedere.
Oggi il mondo perde una delle più grandi intelligenze che la tecnica informatica ed il marketing avessero a disposizione.
La persona più rivoluzionaria degli ultimi trent'anni, un genio limpido, costruttivo, innovativo.
Lo ricorderemo e lo inneggeremo per molto, moltissimo tempo.

Riposa il pace, Steve.

mercoledì 13 luglio 2011

Quando la rete cablata non va

Da un po' di tempo a questa parte continuo ad avere il router in botta (un Dlink DSL-G624T) che fa egregiamente il suo dovere da anni con la wireless ma non c'è verso di fargli distribuire internet cablata, se non al fedele linksys che mi collega i telefoni di casa al voip, probabilmente perchè la configurazione è freezata dall'età e dal surriscaldamento, e senza reinstallazione del firmware difficilmente riuscirò a sbloccarla.

Cosa che probabilmente non farò visto che sto per cambiarlo con un 300N, ma che mi ha creato non pochi problemi specie con il settaggio di pc su cui ho fatto nuove installazioni e nei quali (praticamente tutti) non erano presenti schede wireless nativamente riconosciute.


La cosa però mi è stata utile perchè mi ha permesso, in pratica obbligandomi se volevo andare avanti col lavoro, di verificare la funzionalità di un'interessante feature, e cioè la condivisione internet a mezzo notebook, od altro pc connesso alla rete via wireless, con un settaggio estremamente semplice, specie per chi usa KDE, la cui spiegazione ho trovato nell'ottimo blog di Gianluca Sforna.


Da System Setting (o Configurazione di Sistema) --> Network & Connettivity --> Network settings --> Network connections


Nella label Wired (cavo) dare Add (aggiungi) --> dare un nome alla connessione --> selezionare Connect Automatically --> selezionare System Connection, premere sul pulsante Advanced Permissions ed aggiungere l'utente Anonymous ( :-) ) a quelli che possono attivare la connessione, e nella lista a tendina di method scegliere l'opzione "share".


A questo punto ho collegato il pc al notebook attraverso la presa ethernet con un normalissimo cavo, e la connessione wireless si è magicamente propagata via cavo al PC, a questo punto non più isolato dal resto del mondo.


Buona condivisione :-)

lunedì 27 giugno 2011

LibreCAD - Un'altra soluzione open source



Per quanto non ancora munita delle feature dei blasonati (e costosi) concorrenti closed source, la soluzione LibreCAD sembra pulita, funzionale e destinata ad un buon successo, specie in periodi di vacche magre come questo, dove si cerca di risparmiare su tutto, nell'immediato ed in prospettiva

Piccolo ma non trascurabile vantaggio: gira su tutte le piattaforme, ed è pacchettizzata per il mondo rpm e deb sia 32 che 64 bit per una facile e rapida installazione.

mercoledì 11 maggio 2011

Fedora WiiLD Whiteboard / Touchscreen

La lavagna interattiva creata con il Wiimote ormai ha qualche annetto, ma mostra sempre un suo fascino, specie per i bassi costi, visti i tempi che corrono, e la scarsa, per usare un eufemismo, disponibilità di fondi per la scuola pubblica.

Poterla utilizzare con facilità anche da parte di chi è munito di SO del mondo RPM è quindi opportuno, oltre che utile.

Il software ufficiale ordinariamente disponibile, però, è normalmente pacchettizzato in modo ufficiale per il mondo .deb , per cui ho fatto un po' di ricerca sul web, ed il riassunto è questo.

Il nocciolo della questione è spiegato in questo post

Cominciamo installando le necessarie dipendenze.

Da console root:
# yum install qt-devel PyQt4 python-numdisplay cwiid-python2 pybluez python-xlib 

Quindi, creiamo il link simbolico a lrelease, per avere lrelease compatibile col makefile:
# ln -s /usr/bin/lrelease-qt4 /usr/bin/lrelease

Scarichiamo quindi il pacchetto python-whiteboard:
$ git clone git://github.com/pnegre/python-whiteboard.git

Spostiamoci nella directory python-whiteboard:
$ cd python-whiteboard/

diamo il make:
$ sudo make all

e quindi installiamolo:
$ sudo make install

Se tutto è andato bene, il comando
$ python-whiteboard

farà partire il programma.

Collegato il computer al proiettore e posizionato il wiimote in modo da inquadrare l'intero schermo, la partenza del programma permette di effettuare, come primo passo, il pairing tra wiimote e PC/notebook, che risolve non pochi problemi in questa procedura (che spesso fallisce con l'utilizzo diretto di bluetooth/kblueooth).

Effettuato il pairing, si potrà effettuare la calibrazione a schermo mediante l'utilizzo di una penna IR, o penna ad infrarossi, costituita banalmente da un led TSAL 6200 o 6400, un pulsante interruttore a rilascio ed una pila da 1,5 v.

A questo punto la WiiLD è utilizzabile.

NB se il wiimote, anzichè puntarlo sullo schermo proiettato, lo si punta sullo schermo LCD, potremo trasformare "magicamente" lo schermo in un touchscreen.

Di seguito alcune informazioni più approfondite






Articolo su Wiimote e lavagne interattive, che fa riferimento ai video di J.C. Lee, dove viene chiarita la dfferenza tra la modalità di utilizzo "Whiteboard" e quella "Presenter"






Il video di Matteo Ruffoni sulla WIILD (notare al minuto 0,30 il supporto al Wiimote, che alla resa dei conti è il pezzo più complicato da reperire)

Il sito di Proteons indicato da WiilD.it dove potersi procurare tutta l'attrezzatura senza autocostruirla

Con sostanzialmente la stessa tecnica si possono realizzare multi touch pad e touch screen.

Nelle varie pagine viene descritto come realizzare o acquistare tutto il necessario (IR pen, wiimote, supporto x wiimote, software, proiettore).

Realizzare la penna IR sembra sia assolutamente banale avendo a disposizione i LED giusti.
Più problematico è invece avere a disposizione, o autocostruire, il supporto al wiimote che lo tenga ben fermo nella sua posizione, in modo da non incidere sulla sensibilità dello strumento e l'impostazione spaziale del pairing effettuato.


Installare Ardesia

Ardesia è un software Open Source multipiattaforma che fa parte del progetto Wii4dida e permette di creare presentazioni ed annotazioni su schermo e lavagne luminose (Whiteboard)

Prima di tutto, installiamo le necessarie dipendenze
$ sudo yum install gcc make automake autoconf intltool libtool libsigsegv* binutils* libxml2* zip unzip libgtk2* libatk* libx11* libpng12* libglib2* libgconf2* libfontconfig1* libfreetype6* libgsl0* libc6* libvlc* vlc xdg* gsl*

Apriamo il browser alla pagina

http://code.google.com/p/ardesia/downloads/list

e scarichiamo il pacchetto sorgente (così definito mentre scrivo questo post)

ardesia-0.8.tar.bz2

Spostiamolo nella cartella che ci interessa e scompattiamolo

Portiamoci quindi nella directory dove è presente la cartella scompattata e diamo:.

$ sudo ./autogen.sh
$ sudo make
$ sudo make install

Se non ci sono problemi di installazione, troveremo l'avviatore di Ardesia nel menu Accessori di Gnome.

Buona WiiLD

sabato 12 marzo 2011

Joomla: caricamento lento ed errore 504 gateway timeout

WebOpenLife, la mia struttura informatica, è posizionata su server americani del provider Mochahost, che mostrano un ping medio, a partire da una ADSL italiana di media efficacia, di 130 ms.
Questo ping è sicuramente superiore rispetto a molti provider italiani (indiscutibilmente più rapidi ma anche più onerosi e nettamente meno funzionali) che viaggiano intorno ai 20-30 ms (come ad esempio Sic.Am. sas posizionata su server italiano Fastnom), ma la perdita, se il sito è di rapido caricamento, non incide più di tanto su potenziali clienti italiani.
Se il sito è di rapido caricamento...
Sia i siti statici che dinamici non danno grossi problemi, semprechè si imposti la home page, o meglio la primary landing page, in modo tale da non avere ammenicoli tali da renderne artificiosamente pesante il caricamento; per tale motivo la landing page va adeguatamente impostata fin dalla sua progettazione e continuamente monitorata una volta on line.
Nel caso di WebOpenLife, il problema incontrato consisteva nella scelta del template base, con relativa presenza di slideshow, che si mostrava particolarmente lento al caricamento, aggravando la questione relativa al posizionamento estero.
Lentezza che, in alcuni casi, legati probabilmente a momenti di intenso traffico, portavano anche al messaggio di errore 504 gateway timeout.
Dopo una breve googlata ho verificato che, specie in caso di caricamento di immagini, particolarmente valido quando si hanno estensioni con molte immagini da caricare che non si possono ridurre dimensionalmente se non comprimendole a scapito di una forte perdita di qualità, motivo significativo di rallentamento è dato dal check delle immagini che il sito, sia da parte dell'amministrazione che da parte dell'estensione specifica, effettua prima di fare l'upload.
La soluzione a questo piccolo ma serio problema, che ho trovato in questo thread, è la seguente:

<root>/administrator/components/com_media/models/manager.php

posizionarsi alle  righe 63 e 102

$folders = JFolder::folders($base, '.', true, true)

e modificarle in

$folders = JFolder::folders($base, '.', false, true)

Questo nel caso del comportamento administrator; analoga cosa, eventualmente, andrà fatta nella gestione della specifica estensione, come ad es. nel caso di un'estensione che fa solitamente un largo uso di immagini come virtuemart .

mercoledì 23 febbraio 2011

ainamreG ?


La Germania al contrario ?


A prescindere dal fatto che i tedeschi, che personalmente stimo parecchio, non sono poi così perfetti, che tutto il mondo è paese, che c'è sempre qualcuno che cerca di tutelare degli interessi di parte, che Microsoft non è che se ne stia li buona buona a farsi depilare dolorosamente da Linux, che l'acquisizione di Novell da parte di Microsoft qualcosa avrà voluto ben dire e che certe evoluzioni erano, purtroppo, preventivabili, che non siamo solo noi italiani bravi a raccontare delle palle, che questo tipo di scelta creerà nel medio termine non pochi problemi all'Amministrazione che ne risulterà soggetta, c'è un passaggio nello studio effettuato da McKinsey citato nell'articolo sul quale ritengo sia bene soffermarsi:

"Problems were mainly identified in the areas of interoperability, particularly affecting the sharing of office documents, in the concentration of important expertise in a small number of IT professionals, and in the low level of acceptance among staff."

Tre concetti:
- difficoltà di interoperabilità, cioè di dialogo tra diversi sistemi, operativi, di lavoro, di approccio, di efficacia, in generale di rappresentazione dell'organizzazione del lavoro e della struttura mentale di chi opera, e non solo, imo, di condivisione di documenti di ufficio.
Con Linux è indiscutibile che venga richiesta una consapevolezza di ciò che si sta facendo molto superiore rispetto a quella necessaria a gestire un sistema Windows, e ciò presuppone una maggiore responsabilità da parte dell'operatore interessato, fattore che, specie nella PA di qualsiasi Stato, è comunque visto da questo, almeno in linea generale, come una fregatura.
Inoltre, l'abitudine ad usare formati proprietari e spesso obsoleti da parte dell'utenza, l'inerzia dirigenziale dei funzionari preposti nelle PA, le problematiche politiche e le pressioni della major policroma impediscono l'utilizzo diffuso dei formati standardizzati, fatto che taglierebbe la testa al toro ed imporrebbe di restare definitivamente nel campo del rinnovamento open.

- concentrazione di significativa capacità ed esperienza in un numero limitato di professionisti IT
Se lo si vuole intendere come "in grado di garantire l'efficacia del sistema", può essere vero sotto il profilo prettamente statistico, soprattutto se comparato a quello dei professionisti MS, ma non quello della potenzialità del mercato, nettamente ed indiscutibilmente superiore, anche perchè stiamo parlando di formazione su contenuti aperti e non controllati ne controllabili.
Certo che se se ne interrompe lo sviluppo formativo cassando i passaggi evolutivi, non è che questo faccia bene alla causa ed alle tasche dei cittadini.

- basso livello di accettazione da parte del personale.
Linux è complicato, e questa è, ancora oggi, l'assurda percezione diffusa (e la cosa mi fa anche abbastanza incavolare), ma prendiamolo come dato di fatto e facciamocene una ragione.

Sinceramente, ho sempre considerato questi problemi come elementi di secondaria importanza, facilmente risolvibili con il tempo; invece devo ammettere che spesso hanno un peso significativo, se non addirittura, in certi casi come probabilmente questo, determinante.
La soluzione è una sola: formazione della cognizione e della consapevolezza, ovunque, sempre.
Malgrado Linux sia già diffusissimo, finchè esisteranno SO non basati sul web, arringate la folla e diffondete il verbo, perchè è importante, visto che il "nemico" non molla mai

E USATE LA GUI !!!
C'è ancora troppa gente che si spaventa quando vede la shell, ed a queste persone non va dato alcun tipo di alibi.

mercoledì 2 febbraio 2011

Quando la wireless rompe le scatole...

Ultimamente, la wireless ha iniziato a fare le bizze, disconnettendosi frequentemente, con accompagnamento di un bel ABRT:

Package: kernel
Latest Crash: dom 30 gen 2011 22:03:52
Command: not_applicable
Reason: WARNING: at net/wireless/core.c:633 wdev_cleanup_work+0x52/0xbd [cfg80211]()

In rete il problema pare non sia così raro, ma malgrado ciò il bug non è stato ancora eliminato, almeno tramite repository.
La cosa più fastidiosa è che, apparentemente, quando il problema si presenta, l'unica soluzione al momento sembra il riavvio.
Con queste semplici istruzioni è possibile invece ripristinare la funzionalità (ma non la stabilità) della wireless:

## rimuovere il modulo driver dal kernel
$ sudo modprobe -r iwlagn

## ricaricare il modulo driver nel kernel
$ sudo modprobe iwlagn

I passaggi successivi possono non essere indispensabili

## abilitare la scheda wireless
$ sudo ifconfig wlan0 up

## cercare le reti
$ sudo iwlist wlan0 scan

## riavviare network manager
$ sudo service NetworkManager restart

## verificare lo stato di network manager
$ nmcli -p nm

Qui Il bugtracking, e qui la relativa soluzione proposta, in attesa del kernel 2.6.37, sperando che risulti più stabile da questo punto di vista.

lunedì 17 gennaio 2011

Joomla security base

Premessa: questo post è in fase di revisione ed aggiornamento; vedrò di migliorarlo col tempo lasciando la data di prima pubblicazione.

Si, lo so, è già uscita la 1.6 stable, ma il processo di migrazione sarà lungo (ci sono addirittura moltissimi siti ancora in 1.0) e presumibilmente non doloroso, specie per i template.
Quindi, non è male intanto rivedere, assemblare e possibilmente completare in un unico post le varie checklist sui requisiti e le procedure di sicurezza minimi che un sito in Joomla 1.5.x DEVE possedere od attuare.
Tenete conto che molte di queste impostazioni possono essere ottenute sia sulla versione 1.5.x che sulla versione 1.6 caricando sul sito l'ottima estensione gratuita (nella versione base) Akeeba, sia nelle funzionalità Back up che Admin Tool
NB L'admin tool consente anche di effettuare l'aggiornamento fino all'ultima versione della 1.5.x. Nel caso della versione italiana, akeeba non riesce a fare l'aggiornamento in quanto punta ai server di Joomla.org.
Se volete usare questa funzionalità del tool dovete quindi aver installato la versione inglese da Joomla.org ed il package corrispondente alla lingua italiana per il back end.


INSTALLAZIONE

Prova locale
Effettuare sempre una prova in locale del sito per verificarne la funzionalità. Installare, sul proprio PC, LAMP/XAMPP od analoghi

Hosting
Nella scelta dello spazio web, nel caso di hosting condiviso, scegliere hoster:
  • che non siano troppo a buon mercato;
  • che forniscano spazio gestito da server *nix Red Hat / CentOS / Debian;
  • in grado di fornire servizi SFTP (secure FTP), cioè sistemi di scambio dati tra locale e remoto in condizioni di sicurezza, al fine di uploadare e downloadare i dati in modo più controllato
  • che abbiano impostato la direttiva PHP register_globals su OFF; ciò al fine di poter utilizzare le proprie specifiche impostazioni di .htaccess e php.ini (NB con php6 questo problema non si presenterà più);
  • che garantisca la disponibilità dell'ultimo aggiornamento dei sistemi operativi e dei servizi server side (apache, php, mysql, ecc.);
  • che informi correttamente sulla policy di sicurezza e sugli eventi, anche negativi, che lo riguardano, e che intervenga rapidaente anche per problemi che ci riguardano da loro individuati e ci informi adeguatamente;
  • che consentano l'accesso ai log di sistema, utile in caso di problemi al nostro sito;
  • che gestisca direttamente il centro dati e garantisca adeguata ridondanza e backups;
  • accertarsi di non utilizzare hoster che facciano condividere lo spazio a troppi siti, soprattutto se questi sono siti di spammers o di porno ad intenso traffico ( Verificare con http://www.robtex.com/dns/ )
  • che possano offrire soluzioni di server dedicato a costi ragionevoli ed alta qualità, utile in caso di crescita del sito e del traffico annesso;
Installazione core
Utilizzare sempre, ove possibile, la versione più aggiornate di Joomla e delle estensioni/plugins aggiuntivi che si intende utilizzare

Non usare jos_ come tag delle tabelle del database (feature Akeeba)
Non usare "jos_" come prefisso delle tabelle. Il prefisso è richiesto in fase di installazione di Joomla, per cui basterà modificarlo.
Se è già stata eseguita l'installazione seguire le seguenti istruzioni:
b) (browser) entrare in phpmyadmin --> selezionare il database da modificare --> selezionare "export" --> assegnare un nome specifico al database (file name template) --> dare "esegui" --> il file .sql verrà salvato nella cartella scelta
a) (browser) entrare nel sito come amministratore --> configurazione --> server
Nel riquadro "configurazione database" alla voce "prefisso database" modificare il prefisso con quello scelto (ad es pippo_ ) e salvare. Verrà (ovviamente) segnalato un errore di lettura del database
NB!! attenzione a riportare correttamente il nuovo prefisso nella fase successiva!!;
c) (window manager) selezionare il file .sql salvato e farne una copia di riserva (non si sa mai)
d) aprire il file .sql con gedit o simili  --> selezionare "sostituisci" --> inserire nel campo "cerca" il valore jos_ e nel campo sostituisci il nuovo prefisso (ad es pippo_) --> dare "sostituisci" --> ripetere l'operazione per verificare che tutto sia stato effettivamente sostituito --> uscire dalla finestra "sostituisci" --> salvare
d) (browser) tornare in phpmyadmin --> selezionare il database originario --> selezionare tutte le tabelle --> selezionare "elimina" (drop) --> dare "yes"; a questo punto avremo una scatola vuota, cioè un database privo di tabelle;
f) selezionare importa --> selezionare il file .sql modificato --> dare "esegui".

Qui un video che descrive la procedura

Utilizzare nomi utente e password diversi e complessi per sito e database
Nome utente e password del database, e nome utente (di default admin, modificabile in seguito) e password dell'amministratore del sito, devono essere molto diversi tra loro e complessi (sequenze non intuitive di caratteri maiuscoli e/o minuscoli e simboli e numeri), al fine di rendere più complicati eventuali attacchi brute force


POST INSTALLAZIONE

Usare estensioni fidate
Non utilizzare estensioni non fidate, o perlomeno di cui non si può essere certi dei requisiti di qualità e sicurezza con cui sono state scritte, specie se provenienti da repository non ufficiali di Joomla.

Aggornamenti periodici
Mantenere sempre aggiornate la versione di Joomla in uso e quelle dei componenti aggiuntivi utilizzati e da utilizzarsi, ed effettuare gli upgrade appena disponibili.


Cancellare superadmin userid 62 e rinominare l'utente amministratore (feature Akeeba)
Andare in Sito --> Gestione utenti
Creare un nuovo utente con un suo nome, un suo nome utente e una sua password (ricordatevi tutto: sarà il nuovo login di amministratore) utilizzando termini insoliti e non riconoscibili (ad es non usate admin :-D ); inserite la mail di amministrazione, selezionate Super Administrator, mettete su NO il blocca utente e su SI ricevi le mail di sistema.
--> (NB se per caso avete la necessità di utilizzare la stessa mail del vecchio administrator, inserendola qui il sistema vi impedirà di salvare a causa della presenza dello stesso parametro nell'utente già presente.
A questo punto è necessario tornare nel menu utente, selezionare administrator (quello attualmente loggato) e modificare i parametri (basta aggiungere una lettera a caso in quelli di questo amministratore) che vi interessa riportare nel nuovo amministratore, in modo che non risultino identici). Create quindi il nuovo utente con i parametri che vi interessano<--
A questo punto avete due super amministratori, ma NE VEDRETE SOLO UNO, cioè quello con cui vi siete loggati.
Date esci in modo da tornare al login e loggatevi con i nuovi parametri che avete impostato (nuovo nome utente e nuova password)
Andate in Sito --> Gestione utenti e vedrete il vostro amministratore (quello con cui vi siete loggato) con user id 63 e quello precedente, che in questo momento ha i privilegi di administrator e non di super administrator, con l'user id 62.
A questo punto potete eliminare il vecchio amministratore o ridurne i privilegi a quelli di semplice utente.
Ripetendo la procedura otterrete un amministratore con user id 64, 65 ecc.


Permessi (feature Akeeba)
Impostare a file e cartelle i giusti permessi al fine di incrementare la sicurezza; normalmente sono: file = 644 e directory 755

Disabilitare componenti inutili
Pannello di controllo --> gestione Estensioni --> disabilita

Back up sito e database (feature Akeeba)
Effettuare back up sistematici del sito e del database e conservare le subversion !
Installare l'estensione akeebabackup e akeeba site admin

Abilitare htaccess
Entrare nella cartella del sito con i privilegi di aministratore e rinominare htaccess.txt in .htaccess
Verificare che sussistano i permessi per il server web (apache o www-data)
(browser) entrare nel sito come amministratore --> configurazione --> sito e nel modulo Configurazione SEO selezionare l'opzione "utilizza mod_rewrite"

Eliminare template position (tp=1)
Inserire in .htaccess :

# Start ?tp=1 prevention #
RewriteCond %{QUERY_STRING} tp=(.*)
RewriteRule ^(.*)$ index.php [F,L]
# End ?tp=1 prevention #

Disabilitare ricerca immagini dal file robots
Se non esiste, creare nella directory principale un file chiamato "robots.txt"
“...
User-agent: *
Disallow: /administrator/
Disallow: /cache/
Disallow: /components/
Disallow: /images/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
..."

Rimuovere Generation tag
templates/name-template/index.php :
riportare nell'header
<?php
// Remove the generator meta tag
$this->setGenerator(null);
?>

o, in modo più divertente (ma attenzione ad eventuali conflitti)  :-)
<?php
// Remove the generator meta tag
$this->setGenerator(Drupal);
?>

Nascondere la versione
Nel file .htaccess inserire:
<Files ~ "\.xml$">
Order allow,deny
Deny from all
Satisfy All
</Files>
E' probabile che queste linee siano già presenti entro il file sotto la voce :
## Deny access to extension xml files (uncomment out to activate)
Basta quindi eliminare il # iniziale per decommentarle e renderle attive

Settaggi Joomla e Php (feature Akeeba)
Impostare i parametri del sito in modo da incrementarne al massimo la sicurezza

Ricostruzione totale in caso di defacciamento od altro hackeraggio
Controllare i logs di sistema, modificare le password, rimuovere l'intera directory e ricostruire l'intero sito a partire da un back up "pulito"

mercoledì 12 gennaio 2011

Installare Joomla in locale su Ubuntu step by step con virtual host

Ma come, mi direte, ti dai alla concorrenza ? :-DDD
E poi, con tutti gli how to che ci sono per Ubuntu ?
Si, ma stavolta è per una buona causa (e per risolvere qualche piccolo tips... ;-) )
In ogni caso, sarò più breve dell'altra volta :-P

Installare LAMP


Aprire sistema --> amministrazione --> gestore pacchetti (synaptic)
Selezionare modifica --> selezionare per attività
Si aprirà una finestra: spuntare la voce LAMP server e dare OK.

In caso questa opzione non sia presente si può seguire la seguente procedura
NB marcatevi i dati (specialmente le password) che vi verranno via via richiesti, o diventerete matti :-| .


Installare Apache

Apache è il server web per eccellenza ed è quello che stiamo per installare, ma non è l'unico: ci sono anche Cherokee, Lighthttp, ecc., a vostra scelta.
Da terminale dare:

sudo apt-get install apache2

--> password root


Testare Apache

Copiare (o digitare) nello spazio URL del browser:

http://localhost/

Dovrà comparire la scritta "It works!"

Installare PHP

Da terminale dare:

sudo apt-get install php5 libapache2-mod-php5

Quindi riavviare Apache. Da terminale dare:

sudo /etc/init.d/apache2 restart


Verificare installazione PHP

Da terminale dare:

sudo gedit /var/www/testphp.php

per aprire un file chiamato phptest.php.
Copiare ed incollare entro il file la stringa:

<?php phpinfo(); ?>

Salvare e chiudere il file
Per verifica, copiare (o digitare) nello spazio URL del browser:

http://localhost/testphp.php


Installare MySQL

Da terminale, dare:

sudo apt-get install mysql-server

MySQL dovrebbe partire in automatico per richiedere l'impostazione della password dell'amministratore del database server. Qualora non succedesse, allora, da terminale dare:

mysql -u root

Al prompt di mysql inserire la seguente linea, inserendo al posto di yourpassword la nostra password scelta

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');

NB1 il punto e virgola finale è essenziale per comunicare a mysql la chiusura del comando

NB2 in caso di problemi con la password di mysql possiamo riconfigurare il servizio dando da terminale

sudo dpkg-reconfigure mysql-server

--> /// passo opzionale: se vogliamo pubblicare nella nostra rete privata (o in internet) il nostro server, va modificato il “Bind Address”, cioè l'indirizzo di rete di loopback del nostro pc al fine di farlo riconoscere dagli altri computer; nel caso di una rete privata è sufficiente inserire l'indirizzo di rete stabilito dal router per il nostro pc (ad es. 192.168.1.4).
Da terminale dare:

gksudo gedit /etc/mysql/my.cnf

Cambiare quindi la linea

bind-address = 127.0.0.1

sostituendo 127.0.0.1 (tipicamente il localhost) con l'indirizzo adeguato. Fine passo opzionale /// <--
.

Installare PhpMyAdmin

PhpMyAdmin è un ottimo (e semplice) tool lanciabile da browser per gestire il database server MySQL
Da terminale dare:

sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

Per far si che php possa lavorare con mysql bisogna modificare il file php.ini.
Per editarlo, dare da terminale:

gksudo gedit /etc/php5/apache2/php.ini

e decommentiamo (cioè togliamo il punto e virgola iniziale) dalla linea

;extension=mysql.so

(NB per trovare rapidamente la linea possiamo usare la funzione Trova... dal menu Cerca di Gedit inserendo la parola extension)
così da farla diventare:

extension=mysql.so

Salviamo e usciamo da Gedit.
Riavviamo infine Apache. Da terminale dare:

sudo /etc/init.d/apache2 restart

Verifichiamo il funzionamento digitando nel browser

http://localhost/phpmyadmin

Digitiamo la password per loggarci come amministratore di server database ed inseriamola nella finestra che comparirà.

Fine installazione LAMP

Installare Joomla
Scarichiamo la versione di Joomla che ci interessa (supponiamo che si chiami Joomla_1.x.x_ita - Stable) in una cartella qualunque (ad es. /home/utente/scaricati) e scompattiamola.
Per scompattarla, possiamo farlo come utente da terminale

cd /home/utente/scaricati

tar -xvzf Joomla_1 .x.x _ita – Stable.tgz

oppure possiamo farlo graficamente.
Apriamo Nautilus (o Dolphin o Konqueror o altro window manager), spostiamoci in scaricati, diamo tasto destro sul file archivio e digitiamo 'Estrai qui' (con Konqueror, scegliamo l'opzione 'autorileva la sottocartella')
Quindi apriamo Nautilus in modalità root (da terminale: sudo nautilus) o l'ottimo Krusader in modalità root (si, lo so, usare il window manager per fare 'ste cose non è da geek, ma chissenefrega, ogni tanto bisogna pur cambiare, no ? :-D ), copiamo la cartella estratta dentro la cartella /var/www/ e rinominiamola come ci interessa (ad es miojoomla)
Diamo quindi ad Apache (ricordiamoci che il trasferimento lo abbiamo fatto come root, cui appartiene la cartella) il controllo della cartella miojoomla modificando il proprietario ed il gruppo.
Verifichiamo con

cat /etc/group

che esista www-data, cioè l'utente speciale, con relativo gruppo, che Apache crea per scrivere nella cartella /var/www/.
Una volta verificato consegnamogli il controllo della cartella dando:

sudo chown -R www-data:www-data /var/www/miojoomla


Creare il database mysql per Joomla e l'utente amministratore del database
NB // --> Nota: Joomla è impostato con set di caratteri UTF. Spesso invece il database MySQL database viene impostato di default con collation latin1_xxxxxx_ci e ciò può causare problemi di visualizzazione nell'utilizzo di caratteri non latini (ad es cirillico).
Per fare in modo che Jomla lavori correttamente è necessario scegliere, all'atto della creazione del database, il collation UTF-8 Unicode (utf8) (va bene utf8-general-ci)
In caso di database già creati, sarà necessario effettuare il back up del database (non si sa mai) ed in seguito lanciare, per ogni tabella del database, la seguente query SQL al fine di modificarne l'impostazione:

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

fine nota <-- //

Nel browser digitiamo

http://localhost/phpmyadmin


inseriamo il nome scelto per il database (ad es joomladb), verifichiamo la collation utf8-general-ci e diamo Crea

Quindi selezioniamo il database nell'elenco sulla sinistra, scegliamo 'Privilegi', selezioniamo 'Crea un nuovo utente' (sarà l'utente che gestirà il database di Joomla durante l'amministrazione del sito Joomla)
Nella schermata inseriamo nel campo 'nome' il nome scelto (ad es joomlauserdb), nel campo 'host' inseriamo localhost, e nei campi password la password scelta (ad es (joomlapwdb), lasciando i grant (i privilegi) così come impostati di default, quindi salviamo.

NB la stessa operazione può essere fatta da linea di comando dando

mysql -u root -

per entrare come amministratore di mysql. Quindi (enter dopo ogni riga):

CREATE DATABASE joomladb;

GRANT ALL on joomladb.* TO ’ joomlauserdb’@’localhost’ IDENTIFIED BY ’joomlapwdb ’;

FLUSH PRIVILEGES;

EXIT;

Installare Joomla
Digitiamo


http://localhost/miojoomla ed avviamo l'installazione

Al termine, sarà necessario rimuovere la cartella installation presente dentro /var/www/miojoomla.
Potremo farlo tramite sudo Nautilus o Krusader root, oppure da terminale

sudo rm - R / var/www/miojoomla/installation

Fatto ! :-)


Per chi volesse trasferire in locale una installazione già esistente sul server sarà necessario:
- trasferire la cartella del sito dal server remoto via ftp in una cartella utente locale
- spostare (come root) la cartella in /var/www/
- trasferire i permessi della cartella ad Apache
- scaricare il database del sito, ad es via phpmyadmin fornito dal server del sito con l'opzione esporta (semprechè non sia stato impostato già il back up automatico quotidiano via email)
- importare il database nel server mysql locale con phpmyadmin locale
- verificare l'avvenuta associazione loggandosi nel sito come amministratore

PS addendum del 13/07/2011

Gestione dei virtual host

E' una cosa abbastanza semplice e nota, ma un breve riassunto posizionato qui penso possa essere di utilità, specie per chi trasferisce più di un sito da remoto a locale.

Qui una valida guida

Passo primo: verifichiamo che apache2 sia in grado di vedere i virtual host.

sudo gedit /etc/apache2/apache2.conf

la linea finale

Include /etc/apache2/sites-enabled/

deve essere decommentata (cioè non deve iniziare con un #)
Se c'è, rimuoviamolo e salviamo.
In questo modo apache2 è in grado di leggere i puntatori dei files di configurazione presenti nella cartella /etc/apache2/sites-enabled/ che corrispondono ai virtual host che ci interessano.

Passo secondo: creiamo i files di configurazione dei virtual host

Assumiamo che:
- la cartella contenente il sito (o che vogliamo contenga il sito se dobbiamo ancora crearlo) sia nominata miosito1
- la cartella sia posizionata entro la cartella /var/www - NB solo root ed apache2 possono scrivere dentro questa cartella - è possibile spostare la cartella in questa posizione con un file manager con privilegi di root, dando ad esempio sudo nautilus
- il proprietario della cartella miosito1 sia apache2 ed abbia su questa ed il suo contenuto i permessi adeguati (755); lo si può verificare, ed eventualmente modificare, graficamente chiedendo le proprietà alla cartella con il sudo nautilus di prima, oppure nel caso in cui si voglia usare la console diamo:

sudo chown -R www-data:www-data /var/www/

Creiamo a questo punto il file di configurazione di miosito1

sudo gedit /etc/apache2/sites-avaiable/miosito1

ed inseriamo 

<VirtualHost miosito1>

ServerAdmin webmaster@localhost
ServerName miosito1
#We want to be able to access the web site using www.miosito1 or miosito1
ServerAlias www.miosito1
DocumentRoot /var/www/miosito1
Errorlog /var/log/apache2/error.log
#if using awstats
ScriptAlias /awstats/ /usr/lib/cgi-bin/
#we want specific log file for this server
CustomLog /var/log/apache2/other_vhost_access.log combined

</VirtualHost>

Verifichiamo che nella cartella /etc/apache2/sites-enabled sia presente il link simbolico al file miosito1 (che abbiamo creato nella cartella sites-avaiable); se non ci fosse, creiamolo.

Passo terzo: creiamo gli alias, in modo da far capire al sistema di cercare il sito nella macchina locale e non in rete

sudo gedit /etc/hosts

ed aggiungiamo

127.0.0.1 miosito1
127.0.0.1 www.miosito1

quindi salviamo. In realtà non servono entrambe le linee, ma se vogliamo che il server trovi comunque la nostra cartella lasciamocele tutte e due, che non si sa mai :-).

Passo quarto: abilitiamo il virtual host

sudo a2ensite miosito1

//////////////// Nel caso in cui avessimo bisogno di disabilitarlo
//////////////// sudo a2dissite miosito1

infine riavviamo apache2

sudo /etc/init.d/apache2 restart

Fatto. Carichiamo il sito, e l'eventuale database, andiamo nel browser e digitiamo

http://localhost/miosito1

ed il sito magicamente comparirà