Monitorare coda postfix

Un semplice script bash che controlla la coda di postix e ci avverte se supera un determinato limite :

#!/bin/bash
limit=50;
[email protected];
servername=$(hostname);

queue_p=$(postqueue -p | grep Request | awk '{print $5}');

if [ $queue_p -ge $limit ] ; then
echo "
Dear Server admin,

We have $limit in local mailqueue.
" | mail -s "Mailqueue limit exceeding - $servername" $notifyemail

fi

 

 

Proteggi SSH con SSHguard

 sshguard , è scritto in C, quindi usa meno memoria e CPU durante l’esecuzione pur ottenendo gli stessi risultati.

COSA FA SSHGUARD ?

La versione corta è: riceve i messaggi di log, rileva quando un servizio in rete è attaccato basandosi su di essi, e blocca l’indirizzo di chi sta attaccando, dopo qualche tempo, rimuove questo blocco.

La versione completa è: sshguard gira su una macchina come un piccolo demone, e riceve i messaggi di log (in diversi modi, ad esempio da syslog). Quando si determina che l’indirizzo X ha fatto qualcosa di male al servizio Y, attiva una regola nel firewall della macchina (uno dei tanti supportati) per il blocco di X.
Sshguard mantiene X bloccato per qualche tempo, poi lo rilascia automaticamente.

Si prega di notare che, nonostante il suo nome sshguard rileva di base gli attacchi per molti servizi, non solo SSH, ma anche diversi demoni ftpds, Exim e Dovecot. E’ in grado di operare con tutti i principali sistemi di firewalling, e fornisce supporto per IPv6, whitelist, sospensione, e registra i messaggi di autenticazione.

Installazione

Sshguard è distribuito sotto la permissiva licenza BSD: è possibile utilizzare, modificare e ridistribuire il software, a proprio rischio, per qualsiasi uso, anche commerciale, a condizione di conservare l’avviso di copyright originale che si trova al suo interno. Il software è distribuito nel repository principale delle più utilizzate distribuzioni GNU/Linux e per alcuni sistemi *BSD, ma è anche possibile scaricare i sorgenti dalla loro pagina di downlaod .

Per installarlo su Debian ( o altre distribuzioni che utilizzano i .deb come Ubuntu) lanciate da un terminale:

sudo aptitude install sshguard

Configurazione

Sshguard si interfaccia al sistema in due punti:

  • il sistema di logging (come sshguard riceve i messaggi di log per il monitoraggio)
  • il firewall (come sshguard blocca gli indirizzi indesiderati )

A partire dalla versione 1.5, sshguard viene fornito con il Log Sucker . Con il Log Sucker, SSHGuard recupera le voci dai log in modo proattivo, e gestisce in modo trasparente eventi come la rotazione dei file di log e la scomparsa e riapparizione dei file.

Nella pagina della documentazione ufficiale ci sono delle istruzioni per molti firewall differenti, io seguirò le istruzioni per netfilter/iptables.

sshguard non ha un file di configurazione. Tutta la configurazione che deve essere fatta è la creazione di una chain chiamata “sshguard” nella catena di INPUT di iptables dove sshguard inserisce automaticamente le regole per i pacchetti provenienti da host malevoli:

#Per il supporto a IPv4 :
iptables -N sshguard
# Se volete anche il supporto a IPv6 :
ip6tables -N sshguard

Ora aggiornare la catena di INPUT in modo che passi tutto il traffico che si desidera a sshguard, specificare con – dport tutte le porte dei servizi che si desidera proteggere con sshguard. Se si desidera impedire agli aggressori di fare tutto il traffico verso l’host, rimuovere completamente l’opzione:

#Blocca tutto il traffico:
iptables -A INPUT -j sshguard
ip6tables -A INPUT -j sshguard
 
        -- o --
 
#Blocca gli attaccanti solo per i servizi SSH, FTP, POP, IMAP  (usa il modulo "multiport")
iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard
ip6tables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard

Se al momento non usate iptables e volete solo avere sshguard installato e funzionante senza alcun ulteriore impatto sul sistema, questi comandi creano e salvano una configurazione iptables che non fa assolutamente nulla se non permettere ad sshguard di funzionare:

