Archive for category sistemi

Condividere rapidamente directory via HTTP

Spesso configurare un nuovo vhost su apache, per permettere di scaricare rapidamente alcuni files da una particolare directory (magari fuori dalla tipica /var/www), puo’ richiedere troppo tempo; a tal proposito ci viene in aiuto il modulo CGIHTTPServer di Python che ci permette di startare un piccolo webserver minimale in ascolto di default sulla porta 8000. Ecco qui un piccolo script da eseguire direttamente nella directory che vogliamo condividere.

$ nano cgiserver

e copiamo all’interno quanto segue:

#!/usr/bin/env python

from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler
from SocketServer import ForkingMixIn

class ForkingServer(ForkingMixIn, HTTPServer):
pass

serveraddr = ('', 8000)
srvr = ForkingServer(serveraddr, CGIHTTPRequestHandler)
srvr.serve_forever()

rendiamo il file eseguibile:

$ chmod 700 cgiserver

ed infine lo eseguiamo

$ ./cgiserver

Share

, , , , , ,

No Comments

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"

Share

, , ,

No Comments

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 &

Share

, , , , ,

No Comments

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

Share

, , , ,

No Comments

Rate-limit: salvaci dal DDoS

Questo interessantissimo modulo di IPTables ci permette di regolare le connessioni in arrivo sulla nostra macchina, in modo da limitare i danni, sia in caso di DDoS che di bruteforce, in quest’ultimo caso puo’ essere evitato con le seguenti regole:

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent \
--update --seconds 60 --hitcount 4 -j DROP

Dopo 4 tentativi in 60 secondi l’ip viene droppato.

Con la seguente regola invece possiamo limitare i pacchetti di tipo ICMP (molto spesso usati negli attacchi DDoS) a 3 richieste per secondo, il resto viene droppato:

iptables -I INPUT -p icmp --icmp-type echo-request -m limit !--limit 3/s -j ACCEPT

Un attacco DDoS invece su di un range di porte che va dalla 20100 alla 20400 e che accetta pacchetti UDP puo’ essere limitato cosi’:

iptables -A INPUT -p udp -m udp --dport 20100:20500 -m state --state NEW -m recent --set --name DEFAULT \
--rsource
iptables -A INPUT -p udp -m udp --dport 20100:20500 -m state --state NEW -m recent --update --seconds 10 \
--hitcount 10 --name DEFAULT --rsource -j DROP

Share

, , , ,

No Comments

Controllare lo stato del Raid HP

apt-get install cciss-vol-status
cciss_vol_status /dev/cciss/c*d0

Se il controller risulta sconosciuto:

cciss_vol_status -u /dev/cciss/c*d0

Share

, , , , , , ,

No Comments

Come creare partizioni piu’ grandi di 2TB

In linux la formattazione del nostro nuovo HD da 3TB puo’ diventare complicata, soprattutto se la vostra distribuzione come nel mio caso non supporta GPT che combinato a parted ci permette di creare partizioni piu’ grandi di 2TB. Qui di seguito un how-to che comprende la compilazione del kernel su di una Ubuntu 10.04 nel caso che il supporto non sia abilitato.

Procuriamoci tutto il necessario:

sudo apt-get install fakeroot kernel-wedge build-essential makedumpfile kernel-package libncurses5 libncurses5-dev

sudo apt-get build-dep --no-install-recommends linux-image-$(uname -r)

Prepariamo l’ambiente dove andremo a ricompilare il nostro kernell

mkdir ~/src
cd ~/src
apt-get source linux-image-$(uname -r)
cd linux-2.6.32

cp -vi /boot/config-`uname -r` .config

Adesso procediamo alla castomizzazione del kernel

make menuconfig

Abilitiamo le seguenti opzioni

File Systems
Partition Types
[*] Advanced partition selection
[*] EFI GUID Partition support (NEW)
....

Dopo aver salvato ed essere usciti, prima di procedere all’effettiva compilazione diamo una spinta al nostro processore, nel caso di un quad core:

export CONCURRENCY_LEVEL=5

Sempre 1+$ilVostroNumeroDiCore

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-qualche-cosa kernel-image kernel-headers

Ovviamente e’ da sostituire -qualche-cosa con un contrasssegno che distingua il vostro nuovo kernel ad esempio -gpt

Adesso lo installiamo

cd ~/src
sudo dpkg -i linux-image-2.6.32.11+drm33.2-gpt_2.6.32.11+drm33.2-gpt-10.00.Custom_amd64.deb
sudo dpkg -i linux-headers-2.6.32.11+drm33.2-gpt_2.6.32.11+drm33.2-gpt-10.00.Custom_amd64.deb

Creiamo l’immagine del nuovo kernel

sudo update-initramfs -c -k 2.6.32.11+drm33.2-gpt

