Archivio

Archivio per la categoria ‘Apache’

Installare ionCube su Debian

11 febbraio 2010 loade Nessun commento

In questa guida vedremo come installare l’encoder ionCube per criptare le vostre pagine PHP su Debian Lenny.
La prima cosa da fare è scaricare l’archivio dal sito di riferimento:

wget http://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz

A questo punto possiamo scompattare l’archivio:

tar zxvf ioncube_loaders_lin_x86.tar.gz

Consiglio prima di proseguire, la lettura del README.txt, presente nella directory ioncube.
Spostiamo la directory appena scompattata in un percorso definitivo:

mv ioncube /usr/local/

Ora dobbiamo inserire nel php.ini il modulo di ionCube, in base alla versione di PHP installata:

vi /etc/php5/apache2/php.ini
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so

Riavviamo apache:

/etc/init.d/apache2 stop
/etc/init.d/apache2 start

Infine nell’output del phpinfo troveremo:

with the ionCube PHP Loader v3.3.10, Copyright (c) 2002-2009, by ionCube Ltd.

Installare mod_fcgid con apache2 in CentOS GNU/Linux

24 dicembre 2009 Luca Nessun commento

apacheDi default il web server apache esegue gli script php di un sito con l’utente “www-data”. Per permettere ad uno script di memorizzare dati all’interno di una directory, allora i permessi di quest’ultima devono essere settati a 777 oppure il proprietario della cartella deve essere l’utente “www-data”. In questo caso, se sul vostro server web e’ attivo piu’ di un sito internet, allora uno script di un dominio potrebbe modificare i dati di un’altro. Come fare per ovviare a questo problema?  Eseguendo gli script di ogni sito con un utente distinto installando la suexec, mod_fcgid ed utilizzando il php in modalita’ cgi. Piu’ difficile a dirsi che a farsi, bastano difatti pochi comandi e qualche minuto per configurare il tutto:

1) Occorre disabilitare SELinux

setenforce 0

Editare il file /etc/selinux/config ed impostare SELINUX a ‘disable’

SELINUX=disabled

2) Installare mod_fcgid. Questo modulo  non e’ disponibile nel repository ufficiale di CentOS ma possiamo prelevarlo da un’altra fonte

cd /etc/yum.repos.d/
wget http://centos.karan.org/kbsingh-CentOS-Extras.repo

Editare /etc/yum.repos.d/kbsingh-CentOS-Extras.repo ed impostare gpgcheck a 0 ed enabled a 1 nella sezione [kbs-CentOS-Testing]:

[...]
[kbs-CentOS-Testing]
gpgcheck=0
enabled=1
[..]

Eseguire adesso questo comando

yum install mod_fcgid

4)
Commentare tutte le righe del file /etc/httpd/conf.d/php.conf (per evitare che il php venga caricato come modulo), anteponendo il carattere # ad inizio riga

5)
Adesso dovremo forzare il PHP a correggere il percorso del cgi in modo conforme alle specifiche PATH_INFO/PATH_TRANSLATED. Bastera’ aggiungere nel php.ini (/etc/php.ini) questa direttiva:

cgi.fix_pathinfo = 1

6) Creiamo l’utente con cui dovranno essere eseguiti gli script del sito

groupadd sito1
useradd -s /bin/false -d /var/www/sito1 -m -g web1 web1
chmod 755 /var/www/sito1

7) Creiamo la cartella che dovra’ ospitare i file del sito

mkdir -p /var/www/sito1/htdocs
chown sito1:sito1 /var/www/sito1/htdocs

8) Creiamo il wrapper che utilizzeremo per avviare il php e configurare mod-fcgid:

mkdir -p /var/www/fcgid-conf-sito1

9) Inseriamo queste righe nel file /var/www/fcgid-conf-sito1/sito1.conf

#!/bin/sh
export PHPRC=/etc/
export PHP_FCGI_MAX_REQUESTS=400
export PHP_FCGI_CHILDREN=2
exec /usr/bin/php-cgi

PHPRC,PHP_FCGI_MAX_REQUESTS e PHP_FCGI_CHILDREN sono opzionali e se verranno omessi sara’ impostato il valore di default. Sono utili per poter indicare il percorso del php.ini, permettendo cosi’ di utilizzare una configurazione diversa da sito a sito, oppure per definire il numero di child per processo ed il numero di richieste che puo’ gestire prima di terminare.