# iptables -F
# iptables -X
# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -N sshguard
# iptables -A INPUT -j sshguard
# /etc/rc.d/iptables save

Conclusioni

E questo è tutto quello che dovete fare per avere una installazione di base di sshguard installata e funzionante, vi aiuterà ad avere il vostro ssh, ftp ed altri demoni un po’ più sicuro.

Creazione automatica sito web apache con bash

Ecco un semplice script che crea website, alias, directory automaticamente tramite bash 

#!/bin/bash

echo "Inserisci dominio (es: example.com):";
read domain;
echo ""
echo "Inserisci Alias (es: www.example.com):";
read domain_alias;
echo ""

### Check $domain esiste
if ! grep "${domain}" /etc/apache2/sites-available/${domain}.conf >> /dev/null; then
echo "${domain} will be created"
mkdir -p /var/www/${domain}/{htdocs,logs,cgi-bin};
chown -R www-data:www-data /var/www/${domain}/

echo "
## Automatic generation from Genesi on `eval date +%d.%m.%Y`
## ${domain}

ServerName ${domain}
ServerAlias ${domain_alias}
DocumentRoot /var/www/${domain}/htdocs
ServerAdmin [email protected]

ErrorLog /var/www/${domain}/logs/error.log
CustomLog /var/www/${domain}/logs/access.log combined


Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

" >> /etc/apache2/sites-available/${domain}.conf

echo "Testing configuration"
apache2ctl configtest
a2ensite ${domain}.conf
/etc/init.d/apache2 reload
else
echo "${domain} Dominio già esistente"
fi

 

Mediawiki FCKeditor

Dalla versione di MediaWiki > 1.16 la versione stabile di FCKeditor è disponibile qui : http://svn.wikimedia.org.

SVN path: http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/FCKeditor)

Peccato solo che la versione ufficiale esce con un bel baco :

Fatal error: Cannot redeclare js_unescape() (previously declared in /home/webapps/ineh/extensions/FCKeditor/FCKeditorSajax.body.php:268) in /home/webapps/ineh/includes/AjaxFunctions.php on line 55

Per risolvere basta modificare questa pagina all’interno della cartella extensions/FCKeditor e cambiare  ‘js_unescape’ con ‘fck_js_unescape’;

O lo fate a mano o usate rpl ad esempio :

rpl js_unescape fck_js_unescape FCKeditorSajax.body.php

 

LVM – Come funziona

Introduzione 

LVM (Logical Volume Manager) permette l’utilizzo di dispositivi logici virtuali per accedere ai disci, mascherano cosi’ la natura dei dispositivi fisici su cui risiedono i dati.

E’ quindi possibile utilizzare un device virtuale di cui possono fare parte diversi hard disk fisici, anche di natura, velocità e dimensioni diverse.

I vantaggi di un simile approccio alla gestione dei file system sono maggiore flessibilita’ e scalabilita’, alta disponibilita’ del servizio e ridondanza.

Schema

                        -------------------------------------------------
Logical Volumes  (LV)   |    lv_share   |    lv_backup   |   (unused)   |
                        -------------------------------------------------
Volume Groups    (VG)   |                 vg_fileserver                 |
                        -------------------------------------------------
Physical Volumes (PV)   | /dev/sdb1 | /dev/sdc1 | /dev/sdd1 | /dev/sde1 |
                        -------------------------------------------------

Ricerca nuovi dischi 

Per vedere nuovi dischi aggiunti alla macchina:
echo 1 > /sys/class/fc_host/host/issue_lip
rescan-scsi-bus.sh -l -w -c
multipath

Physical Volumes (PV) 

Per creare un Physical Volume (PV) su una partizione esistente, cioe’ rendere la partizione adatta ad ospitare dei Volume Group (VG):
pvcreate ”/dev/sdb1”

Per visualizzare tutti i Physical Volume (PV) presenti:
pvdisplay

Per spostare tutti i dati da un Physical Volume (PV) ad un altro:
pvmove -i 10 ”/dev/sdb1” ”/dev/sdc1”

Volume Groups (VG) 

Per creare un Volume Group (VG) su un Physical Volume (PV) precedentemente creato:
vgcreate ”vg_name” ”/dev/sdb1” ”/dev/sdc1”

