SMsoft – informatica e dintorni

varie su OSX, GNU/Linux e l'Open Source

Nascondere dettagli su Apache e PHP ai visitatori

Quando viene richiamata una pagina web vengono inviate al cliente una serie di informazioni che generalmente non sono visualizzate, perché interpretate dal browser, ma se effettuiamo una richiesta tramite telnet possiamo visionarle. Ad esempio:

telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1
HTTP/1.1 400 Bad Request
Date: Fri, 04 Sep 2009 14:48:57 GMT
Server: Apache/2.0.59 (Unix) PHP/5.2.6 DAV/2
Content-Length: 315
Connection: close
Content-Type: text/html; charset=iso-8859-1

In grassetto ho evidenziato i dettagli relativi alla versione di apache e di php. In alcuni casi è possibile anche vedere altre informazioni.
Per evitare che il server web risponda con questi dettagli, dobbiamo modificare il file di configurazione, generalmente apache2.conf, ed inserire (o modificare nel caso le direttive siano già presenti con altri valori):
ServerSignature Off

ServerTokens Prod

Oltre a questa variazione nella configurazione di Apache, è opportuno modificare anche PHP in modo che non fornisca dettagli sulla versione (questo rimuoverà la riga X-Powered-By nell’header delle pagine web php richiamate). Occorre modificare il file php.ini ed in particolare la direttiva:
expose_php = Off

Fatto questo basterà riavviare apache, con il classico:
#/etc/init.d/apache2 restart

ed infine si potrà testare che non vengano più mostrate queste informazioni:
telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1
HTTP/1.1 400 Bad Request
Date: Fri, 04 Sep 2009 15:05:13 GMT
Server: Apache
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1

Enjoy

 

Girare le richieste che vengono da un IP verso un altro IP con iptables

Segue un semplice script in bash che utilizza iptables per creare una sorta di “ponte” tra due macchine. Questo può servire se una delle due macchine non riesce a connettersi direttamente con la seconda, ma potrebbe utilizzare una terza macchina (quella in cui eseguiremo lo script) come “ponte” per  raggiungerla. Ipotizziamo che l’IP della prima sia 10.109.7.180, che l’IP della seconda sia 10.109.11.13 e che vogliamo giare le richieste provenienti dalla porta 8080 della prima macchina verso la porta 8080 della seconda macchina, lo script sarà:

 bash |  copy code |? 
1
#!/bin/sh
2
echo 1 >/proc/sys/net/ipv4/ip_forward
3
iptables -t nat -A POSTROUTING -s 10.109.7.180/32 -o eth0 -j MASQUERADE
4
iptables -t nat -A PREROUTING -p tcp --dport 8080 -i eth0 -j DNAT --to \
5
10.109.11.13:8080
6
iptables -A FORWARD -p tcp -d 10.109.11.13 --dport 8080 -j ACCEPT
7
iptables -A INPUT -p tcp -m state --state NEW --dport 8080 -i eth0 -j ACCEPT

Installare pacchetti da sorgenti su Debian

Come sicuramente sapete, è possibile installare software precompilato nella vostra Linux Box basata su Debian, scaricandolo dai vari repository tramite il comodo apt-get. In alcuni casi potrebbe essere utile compilare il software manualmente, perché è necessario modificare qualche parametro di configurazione, oppure aggiungere qualche funzionalità oppure installare una particolare patch. La procedura non è molto complessa e ci si può basare sui sorgenti utilizzati nei repository Debian per i pacchetti precompilati.

Vediamo come procedere compilando un pacchetto di esempio. Scegliamo di compilare apache2 a cui aggiungiamo una patch.
Innanzitutto bisogna assicurarsi di avere il riferimento a deb-src nel file /etc/apt/sources.list. Nel caso non ci sia nessuna riga di questo tipo, se ne può aggiungere una come segue:

deb-src http://ftp.it.debian.org/debian/ testing/updates main contrib non-free

Installiamo intanto alcuni tools che ci serviranno successivamente per la compilazione:
apt-get install dpkg-dev build-essential devscripts

Ora creiamo le cartelle in cui lavorare:
# mkdir /usr/src/apache2-src

# cd /usr/src/apache2-src

# apt-get source apache2

Ora nella cartella troverete diversi file:
# ls

apache2_2.2.9  apache2_2.2.9-10+lenny2.diff.gz  apache2_2.2.9-10+lenny2.dsc  apache2_2.2.9.orig.tar.gz

A questo punto possiamo spostarci nella cartella apache2-2.2.9 con i sorgenti ed effettuare le necessarie modifiche.
Bene, ora scarichiamo i pacchetti che contendono le librerie necessarie per la compilazione con:

# apt-get build-dep apache2

Ora entriamo nella cartella con i sorgenti ed installiamo la patch che ipotizziamo sia /tmp/apache2.patch
# cd apache2_2.2.9

# patch -p1 < /tmp/apache2.patch