10) Impostiamo i corretti permessi/proprietario

chmod 755 /var/www/fcgid-conf-sito1/sito1.conf
chown -R sito1:sito1 /var/www/fcgid-conf-sito1

11) Creiamo in /etc/httpd/conf/httpd.conf la configurazione del sito

<VirtualHost *:80>
ServerName www.sito1.it
ServerAdmin postmaster@sito1.it
DocumentRoot /var/www/sito1/htdocs/

<IfModule mod_fcgid.c>
SuexecUserGroup sito1 sito1
PHP_Fix_Pathinfo_Enable 1
<Directory /var/www/sito1/htdocs/>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/fcgid-conf-sito1/sito1.conf .php
Order allow,deny
Allow from all
</Directory>
</IfModule>

# ErrorLog /var/log/apache2/error.log
# CustomLog /var/log/apache2/access.log combined
ServerSignature Off

</VirtualHost>

12) Salvare il file e riavviare il web server

/etc/init.d/httpd restart

Categorie:Altro, Apache, How-to, Server, Sicurezza Tag:

Disabilitare SSLv2 e abilitare SSLv3 per le connessioni https

30 ottobre 2009 loade Nessun commento

In questa guida descriveremo come configurare apache per accettare connesioni solo con SSLv3, nel caso il vostro server accetti ancora l’insicuro SSLv2. Per l’installazione del webserver e la configurazione di openssl potete consultare questa guida.

Editiamo questo file, se non esiste possiamo crearlo:

vi /etc/apache2/conf.d/ssl.conf

SSLProtocol -All +SSLv3 +TLSv1
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:!SSLv2:+EXPRestart

Ora possiamo riavviare il webserver:

/etc/init.d/apache2 restart

Per verificare che venga correttamente utilizzato SSLv3:

openssl s_client -connect localhost:443 -ssl3 -no_ssl2

Dovremmo ottenere qualcosa del genere:


SSL handshake has read 1464 bytes and written 317 bytes

New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit

Per essere sicuri che il nostro server non accetti connessioni con il vecchio protocollo, possiamo forzare il comando openssl a connettersi con la versione 2:

openssl s_client -connect localhost:443 -ssl2 -no_ssl3

Questo messaggio d’errore ci assicura che il nostro webserver accetta solo connessioni SSLv3:

CONNECTED(00000003)
3374:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:s2_pkt.c:428:

Categorie:Altro, Apache, Sicurezza Tag: , , ,

Installare lighttpd su Debian, CentOS e Fedora

28 ottobre 2009 Luca Nessun commento

lighttpdAvete intenzione di installare un web server su una macchina dotata di poca memoria RAM o CPU limitata? In questo caso probabilmente Lighttpd (pronunciato lighty) sara’ la vostra scelta vincente! I suoi punti di forza sono: minimo consumo di risorse ed elevate prestazioni. A differenza del web server  Apache dispone di un numero ridotto di moduli ed uno dei maggiori svantaggi e’ che  se dovete installare sul vostro sito un cms, probabilmente sara’ necessario ritoccare qualche regole di rewrite.  Niente paura pero’, in rete trovere molte informazioni a riguardo e a configurazione ultimata la soddisfazione ripaghera’ ogni sforzo.

Ecco come installarlo

In Debian:

apt-get update
apt-get install lighttpd php5-cgi

Con CentOS/Fedora:

yum install zlib pcre php-cli

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

yum install lighttpd lighttpd-fastcgi

/etc/init.d/lighttpd start

Eseguendo “ps ax” vedrete gia’ lighttpd in esecuzione:

www-data 11321  0.0  1.9  53616  1268 ?        S    19:17   0:00 /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf

e collegandovi al server con un browser web visualizzerete la pagina di benvenuto (in CentOS/Fedora un messaggio di errore perche’ manca il file index del sito ;)
La configurazione di default crea un sito con la document root in

/var/www/ (Debian)

/srv/www/lighttpd/ (CentOS/Fedora)

In CentOS/Fedora dobbiamo eseguire anche questo comando per far eseguire il servizio all’avvio del server

chkconfig –level 345 lighttpd on