Per attivare un Volume Group (VG) non attivo:
vgchange -a y ”vg_name”

Per estendere un Volume Group (VG):
vgextend ”vg_name” ”/dev/sdd1”

Per visualizzare tutti i Volume Group (VG) presenti:
vgdisplay

Per rinominare un Volume Group (VG):
vgrename ”vg_name” ”vg_new_name”

Logical Volumes (LV)

Per creare un Logical Volume (LV) grande 2 GB su un Volume Group (VG) precedentemente creato:
lvcreate -L”2G” -n ”lv_name” ”vg_name”

Per formattare in xfs il Logical Volume (LV) appena creato:
mkfs.xfs /dev/”vg_name”/”lv_name”

Per estendere un Logical Volume (LV) di 1 GB:
lvextend -L”+1G” /dev/”vg_name”/”lv_name”

Per estendere il filesystem presente sul Logical Volume (LV) appena esteso:
xfs_growfs /mountpoint

Per visualizzare tutti i Logical Volume (LV) presenti:
lvdisplay

Monitorare progresso restore Mysql

Vi è mai capitato di dover copiare un file di grandi dimensioni e voler monitorare lo stato di avanzamento della copia? Con pv è possibile farlo in maniera molto semplice. Le distribuzioni più comuni permettono di installare pv con un semplice apt-get install pv o yum install pv, dopodiché potete monitorare lo stato di avanzamento di una copia semplicemente mettendo pv in pipe con altri comandi. pv di per sé si comporta in maniera molto simile a cat, quindi, ad esempio, se dovete mandare una serie di query a mysql :

# pv database_backup.sql | mysql my_database
96.8MB 0:00:17 [5.51MB/s] [==>                                ] 11% ETA 0:02:10

Ecco il nuovo sito Ubuntu App Developer: annuncio ufficiale!


Punto di riferimento fondamentale per tutti gli sviluppatori Ubuntu: il nuovo sito è stato ufficialmente annunciato e risulta giù attivo a questo indirizzo: http://developer.ubuntu.com/.

Un supporto passo passo per chi ha voglia di dedicarsi allo sviluppo di applicazioni per uno dei sistemi operativi free più utilizzati al mondo: il sito è costituito da diverse sezioni, tutte con uno scopo ben preciso.

  • Get started – Per incominciare…
  • Resources – Tutorial, guide e tutta la documentazione necessaria per lo sviluppo
  • Publish – Viene spiegato come usufruire del famoso Ubuntu Software Centre
  • Community – Community che riunisce tutti gli sviluppatori
  • My Apps – Sezione in cui possiamo tutte le applicazioni sviluppate e relative informazioni.

Ci si aspettano ulteriori novità e cambiamenti che verranno probabilmente discusse e rivelate in occasione dell’ Ubuntu Developer Summit che si terrà ad Orlando

Cancellare directory piena di files (giga)

Se stai cercando di eliminare un numero molto elevato di file in una sola volta (ho cancellato una directory con 7.485.000 oggi +), probabilmente incorrerai in questo errore:

/bin/rm: Argument list too long.

Il problema è che quando si digita qualcosa del tipo “rm-rf *”, il “*” viene sostituito con un elenco di tutti i file corrispondenti, come “rm-rf file1 file2 file3 file4” e così via. C’è un buffer relativamente piccolo di memoria allocata per la memorizzazione questo elenco di argomenti e se è riempito, la shell non esegue il programma.

Per ovviare a questo problema, un sacco di persone useranno il comando find per trovare tutti i file e passarli uno ad uno per il comando “rm” in questo modo:

find . -type f -exec rm -v {} \;

Il mio problema è che avevo bisogno di cancellare queli 8 milioni di log e sci metteva davvero troppo tempo.
Sono incappato in un modo molto più veloce di eliminare file – il comando “find” ha un “-delete”  perfetto per me! Ecco cosa ho finito per usare:

find . -type f -delete

Utilizzando questo metodo, ho cancellato di circa 2000 file / secondo …  molto più veloce!

È anche possibile visualizzare i nomi dei file mentre li cancellati :

find . -type d -print -delete

VirusTotal