Aggiorniamo grub

sudo update-grub
sudo reboot

Adesso che abbiamo il supporto abilitato procediamo a partizionare l’HD da 3TB, per prima cosa con fdisk -l recuperiamo il device del disco, qui assumeremo essere /dev/sda

parted /dev/sda

Output:

GNU Parted 1.8.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

Battezziamo il disco:

mklabel gpt

Creiamo la partizione di 3TB:

mkpart primary 0 3001G
quit

non ci resta che formattare la partizione appena creata:

mkfs.ext4 /dev/sda1

Share

, , , , , , , , , ,

No Comments

mysqldump: Couldn’t execute ‘SELECT /*!40001 SQL_NO_CACHE */ * FROM `EVENTS`’: Cannot proceed because system tables used by Event Scheduler were found damaged at server start (1577)

Dopo aver effettuato un disaster recovery, aver riacciuffato un DB per i capelli ed averlo sbattuto su di un altro server (versioni di MySQL differenti), se effettuo un mysqldump ricevo il seguente messaggio:

mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `EVENTS`': Cannot proceed because system tables used by Event Scheduler were found damaged at server start (1577)

Fixiamo il problema nel seguente modo:

# mysql_upgrade -f -p
# /etc/init.d/mysql restart

Share

, , , ,

3 Comments

Tomcat 6 su Ubuntu 10.04 LTS

Mi appunto qui di seguito brevemente la procedura per installare Tomcat su di una macchina Ubuntu 10.04 LTS utilizzando il java connector di apache:

sudo apt-get install sun-java6-jre sun-java6-jdk

Scarichiamo Tomcat:

wget http://mirrors.publicshout.org/apache/tomcat/tomcat-6/v6.0.7/bin/apache-tomcat-6.0.7.tar.gz

Spacchettiamolo:

tar xzfv apache-tomcat-6.0.7.tar.gz

Copiamolo in una directory piu’ consona:

sudo cp -r apache-tomcat-6.0.7 /usr/local/
sudo ln -s /usr/local/apache-tomcat-6.0.7/ /usr/local/tomcat

Prepariamo l’init script  /etc/init.d/tomcat e mettiamo al suo interno quanto segue:

#
# Startup script for the Tomcat server
#
# chkconfig: - 83 53
# description: Starts and stops the Tomcat daemon.
# processname: tomcat
# pidfile: /var/run/tomcat.pid
# See how we were called.
case $1 in
start)
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun/
export CLASSPATH=/usr/local/tomcat/lib/servlet-api.jar
export CLASSPATH=/usr/local/tomcat/lib/jsp-api.jar
export JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/
echo "Tomcat is started"
sh /usr/local/tomcat/bin/startup.sh
;;
stop)
export JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/
sh /usr/local/tomcat/bin/shutdown.sh
echo "Tomcat is stopped"
;;
restart)
export JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/
sh /usr/local/tomcat/bin/shutdown.sh
echo "Tomcat is stopped"
sh /usr/local/tomcat/bin/startup.sh
echo "Tomcat is started"
;;
*)
echo "Usage: /etc/init.d/tomcat start|stop|restart"
;;
esac
exit 0

diamogli i permessi e abilitiamo lo startup al boot:
sudo chmod 755 /etc/init.d/tomcat
sudo update-rc.d tomcat defaults

a questo punto con sudo /etc/init.d/tomcat start dovremmo avviare il demone e puntando il browser su http://localhost:8080 (o usando links2) ne verifichiamo la disponibilita’.

A questo punto è necessario preparare il connector di Apache2 per tomcat:

sudo apt-get install libapache2-mod-jk

Creiamo il file /etc/apache2/workers.properties con al suo interno quanto segue:

workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/lib/jvm/java-1.5.0-sun
ps=/
worker.list=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009
worker.ajp13.type=ajp13

Modifichiamo il file /etc/apache2/mods-available/jk.load e mettiamo al suo interno:

JkWorkersFile /etc/apache2/workers.properties
JkLogFile /etc/apache2/mod_jk.log
JkLogLevel debug
#JkMount /servlets-examples/* ajp13 #da decommentare se si usa tomcat 5.x;
JkMount /examples/* ajp13

Restartiamo Apache:

sudo /etc/init.d/apache2 restart

se puntiamo il browser su http://localhost/examples/ potremo vedere la pagina di esempi di Tomcat.

Share

, , , ,

4 Comments

dos2unix missing (Ubuntu 10.04)

Sembra che in ubuntu 10.04 dos2unix e unix2dos non siano presenti, in realtà è stato semplicemente cambiato il nome nel pacchetto ‘tofrodos’. Ecco come sistemare:

#apt-get install tofrodos
#cd /usr/bin
#ln -s fromdos dos2unix
#ln -s todos unix2dos

Share

, , ,

No Comments