1

Svuotare directory con rsync

Problema: svuotare al cache dei apache in poco tempo.

Il modulo mod_disk_cache.c di apache velocizza l’erogazione dei contenuti appoggiano la cache all’interno di una direcotry.

Arriva il giorno che devi necessariamente svuotare questa directory e non puoi usare il comando htcacheclean, la cosa più ovvia da fare è usare:

rm -Rf /var/cache/mod_disk

Restiamo a guardare il terminale fermo, immobile e lo spazio disco diminuire lentamente, ma proprio lentamente, questo perché i dati come numerosità sono tantissimi e come dimensione circa 20 Giga, per rimuovere la directory abbiamo dovuto fermare il demone HTTPD e non erogare più il servizio WEB, a questo punto spostiamo la scrittura della cache, facciamo partire Apache 2 e sfruttiamo il comando rsync per velocizzare lo svuotamento della directory. Non la cancelleremo ma la svuoteremo, visto che l’eliminazione era decisamente lunga.

Solitamente rsync  si utilizza per sincronizzare due directory, se usiamo questo comando per sincronizzare una dir vuota con l’opzione –delete, allora sincronizzeremo la piena con la vuota cancellando quello che è presente nella piena ma non nella vuota.

mkdir /var/cache/vuota
rsync -a /var/cache/vuota/ /var/cache/mod_disk --delete
rm -Rf /var/cache/vuota /var/cache/mod_disk

 

Il comando rsync impiega un quarto del tempo del comando rm.




[NETFILTER] Bloccare lista di IP con iptables

Aumentare la sicurezza del nostro firewall bloccando gli indirizzi IP noti per attacchi

Il sito internet BLOCKLIST.DE mette a disposizione file txt contenenti gli indirizzi IP che hanno attaccato i loro clienti nelle ultime 48 ore.

E’ possible scaricarsi le liste suddivise per attacco, SSH, DDOS, FTP, MAIL, SPAM, ecc.. oppure una lista completa di tutti gli IP all’indirizzo http://lists.blocklist.de/lists/.

Vediamo ora come interagire con il nostri iptables senza modificare la configurazione ottimale raggiunta con ore ed ore di test.

Uno script bash si occupa di scaricare la lista dal sito blocklist.de, ne legge il suo contenuto e, prima prova a togliere la regola per evitare di avere regole ridondanti:

/sbin/iptables -D INPUT -t filter -s $blkip -j DROP 2> /dev/null

 

e poi ne applica una

/sbin/iptables -A INPUT -t filter -s $blkip -j DROP

 

per ultima cosa scrive il comando per la rimozione della regola in un file, in modo da poterlo richiamare qualora si volesse pulire la catena di INPUT dagli IP sella black list senza buttare giù il firewall.

echo "/sbin/iptables -D INPUT -t filter -s $blkip -j DROP" >> $DROPRULE

 

Di seguito lo script, da lanciare con ./iptables-blk.sh start

#! /bin/sh
start(){
echo "start"
BLACKFILE="/usr/local/etc/blacklist.txt"
DROPRULE="/usr/local/etc/blacklistdrop.txt"
BLOCKLIST_URL="http://lists.blocklist.de/lists/all.txt"
> $DROPRULE
curl $BLOCKLIST_URL |grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])' > $BLACKFILE
if [ $? -eq 0 ]
  then
  for blkip in `cat $BLACKFILE`; do
    echo "ACCESSO NEGATO A: $blkip"
    /sbin/iptables -D INPUT -t filter -s $blkip -j DROP 2>/dev/null
    /sbin/iptables -A INPUT -t filter -s $blkip -j DROP 
    echo "/sbin/iptables -D INPUT -t filter -s $blkip -j DROP" >> $DROPRULE
  done
  else
  echo "$BLOCKLIST_URL ERROR"
fi
}

stop(){
DROPRULE="/usr/local/etc/blacklistdrop.txt"
echo "stop"
cat $DROPRULE|while read resetrule; do
echo "$resetrule"
$($resetrule)
done
}

restart(){
stop
sleep 5
start
}

case "$1" in
start)
start
;;
stop)
stop
;;

restart)
restart
;;
*)
echo "Usage: firewall {start|stop|restart}"
exit 1
esac

exit 0                            



Controllo temperatura cpu server linux

Esigenza: controllare la temperatura della cpu di alcuni server linux.

Due delle macchine che compongono l’infrastuttura di backup sono allocate in una stanza non climatizzata, la temperatura non sale mai a livelli di guardia, comunque è sempre bene tenere sotto controllo la temperatura del processore.

 Il comando “sensors” rileva i vari sensori prsenti nell’hardware della macchina, nel mio caso posso sfruttare la temperatura delle CPU, il seguente script prende un solo valore in considerazione. Difficilmente avremo una CPU a 28°C e una a 65°C.

 Lo script prende la temperatura dal comando sensor e manipola l’output, ottiene la temperatura esterna tramite ClassMeteo nella pagina di Yahoo, questo per dare evidenza della situazione climatica; un esempio banale è quello i avere una temperatura esterna di 36°C e le CPU a 45°C, lo consideramo normale, ma avere l’esterna a -5°C e l’interna a 65°C dovrebbe farci pensare, soprattutto se le CPU non stanno lavorando, magari ci siamo solo dimenticati l’impianto di riscaldamento acceso e su una temperatura decisamente tropicale.

Effettuato il controllo, cercando la soglia massima otlre la quale deve far partire l’aert è di 55°C, la soglia massima consigliata dal produttore è di 65°C, per qeusto mi prendo un “margine” di 10°C, per dare il tempo di controllare in SSH e di intervenire in sede.

 


#!/bin/bash

temp=$(sensors|grep Core|sed -e’s/[^0-9.]//g’ -e ‘s/^0//g’|tail -1|awk -F”.” ‘{print $1}’)

wget http://it.meteo.yahoo.com/italia/toscana/cerreto-guidi-12846264/
external=$(grep -i “<div temp-c \”>” index.html |tr “<” “\n”| grep -i “day-temp-current temp-c”|sed -e ‘s/[^0-9]//g’)

clear

echo “Temperatura interna: $temp gradi centigradi”

echo “Temperatura esterna: $external gradi centigradi”

if [ $temp -gt 55 ]; then

cat > /tmp/chktmp.eml <<DT

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>

<html>

<head>

<meta http-equiv=”content-type” content=”text/html; charset=windows-1250″>

<title>Tempi di apertura sito</title>

<h1 >TEMPERATURA ALTA</h1>

<h2>La temperatura del server <b>$(hostname)</b> &egrave; di <span ><b>$(echo $temp) &deg; C</b></span>.</h2>

<p>La temperatura esterna &egrave; di <b>$(echo $external)&deg; C</b> rilevata da <a href=”http://it.meteo.yahoo.com/italia/toscana/cerreto-guidi-12846264/”>ClassMeteo</a>.</p>

<br />

<br />

<p>Rispondendo a questa mail contatterai il gruppo di supporto LBiT soluzioni informatiche.</p>

<p>Mail inviata da $(hostname).</p>

DT

(cat <<EOCAT

Subject: ALLARME TEMPERATURA $(echo $hostnama) $(echo $temp)

MIME-Version: 1.0E

Content-Type: text/html

Content-Disposition: inline

From:$(hostname).lbit-solution.it <no-replay@lbit-solution.it>

To: Gruppo Supporto LBiT soluzioni informatiche <supporto@lbit-solution.it>

EOCAT

cat /tmp/chktmp.eml) | /usr/sbin/sendmail supporto@lbit-solution.it amministrazione@lbit-solution.it

fi

rm -f index.htm*