Archive for category sistemi
Nvidia – Come far funzionare la tecnologia Optimus su Ubuntu 11.10
Chi (come me) ha incautamente acquistato un nuovo notebook con scheda video Nvidia e tecnologia Optimus, sperando di avere l’acceleratore 3D pienamente supportato, si č sbagliato di grosso. A quanto pare Nvidia non ha alcuna intenzione di rendere compatibile questa tecnologia con Linux (gli auguro di fare la stessa fine che hanno fatto fare ad SGI), pero’ non tutto e’ perduto, il progetto Bumblebee fortunatamente ci viene in aiuto:
Per prima cosa facciamo un po’ di pulizia nel caso che abbiate smandruppato pesantemente la vostra box con inutili driver Nvidia, se avete installato i driver scaricati da nvidia.com, e il vostro X server non parte piu’:
# nvidia-uninstall
# rm /etc/X11/xorg.conf
# apt-get --reinstall install libgl1-mesa-glx
# reboot
Installiamo Bumblebee:
# wget https://raw.github.com/Bumblebee-Project/Bumblebee/master/cleanup
# chmod +x cleanup
# ./cleanup
# ppa-purge ppa:mj-casalogic/ironhide
# add-apt-repository ppa:ubuntu-x-swat/x-updates
# add-apt-repository ppa:bumblebee/stable
# apt-get update
# apt-get install bumblebee
# usermod -a -G bumblebee $USERNAME
# reboot
Per usufruire dell'acceleratore 3D sara' necessario lanciare il programma da terminale aggiungendo 'optirun':
# optirun glxinfo
@2012-01-17
Dopo alcuni giorni di utilizzo posso asserire con certezza quanto segue:
bumblebee in questo stadio di sviluppo č praticamente inutile, rassegnatevi!
Apache2 – mod_evasive
Vediamo come prevenire attacchi DDOS con questo modulo di apache:
# up2date -i httpd-devel
# cd /usr/local/src
# wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
# tar -zxvf mod_evasive_1.10.1.tar.gz
# cd mod_evasive
# /usr/sbin/apxs -cia mod_evasive20.c
Adesso aggiungiamo quanto segue in /etc/apache2/apache2.conf
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
</IfModule>
# /etc/init.d/apache2 restart
Apache2: nascondere informazioni generali e versione di PHP
Per prima cosa editare /etc/apache2/apache2.conf e aggiungere le seguenti 2 direttive:
ServerTokens ProductOnly
ServerSignature Off
Adesso sitemiamo anche il php editando i seguenti files/etc/php5/apache2/php.ini e /etc/php5/cli/php.ini e modificando in entrambi i files:
expose_php On
in
expose_php Off
/etc/init.d/apache2 restart
Nginx & Ubuntu 10.04 – SSL reverse proxy
Ho sempre preferito HAproxy nel vasto (nemmeno troppo) panorama dei reverse-proxy fino a quando non mi sono accorto che non č in grado di gestire nativamente i certificati ma č necessaria l’implementazione di STunnel, ovvero, secondo me, di un accrocchione epico. Qui di seguito vedremo come implementare NGiNX con supporto SSL attivo.
Recuperiamo tutto il software necessaio alla compilazione:
sudo aptitude -y install build-essential
sudo aptitude -y install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev
Recuperiamo i sorgenti e compiliamo:
cd /usr/src/
wget http://nginx.org/download/nginx-1.0.6.tar.gz
tar zvxf nginx-1.0.6.tar.gz
cd nginx-1.0.6
./configure --sbin-path=/usr/local/sbin --with-http_ssl_module
make && make install
Creiamo lo script di init:
nano /etc/init.d/nginx
e mettiamo al suo interno quanto segue:
#!/bin/sh
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx rProxy server
# Description: starts nginx using start-stop-daemon
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/nginx
NAME=nginx
DESC=nginx
test -x $DAEMON || exit 0
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
--exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
--exec $DAEMON
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
/usr/local/nginx/logs/$NAME.pid --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --pidfile \
/usr/local/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
--exec $DAEMON
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0
rendiamolo esguibile all’avvio del server:
sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults
creiamo la struttura in apache style per gestire i vhosts:
sudo mkdir /usr/local/nginx/sites-available
sudo mkdir /usr/local/nginx/sites-enabled
modifichiamo nginx.conf e cancelliamo tutto il suo contenuto:
echo " " > /usr/local/nginx/conf/nginx.conf
e mettiamo al suo interno:
user www-data www-data;
worker_processes 4;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay off;
keepalive_timeout 5;
gzip on;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml
application/xml+rss text/javascript;
include /usr/local/nginx/sites-enabled/*;
}
e adesso creiamo il nostro virtual host:
nano /usr/local/nginx/sites-available/sito.com
e mettiamo al suo interno:
upstream sito_com {
server web1:81;
server web2:81;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/sito.com.crt;
ssl_certificate_key /etc/ssl/sito.com.key;
server_name sito.com;
location / {
# needed to forward user's IP address backendS
proxy_set_header X-Real-IP $remote_addr;
# needed for HTTPS
#proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_max_temp_file_size 0;
proxy_pass http://sito_com;
} #end locationy
} #end server
e attiviamo il vhosts:
sudo ln -s /usr/local/nginx/sites-available/sito.com /usr/local/nginx/sites-enabled/sito.com
ovviamente web1 e web2 sono i backend e avranno un ip in /etc/hosts del server, inoltre i backend avranno un vhost di apache sito.com in ascolto sulla porta 81.
Adesso creiamo dei certificati giusto per provare che il tutto funzioni a dovere:
cd /etc/ssl
openssl genrsa -des3 -out sito.com.key 1024
openssl req -new -key sito.com.key -out sito.com.csr
cp sito.com.key sito.com.key.bak
openssl rsa -in sito.com.key.bak -out sito.com.key
/etc/init.d/nginx restart
restartiamo il proxy e siamo pronti per testare il nostro proxy puntando il browser su https://sito.com
that’s all folks
Linux: come trovare files piu’ grandi di 1GB
Mi appunto un rapido comando su come trovare (recursivamente) files piu’ grandi di 1 GB sul file system:
find / -type f -size +1G -exec ls -lh {} \; | less
Linux: come trovare tutti i link simbolici presenti sul file system
Mi appunto un comando veloce che mette in evidenza, in modo recursivo, tutti i link symbolici fatti sul filesystem (o in una specifica directory):
# ls -lR <path> |grep "^l"
VNC Server su Debian Sid / Ubuntu
Ho usato per un bel po’ di tempo, devo dire con soddisfazione, Xtightvncserver fino a qualche giorno fa quando Metacity ha deciso di non avviarsi piu’ e di fallire causa incompatibilita’ tra il server VNC e la nuovissima versione di X presente sul sistema. A questo punto non avendo voglia di attendere una patch (se mai arrivera’) ho deciso di cambiare VNC server utilizzandone uno perfettamente integrato con l’Xserver: X11VNC
Per l’installzione e’ sufficiente dare un:
#apt-get install x11vnc
dopo di che lo possiamo lanciare semplicemente con:
#x11vnc
altrimenti
#x11vnc -many
-many significa che quando una sessione termina il server resta in attesa di una nuova connessione.
A questo punto ho deciso di lanciarlo all’avvio della macchina semplicemente editando /etc/rc.local ed aggiungendo quanto segue:
Se si tratta di Debian Sid
## Starto VNC server in ipv4
killall -9 vino-server
nohup x11vnc -many -display :0 \
-auth $(ps aux | grep -v grep | grep /usr/bin/Xorg | cut -d" " -f30) &
Nel caso di una Ubuntu
## Starto VNC server in ipv4
killall -9 vino-server
nohup x11vnc -many -xkb -display :0 &
Bash: cercare file e directory modificati oggi
Mi appunto qui di seguito due comandi, il primo mostra i files modificati oggi, il secondo le directory:
find -maxdepth 1 -type f -mtime -1
find -maxdepth 1 -type d -mtime -1