Infine, per avviare la compilazione vera e propria, dalla cartella dove sono i sorgenti del pacchetto che abbiamo appena personalizzato, digitiamo:
# dpkg-buildpackage -rfakeroot -uc -b

dove le opzioni servono per:
b = Crea solo il pacchetto binario e non quello dei sorgenti
-uc = Non crea il file .changes

ATTENZIONE: Per passare opzioni aggiuntibe alla procedura di compilazione, si può inizializzare la variabile d'ambiente DEB_BUILD_OPTIONS

DEB_BUILD_OPTIONS="--enable-gui --enable-radio" fakeroot debian/rules binary

Per passare parametri al MakeFile, come ad esempio l'uso del gcc 3.4:
CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui --enable-radio" fakeroot debian/rules binary

A questo punto i pacchetti (binario e librerie) sono pronti e sono stati creati nella cartella di livello superiore. Spostiamoci in tale cartella ed installiamo il pacchetto di cui abbiamo bisogno tra quelli disponibili:
# cd ..

# ls

# dpkg -i XXXXXXX.deb

dove XXXXXXX.deb è chiaramente il pacchetto da noi scelto per l'installazione

Installare red5 su Debian

L’installazione di red5 (alternativa Open Source al Flash Media Server di Adobe) su Debian è molto semplice. E’ necessario avere java 6 installato e per l’installazione su Etch basta seguire questa procedura.

Successivamente i passi da fare sono:

apt-get install subversion

apt-get install dpkg-dev debhelper dh-make devscripts fakeroot

creiamo la cartella di lavoro per compilare il tutto:
mkdir /usr/src/red5

cd /usr/src/red5

recuperiamo ant che ci servirà tra poco:
wget http://apache.mirror.transip.nl/ant/binaries/apache-ant-1.7.1-bin.tar.gz

tar zxvf apache-ant-1.7.1-bin.tar.gz

mv apache-ant-1.7.1 /usr/local/ant

export ANT_HOME=/usr/local/ant

A questo punto si scarica e si compila l’ultima revisione di red5
svn co http://red5.googlecode.com/svn/java/server/trunk red5-trunk

cd red5-trunk

/usr/local/ant/bin/ant

Ora red5 è compilato e possiamo procedere con l’installazione:
mkdir /usr/local/red5
cp -R dist/* /usr/local/red5/

Infine avviamo red5 con:
cd /usr/local/red5

sh red5.sh &

Per verificare che sia in esecuzione, basterà eseguire:
netstat -ant

e controllare che le porte 5080 e 8088 siano attive. Le porte possono essere modificate nel file /usr/local/red5/conf/red5.properties

Ora basterà aprire il browser con l’indirizzo del server, es http://www.smsoft.it:5080 e verrà visualizzata la pagina di default di red5.

Enjoy…

Installare il Flash Player 10 su Debian 5 – Lenny ed Iceweasel

Debian di default installa il browser web iceweasel. L’installazione del Flash Player 10 non è immediata su questo browser, perché non ufficialmente supportato.

E’ comunque possibile utilizzare il Flash Player 10 su Iceweasel (ed in generale sui browser istallati sulla vostra Debian) seguendo questa procedura.

Innanzitutto va aggiunto il repository lenny-backports al vostro /etc/apt/sources.list nel seguente modo:

deb http://www.backports.org/debian lenny-backports main contrib non-free

Successivamente va aggiornato l’archivio di apt-get con:
apt-get update

e va installata la chiave del repository in apt con:
apt-get install debian-backports-keyring

Fatto questo, per installare il Flash Player basterà digitare nella shell:
apt-get install flashplugin-nonfree

ATTENZIONE: Affinché Flash Player funzioni con pulse, è necessario indicarlo a libasound nel file ~/.asoundrc:
pcm.pulse {
    * type pulse
}
ctl.pulse {
    * type pulse
}
pcm.!default {
    * type pulse
}
ctl.!default {
    * type pulse
}

NOTA: per aggiornare il pachetto flashplugin-nonfree basta il classico:
apt-get update
apt-get upgrade

Per aggiornare invece Adobe Flash Player occorre eseguire:
/usr/sbin/update-flashplugin-nonfree --install

chkconfig su Debian/Ubuntu

Sulle distribuzioni che usano il formato rpm per i pacchetti, c’è l’utility chkconfig che consente di vedere/gestire in maniera grafica i processi che vanno avviati al boot.

Sulle distribuzioni basate su Debian, è possibile utilizzare sysv-rc-conf ovvero un gestore di run-level per sistemi basati su SysV init scrip.
Su Debian l’installazione è molto semplice e si può fare con apt-get:
apt-get install sysv-rc-conf

L’uso è altrettanto semplice: basta richiamare lo script digitando sysv-rc-conf e si vedrà l’elenco degli script di init e dei vari run-level.

Page optimized by WP Minify WordPress Plugin