Fonte: http://www.bybab.com/sicurezza-online/1020/effettuare-scansione-antivirus-online-con-virustotal/

 

Il sito VirusTotal, ora tradotto anche in italiano, ci offre questo servizio a titolo gratuito. Oltre al controllo on-line, è possibile inviare un file via e-mail della grandezza massima di 10 MB.

Premete Sfoglia e selezionate il file che volete far analizzare. Quindi premete Invia File.

Vt1.jpg

Attendete qualche momento, a seconda delle dimensioni del file da caricare.

Vt2.jpg

In certi momenti della giornata, l’attesa potrebbe essere molto lunga; in questo caso, potete inviare il file via e-mail o riprovare più tardi.

Sebbene vi avvisino che potrebbero anche sbagliare, il grado di identificazione dei virus è molto alto e quindi il servizio offerto è più che affidabile.

Vt3.jpg

A questo punto, vi viene fornito il risultato dell’analisi.

Come potete vedere, quello che segue è il risultato finale: il virus è stato riconosciuto quasi da tutti gli antivirus, magari con un nome diverso, ma avete la certezza che quel file è infetto.

Vt4.jpg

Talvolta, nelle foto potete vedere nomi diversi per lo stesso virus. Ciò accade perché ogni casa utilizza il proprio “alias“, cioè stesso virus, ma con nome differente.

Premendo il pulsante Formattato, potrete passare ad un formato pagina più compatto.

Vt5.jpg

Questo servizio non elimina il virus, se presente, ma almeno vi dà la certezza che avete un problema, identificando il vostro “nemico”.

È possibile integrare nel menu Invia a un piccolo eseguibile, che permette di inviare direttamente i file sospetti al controllo di VirusTotal, senza neanche dover aprire il browser.

Il file è scaricabile da questa pagina. Questo, invece, è il link diretto al file.

Una volta installato, basterà selezionare il file, cliccarvi sopra con il tasto destro del mouse, aprire il collegamento ad Internet, selezionare Invia a e scegliere VirusTotal.

Upvt1.jpg

Si avvierà l’upload del file.

Upvt2.jpg

A questo punto, basterà attendere il risultato della verifica per sapere se il nostro file sia o meno infetto.

 

 

Monitorare performance di Apache con mod_status

E’ possibile monitorare il funzionamento di Apache con diversi strumenti.

Log di Apache
Sono il primo posto dove indagare in caso di problemi. Generalmente vengono scritti in una directory tipo /var/log/httpd, comunque nel file di configurazione la loro posizione è definita con le direttiveAccessLogErrorLog.
Con la direttiva LogLevel è possibile modificare il livello di logging.

Opzioni di invocazione
httpd -V Mostra i parametri usati in fase di configurazione
httpd -l Mostra i moduli compilati direttamente nel file httpd.
httpd -L Mostra le direttive che possono essere usate con i moduli direttamente compilati.
httpd -t Esegue un test sulla configurazione di Apache.

Server-status e Server-info
Sono container speciali che permettono di visualizzare direttamente via web informazioni:
http://www.sito.com/server-status/ – Mostra lo stato del server.
http://www.sito.com/server-info/ – Mostra informazioni sulla configurazione usata e i moduli presenti.

Comandi di Sistema
ps -adef | grep httpd – Elenco dei processi Apache in esecuzione
netstat -natup – Elenco delle connessioni di rete in ascolto e attive.
ldd /usr/sbin/httpd – Mostra le librerie condivise usate dal binario indicato.
strace -p PID – Traccia le system call del processo indicato.
lsof | grep httpd –  Visualizza tutti i file aperti dal processo http

Sono disponibili vari strumenti per monitorare e capire il funzionamento di Apache, il suo stato e quello che sta facendo.

