Hosting specifico per Joomla! Relatori: Marco Mangione, Carlo Granisso Azienda: COLT Engine S.r.l. www.joomlahost.it Joomladay 19 gennaio 2008
Hosting specifico per Joomla! Joomla Joomla! is one of the most powerful Open Source Content Management Systems everything from Systems on the planet.. It is used all over the world for from simple websites to complex corporate applications. Joomla! is easy to install, simple to manage,, and reliable. Joomla Joomla! è uno dei più potenti e versatili sistemi OpenSource per la creazione di portali sul Pianeta. E E usato nel mondo per tutto: dal semplice sito web alle applicazioni corporate complesse. Joomla! È facile da installare, semplice da gestire e affidabile
Perché il suphp ci viene in aiuto Installare Joomla!! senza modificare i permessi a files e cartelle drwxr-x--- 3 carlo apache 4096 2008-01-13 18:42. drwx--x--x 7 carlo carlo 4096 2008-01-13 18:42.. -rwxr-xr-x 1 carlo carlo 561 2007-10-12 15:44 400.shtml -rwxr-xr-x 1 carlo carlo 654 2007-10-12 15:43 401.shtml -rwxr-xr-x 1 carlo carlo 647 2007-10-12 15:39 403.shtml -rwxr-xr-x 1 carlo carlo 515 2007-05-08 06:17 404.shtml -rwxr-xr-x 1 carlo carlo 526 2007-10-12 15:34 500.shtml drwxr-xr-x 2 carlo carlo 4096 2008-01-13 18:42 cgi-bin -rwxr-xr-x 1 carlo carlo 1513 2008-01-13 18:42 index.html -rwxr-xr-x 1 carlo carlo 13954 2006-09-16 02:11 logo.jpg
I PERMESSI: QUESTI SCONOSCIUTI 777? 755? 444? Per ciascun gruppo di permessi corrisponde una tipolgia di utente: USER, GROUP, OTHER. A ciascuna azione (Read ( identificazione: Read, Write, Execute) ) corrisponde un codice di 4 -> Read 2 -> Write 1 -> Execute Un permesso 777 777 corrisponde a: USER: 4 (Read ( Read) ) + 2 (Write ( Write) ) + 1 (Execute ( Execute) ) = 7 GROUP: 4 (Read ( Read) ) + 2 (Write ( Write) ) + 1 (Execute ( Execute) ) = 7 OTHER: 4 (Read ( Read) ) + 2 (Write ( Write) ) + 1 (Execute ( Execute) ) = 7
Differenze di installazione tra hosting compatibile e NON Hosting Joomla! NON compatibile Hosting Joomla! compatibile
PARAMETRI PHP.INI safe Mode OFF session.save_path SCRIVIBILE display_errors ON file_uploads ON magic_quotes_gpc ON magic_quotes_runtime OFF register_globals OFF output_buffering OFF session.auto_start OFF
UN ESEMPIO DI FILE.HTACCESS ########## Begin - Rewrite rules to block out some common exploits ## If you experience problems on your site block out the operations listed below ## This attempts to block the most common type of exploit `attempts` to Joomla! # # Block out any script trying to set a mosconfig value through the URL RewriteCond %{QUERY_STRING} mosconfig_[a-za-z_]{1,21}(= \%3D) [OR] # Block out any script trying to base64_encode crap to send via URL RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR] # Block out any script that includes a <script> tag in URL RewriteCond %{QUERY_STRING} (\< %3C).*script.*(\> %3E) [NC,OR] # Block out any script trying to set a PHP GLOBALS variable via URL RewriteCond %{QUERY_STRING} GLOBALS(= \[ \%[0-9A-Z]{0,2}) [OR] # Block out any script trying to modify a _REQUEST variable via URL RewriteCond %{QUERY_STRING} _REQUEST(= \[ \%[0-9A-Z]{0,2}) # Send all blocked request to homepage with 403 Forbidden error! RewriteRule ^(.*)$ index.php [F,L] # ########## End - Rewrite rules to block out some common exploits php_flag register_globals ON php_flag safe_mode Off
Il buon funzionamento di un sito non dipende solo dall hosting hosting ma anche dal webmaster. Se da un lato ci sono stati sforzi da parte di sviluppatori e hosters affinché l utilizzo di Joomla!! potesse essere il più semplice possibile, dall altra altra è necessario anche un intervento da parte dell utente in modo che il suo sito web possa continuare a funzionare in maniera ottimale.
Riparare e ottimizzare le tabelle Un sito web è come un automobile: ecco perché ogni tanto bisogna fargli il tagliando. phpmyadmin può aiutarci nei controlli con due funzioni: Riparazione delle tabelle Ottimizzazione dei dati Massimo rendimento con il minimo sforzo
ESEMPIO DI RIPARAZIONE
L ottimizzazione non basta a volte è necessario intervenire direttamente sulle queries o sugli indici delle tabelle. L utilizzo di indici duplicati rallenta le operazioni di inserimento e ricerca
DIFFERENZE SULLA TABELLA PRIMA. SELECT a. *, MAX( b.time ) AS lastpost FROM jos_sb_messages AS a LEFT JOIN jos_sb_messages AS b ON b.thread = a.thread WHERE a.parent = '0' AND a.catid = 6 AND a.hold = '0' GROUP BY id ORDER BY ordering DESC, lastpost DESC LIMIT 240,15; Con tabelle che hanno migliaia di records è opportuno analizzare le queries ricorrenti per verificare su quali campi vengono eseguite le operazioni di JOIN e WHERE DOPO I campi time e hold vengono indicizzati
E SULLE QUERIES PRIMA Una query non indicizzata può impiegare parecchi secondi alla sua prima esecuzione su tabelle non ottimizzate a dovere. Se la stessa viene eseguita una seconda volta impiega decisamente meno perché MySQL la trova nella cache. DOPO Eseguita su una tabella ottimizzata, anche la prima volta, ha un tempo d esecuzione inferiore: gli indici permettono un accesso diretto al record senza scansire interamente la tabella e riducendo i tempi di risposta.
NON E E SEMPRE COLPA DEL SERVER Errare humanum est, perseverare autem diabolicum In campo informatico la sicurezza al 100% NON ESISTE!
ANCHE GLI SVILUPPATORI COMMETTONO ERRORI Lo sviluppo di software non è mai esente da bugs nel codice: dimenticarsi di aggiornare un componente marcato come fallato è un grave errore che può compro- -mettere la stabilità del vostro sito e del server su cui è ospitato. http://help.joomla.org/component/option,com_easyfaq/task,view/id,186/itemid,268/
GLI AGGIORNAMENTI SONO UN MUST MUST Aggiornare i componenti è il dovere di ogni buon webmaster. Se è segnalato un bug NON corretto è bene disattivare i componenti interessati in attesa di un fix e/o cercarne uno alternativo
GLI HACKERS SFRUTTANO BUGS NON CORRETTI E possibile sfruttare falle di sicurezza per creare delle interrogazioni al database per aumentare il load del server o cancellare dati al sito. Joomla! è affidabile tenendo aggiornati componenti. suphp aiuta l analisi l e l identificazione l dello USER causa del problema
IDENTIFICARE IL PROBLEMA CON suphp Con suphp possiamo sapere quale USER sta causando problemi al server Senza suphp si vedono solo i processi in esecuzione con uno USER generico che non permette di individuarne la causa
UNA DIRETTA CONSEGUENZA DEI BUG NON CORRETTI: LO SPAM L utilizzo di componenti per i form mail che presentano bug di sicurezza è una delle cause maggiori di SPAM. Conseguenze: Inserimento dell IP del server nelle blacklist mondiali Inserimento dell IP del server nelle blacklist interne providers interne dei Soluzioni: Non esiste una vera è propria soluzione Tenere sempre aggiornato il componente o sostituirlo con un altro sicuro sicuro Inserire il codice grafico di conferma
PRESENZA NELLE BLACKLIST: NON E E SEMPRE LO SPAMMER A FAR DANNO Spesso l errato l utilizzo di mailinglist o newsletter induce i sistemi antispam a marcare l IP l del server. Soluzioni: Scaglionare l invio l delle mail a blocchi Inviare i blocchi mail impostando un intervallo temporale tra un gruppo e l altro l
DOVERI DEL PROVIDER Non basta aggiornare i componenti e Joomla! alle ultime versioni. Bisogna: Tenere aggiornati PHP E MySQL Applicare patch al S.O. Fornire il minor numero possibile di chance ai lamer affamati di siti web e server Dal 01 gennaio 2008 gli sviluppatori di PHP hanno ufficialmente abbandonato lo sviluppo e il supporto per le versioni 4.4.x e rilasciata la 4.4.8
Hosting specifico per Joomla! Relatori: Marco Mangione, Carlo Granisso Azienda: COLT Engine S.r.l. www.joomlahost.it Joomladay 19 gennaio 2008