Integriamo adesso l’interprete php.
Forziamo il PHP a correggere il percorso del cgi in modo conforme alle specifiche PATH_INFO/PATH_TRANSLATED editando /etc/php5/cgi/php.ini (in Debian)   e decommentando (togliendo il carattere ‘;’ da inizio riga) la direttiva “cgi.fix_pathinfo” ed impostando il suo valore a 1

cgi.fix_pathinfo=1

In CentOS invece apriamo il file /etc/php.ini e scriviamo  cgi.fix_pathinfo=1 come ultima riga

Adesso dobbiamo far caricare il modulo fastcgi a lighttpd.
Questa e’ la procedura Debian

Accediamo nella cartella “conf-enabled”

cd /etc/lighttpd/conf-enabled/

creiamo un link simbolico alla configurazione di mod_fastcgi

ln -s ../conf-available/10-fastcgi.conf

E’ necessario impostare alla direttiva “bin-path” presente nel file 10-fastcgi.conf il corretto percorso del binario php-cgi. Apriamo quindi il file e la riga “bin-path”  in questo modo

“bin-path” => “/usr/bin/php-cgi”,

N.B. Verificate che il file /usr/bin/php-cgi esista

Questa e’ la procedura per CentOS/Fedora

Apriamo il file  lighttpd.conf e decommentiamo il modulo  mod_fastcgi (in pratica dobbiamo togliere il carattere # ad inizio riga)

Poi aggiungiamo queste istruzioni a fine file:

fastcgi.server             = ( “.php” =>
( “localhost” =>
(
“socket” => “/tmp/php-fastcgi.socket”,
“bin-path” => “/usr/bin/php-cgi”
)
)
)

Riavviamo il serizio per convalidare le nuove impostazioni

/etc/init.d/lighttpd restart

Pubblicando questo file

/var/www/info.php (Debian)

/srv/www/lighttpd/info.php (CentOS/Fedora)

con questo contenuto

<?php
phpinfo();
?>

Avremo modo (accedendo con un browser web all’indirizzo www.tuosito.it/info.php) di visualizzare la configurazione del php installato.

Se sul server volessimo ospitare piu’ di un sito dovremo abilitare mod_evhost.

Andiamo a creare le cartelle dei siti

Debian:

mkdir -p /var/www/virtual_hosts/www.sito1.it/htdocs
mkdir -p /var/www/virtual_hosts/www.sito2.it/htdocs

CentOS/Fedora:

mkdir -p /srv/www/virtual_hosts/www.sito1.it/htdocs
mkdir -p /srv/www/virtual_hosts/www.sito2.it/htdocs

Creiamo una pagina di benvenuto per entrambi i domini

Debian:

echo “Benvenuto nel sito1″ > /var/www/virtual_hosts/www.sito1.it/htdocs/index.html
echo “Benvenuto nel sito2″ > /var/www/virtual_hosts/www.sito2.it/htdocs/index.html

CentOS/Fedora:

echo “Benvenuto nel sito1″ > /srv/www/virtual_hosts/www.sito1.it/htdocs/index.html
echo “Benvenuto nel sito2″ > /srv/www/virtual_hosts/www.sito2.it/htdocs/index.html

Ora editiamo la configurazione di lighttpd (/etc/lighttpd/lighttpd.conf).
Abilitiamo “mod_evhost” decommentando il modulo dal gruppo “server.modules”, bastera’ eliminare il carattere # ad inizio riga. In questo modo:

server.modules              = (
“mod_access”,
“mod_alias”,
“mod_accesslog”,
“mod_compress”,
#           “mod_rewrite”,
#           “mod_redirect”,
“mod_evhost”,
#           “mod_usertrack”,

Adesso a fine file possiamo aggiungere queste righe, ed impostare la document root dei siti

$HTTP["host"] == “www.sito1.it” {
evhost.path-pattern = “/var/www/virtual_hosts/www.sito1.it/htdocs/”
}

$HTTP["host"] == “www.sito2.it” {
evhost.path-pattern = “/var/www/virtual_hosts/www.sito2.it/htdocs/”
}

N.B. Adattate path-pattern con il percorso associato ai vostri siti.

Salviamo il file e riavviamo il servizio

/etc/init.d/lighttpd restart

Cliccando QUI accederete alla guida sull’installazione di proftpd in debian per poter aggiornare i siti via ftp