Log di Apache
I log di Apache sono il primo posto dove cercare la soluzione di problemi (oltre che, ovviamente, analizzare il traffico Web sul sito). Di default sono in/usr/local/apache/logs ma se si è installato Apache tramite un RPM li si potranno trovare in /var/log/httpd o comunque dove specificato nel file di configurazione principale (verificare la direttiva ErrorLog e definire la verbosità dei log con LogLevel (per diagnostica mettere LogLevel debug per il massimo della verbosità, in condizioni normali lasciare LogLevel warn).

Server-status e Server-info
Apache fornisce due moduli che permettono all’amministratore di visualizzare informazioni utili in tempo reale.
Server-status mostra info sulle connessioni esistenti, l’uptime del server, il traffico generato, la CPU impegnata, la versione di Apache. E’ possibile avere lo status sia in modalità normale che in modalità estesa, dove per ogni connessione si vedono maggiori informazioni. Di default, se abilitato, si trova suhttp://www.sito.com/server-status/
Server-info fornisce dettagliate informazioni sulla configurazione di Apache e sulle direttive relative ad ogni singolo modulo. Di default, se abilitato, si trova suhttp://www.sito.com/server-info/

Opzioni di invocazione
Anche le opzioni che possono essere passate ad Apache, eseguendo httpd danno informazioni utili:
httpd -V Mostra il numero di versione, e i parametri usati in fase di configurazione
httpd -l Mostra i moduli compilati direttamente nel file httpd.
httpd -L Mostra tutte le direttive che possono essere usate con i moduli direttamente compilati (vengono escluse tutte quelle che sono fornite dai moduli caricabili dinamicamente).
httpd -t Esegue un test sulla configurazione di Apache e segnala eventuali errori di sintassi.

Variabili d’ambiente
Apache setta ed utilizza una serie di variabili d’ambiente che possono essere utilizzate da script CGI, PHP, Perl o trattate in sede di configurazione per gestire il comportamento del server sulla base dell’ambiente generale e delle singole connessioni. Per visualizzarle esistono vari metodi indiretti, per esempio uno è quello di utilizzare PHP all’interno di pagine HTML: <?php echo $REMOTE_ADDR ?> visualizza l’IP del client remoto.

Apache fornisce la possibilità di monitorare in tempo reale, direttamente via web, il suo stato, l’uptime, il tempo di CPU occupato, le connessioni che sta gestendo, i processi child in esecuzione e altre informazioni utili.

Questa funzionalità è fornita dal modulo mod_status che prevede delle specifiche direttive utilizzabili con una configurazione simile:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .dominio.it
</Location>

Con questo esempio viene definita una Location accessibile all’url: http://www.dominio.it/server-status/ in cui vengono visualizzate informazioni varie sullo stato del server Web. In questo caso l’accesso è consentito solo da host nel dominio.it. Lasciando solo la riga SetHandler server-status si lascia accessibile a tutto il mondo la location server-status (opzione generalmente non consigliabile, in quando vengono visualizzate informazioni utili anche a potenziali intrusori).
Se si specifica, nella configurazione la direttiva ExtendedStatus On le informazioni fornite sono molto più dettagliate (per ogni connessione vengono indicati IP e porta del client, PID del child che la gestisce e altre info).
Su server in produzione ad alto traffico è consigliabile NON usare l’ExtendedStatus che appesantisce e rallenta il sistema.
E’ possibile aggiornare automaticamente la visualizzazione dello status di un server digitando sul browser un ULR tipo:
http://openskills.info/server-status?refresh=3 (la pagina viene aggiornata ogni 3 secondi).
E’ anche possibile visualizzare lo status da shell Unix, con: apachectl status (si deve aver installato il browser testuale Lynx sul server o, se si ha solo Linksavere un link simbolico di /usr/bin/lynx che punta a /usr/bin/links).

Apache può fornire molte informazioni sui moduli utilizzati e le direttive supportate.

Tramite il modulo mod_info è possibile abilitare la funzionalità server-info e visualizzarne le informazioni del caso in un URL tipo http://www.dominio.it/server-info con queste righe nella configurazione generale:
<Location /server-info>
SetHandler server-info
</Location>

All’URL indicato si possono visualizzare molte informazioni utili sulla configurazione di Apache al momento in cui è stato eseguito. In particolare è interessante la possibilità di vedere quali direttive sono utilizzate nella configurazione e quali sono i moduli che le forniscono.
Anche in questo caso le informazioni visibili sono piuttosto sensibili dal punto di vista della sicurezza, per cui è fortemente consigliato limitare l’accesso all’URL server-info da IP trusted.
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 192.168.5.1 192.168.5.2
</Location>