Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


1 2 >

samedi 29 novembre 2008

[Qmail-LDAP-Samba] Notifcation par mail du redémarrage de mon serveur à  Montpellier

1. Objectifs

Souvent quand je suis au taf, j'ai besoin de faire des manipulations concernants des commandes GNU/Linux générales que je manipule depuis mon serveur à  Montpellier. Parfois, j'ai besoin d'appeler mon colocataire à  Montpellier pour lui demander d'intervenir. Ce qui n'est pas toujours juste. La plupart du temps, je dois redémarrer mon serveur. Le problème est que je n'ai pas souvent l'occasion de me rappeler quels sont les services qui sont actifs et ce qui sont désactivés, vu que mon serveur gère aussi bien par iptables le réseau interne à  mon appartement que le réseau entrant depuis l'extérieur.

Aussi depuis quelques jours, je travaille sur une notification d'envoi de mails me rappellant les services importants manipulés par iptables qui sont activés ou désactivés....Par rapport à  ce qui existe, on peut faire largement mieux mais ici c'est juste pour faire au plus simple!!!

2. Mise en place

Le principe repose sur l'envoi de mail en utilisant qmail-inject, qui me renverra un message au format HTML avec un titre générique et par un utilisateur info spécifique pour la gestion de l'envoi de ce type de mail. Comme la plupart de mes commandes iptables sont dans /etc/rc.local. On commence donc par définir les fonctions suivantes dans /etc/rc.local

....
....
#======================================[++ Fonctions utilisees ++]=======================================
#
MAIL_NOTIFY="/root/mail_notify.txt";

InitMailToSend(){
        echo "Subject: [DavidGIS.fr] Message de olivia.davidgis.fr" > ${MAIL_NOTIFY};
        echo "Content-Type: text/html" >> ${MAIL_NOTIFY};
        echo "" >> ${MAIL_NOTIFY};
        echo "<html>" >> ${MAIL_NOTIFY};
        echo "<head>" >> ${MAIL_NOTIFY};
        echo "<style type='text/css'>" >> ${MAIL_NOTIFY};
        echo "table {border: 5px solid white}" >> ${MAIL_NOTIFY};
        echo "td {border: 5px solid green}" >> ${MAIL_NOTIFY};
        echo "</style>" >> ${MAIL_NOTIFY};
        echo "</head>" >> ${MAIL_NOTIFY};
        echo "<body>" >> ${MAIL_NOTIFY};
        echo "<h1 align='center'>Message du serveur olivia.davidgis.fr</h1>" >> ${MAIL_NOTIFY};
        echo "<center>" >> ${MAIL_NOTIFY};
        echo "<b>+++ Le serveur a redémarré le $(date '+ %Y-%m-%d vers  %H:%M:%S') +++</b><br>" >> ${MAIL_NOTIFY};
        echo "<table>" >> ${MAIL_NOTIFY};
        echo "<tr>" >> ${MAIL_NOTIFY};
        echo "<td style='border: 5px solid black'>" >> ${MAIL_NOTIFY};
        echo "<img src='http://www.davidgis.fr/download/janita.jpg'/>" >> ${MAIL_NOTIFY};
        echo "</td>" >> ${MAIL_NOTIFY};
        echo "<td style='border: 5px solid black'>" >> ${MAIL_NOTIFY};
        echo "<h2>INFOS:</h2>" >> ${MAIL_NOTIFY};
        echo "<table>" >> ${MAIL_NOTIFY};
}

FinalizeMailToSend() {
        echo "</table>" >> ${MAIL_NOTIFY};
        echo "</td>" >> ${MAIL_NOTIFY};
        echo "</tr>" >> ${MAIL_NOTIFY};
        echo "</table>" >> ${MAIL_NOTIFY};
        echo "</body>" >> ${MAIL_NOTIFY};
        echo "</html>" >> ${MAIL_NOTIFY};
}

CorrectInfoMailToSend() {
    echo "<tr><td> $1</td></tr> " >> ${MAIL_NOTIFY};  
}

WarningInfoMailToSend() {
    echo "<tr><td style='border: 5px solid red'>$1!!!</td></tr>" >> ${MAIL_NOTIFY};  
}

InitMailToSend;
# ouverture de port
# 1 := oui
# 0 := non
...
OPEN_PORT_SQUID3=1
OPEN_PORT_P3SCAN=0
...
....
# P3Scan
# Pour appeler SpamAssassin et F-prot (anti-virus)
#
if [ $OPEN_PORT_P3SCAN -eq 1 ]
then
        CorrectInfoMailToSend "Redirection de POP3 pour les mails du reseau vers P3Scan --> Spam (SpamAssassin ) et Virus (F-Prot)"
        iptables -A INPUT -d 82.236.232.184 -p tcp --dport 8110 -j ACCEPT
        for port in pop3 imap3 imap2 imap
        do
                iptables -t nat -A OUTPUT  -p tcp --dport $port -m owner --uid-owner 115 -j ACCEPT
                iptables -t nat -A OUTPUT  -p tcp --dport $port -j REDIRECT --to 8110
                iptables -t nat -A PREROUTING -p tcp -i $INTERFACE_INTERNET --dport $port -j REDIRECT --to 8110
        done
        for port in 110 143 220
        do
                iptables -t nat -A PREROUTING -i $INTERFACE_LAN -s 192.168.2.1/10 -p tcp --dport $port -j DNAT --to-destination 192.168.2.1:8110
                iptables -t nat -A PREROUTING -i $INTERFACE_INTERNET -d 192.168.2.0/24 -p tcp --dport $port -j REDIRECT --to-port 8110
        done
else
        WarningInfoMailToSend "P3Scan est inactif!!!"
fi

....
....
#================================================================
# Notification par mail du redémarrage du serveur!
#===============================================================

FinalizeMailToSend;
cat ${MAIL_NOTIFY} | QMAILUSER=info /var/qmail/bin/qmail-inject davidtecher@yahoo.fr

3. Création de l'utilisateur info pour la notification de mail

C'est maintenant que les smbldap-qmail-tools rentrent en action...

On commence par créer l'utisateur info grà¢ce à  smbldap-useradd. On se connecte ensuite en tant que info puis on se déconnecte!

root@olivia:~# smbldap-useradd -a -s /bin/bash -c "Infos.DavidGIS.FR" -m -P info
Changing UNIX and samba passwords for info
New password: 
Retype new password: 
root@olivia:~# su info
info@olivia:/root$ exit

Maintenant on crée la boà®te aux lettres

root@olivia:~# smbldap-qmail-useradd -A active  -m info@davidgis.fr -H davidgis.fr -M nolocal \
-D ldapwithprog -P /var/qmail/bin/spamcheck.sh -S /home/user/info/Maildir -c 0 -q 0 -s 0  info
Use of uninitialized value in concatenation (.) or string at /usr/local/sbin/smbldap-qmail-useradd line 136.

Un premier envoi de mail pour crée le répertoire Maildir ne donne rien

root@olivia:~# echo test|/var/qmail/bin/qmail-inject info
root@olivia:~# tail -f /service/qmail/log/main/current |tai64nlocal 
2008-11-29 00:23:16.328211500 status: local 1/10 remote 0/20
2008-11-29 00:23:22.477099500 delivery 3: success: 1227914606.M542633P13934.olivia/did_0+0+1/
2008-11-29 00:23:22.477104500 status: local 0/10 remote 0/20
2008-11-29 00:23:22.477106500 end msg 11748467
2008-11-29 00:26:22.141431500 new msg 11748589
2008-11-29 00:26:22.141590500 info msg 11748589: bytes 216 from  qp 15311 uid 0
2008-11-29 00:26:22.145000500 starting delivery 4: msg 11748589 to local info@davidgis.fr
2008-11-29 00:26:22.145100500 status: local 1/10 remote 0/20
2008-11-29 00:26:26.156750500 delivery 4: deferral: safecat:_fatal:_could_not_stat_directory:_file_does_not_exist/
2008-11-29 00:26:26.156754500 status: local 0/10 remote 0/20

root@olivia:~# ls /home/user/info/.
./             ../            .bash_history  .bash_logout   .bashrc        .profile       .pyzor/        .spamassassin/

Il est nécessaire de se connecter une première fois sous Horde pour créer le répertoire comme l'atteste ensuite le log de qmail

root@olivia:~# echo test|/var/qmail/bin/qmail-inject info
root@olivia:~# tail -f /service/qmail/log/main/current |tai64nlocal 
2008-11-29 00:26:26.156750500 delivery 4: deferral: safecat:_fatal:_could_not_stat_directory:_file_does_not_exist/
2008-11-29 00:26:26.156754500 status: local 0/10 remote 0/20
2008-11-29 00:28:03.159003500 starting delivery 5: msg 11748589 to local info@davidgis.fr
2008-11-29 00:28:03.159008500 status: local 1/10 remote 0/20
2008-11-29 00:28:05.931564500 delivery 5: deferral: safecat:_fatal:_could_not_stat_directory:_file_does_not_exist/
2008-11-29 00:28:05.931568500 status: local 0/10 remote 0/20
2008-11-29 00:28:57.518062500 new msg 11748467
2008-11-29 00:28:57.518066500 info msg 11748467: bytes 216 from  qp 15366 uid 0
2008-11-29 00:28:57.523103500 starting delivery 6: msg 11748467 to local info@davidgis.fr
2008-11-29 00:28:57.523107500 status: local 1/10 remote 0/20
2008-11-29 00:29:00.398939500 delivery 6: success: 1227914947.M551504P15376.olivia/did_0+0+1/
2008-11-29 00:29:00.398943500 status: local 0/10 remote 0/20
2008-11-29 00:29:00.398944500 end msg 11748467

root@olivia:~# ls /home/user/info/
Maildir

4. Tests

Dans la nuit de vendredi à  samedi, j'ai donc redémarré mon serveur et attendu le mail dans ma boà®te aux lettres


Fig 1. Réception du mail suite au redémarrage du serveur.

Voici le résumé comme attendu avec comme toujours une image de Jana pour égayer le mail


Fig 2. Résumé suite au redémarrage du serveur (vert: ce qui est actif/rouge: ce qui est inactif).

mercredi 26 novembre 2008

[Nmap] Connaà®tre les machines du réseau...

On peut par exemple utiliser nmap

root@olivia:~# nmap -v -sP 192.168.2.0/24 | grep -v "appears to be down" | grep Host
Host olivia.davidgis.fr (192.168.2.1) appears to be up.
Host luxy.davidgis.fr (192.168.2.5) appears to be up.
Host belkin.davidgis.fr (192.168.2.254) appears to be up

source: http://www.debianworld.org/nmap.connaitre.ip.reseau

samedi 22 novembre 2008

[ClamAV] WARNING: Your ClamAV installation is OUTDATED! - Partie 2/2

Dans mon précédent billet, je parlais de l'upgrade de clamav version 0.93. en 0.94.1 suite à  l'erreur correspondant au titre de ce billet. Maintenant il s'agit de modificer les services clamav-daemon et clamav-freshclam fournis par Ubuntu pour les rendre opérationnelles à  cette mise à  jour.

En effet certaines options propposées par ClamAV ont disparues d'une version à  une autre tandis que d'autres apparaissent.

1. Modification des fichiers responsables des services

Les deux fichiers importants sont

  • /etc/init.d/clamav-daemon
  • /etc/init.d/clamav-freshclam

On peut se limiter à  modifier la ligne responsable pour le fichier de configuration mais perso, je préfère autrement.

Je commence par renommer les anciens binaires de ma précédente version

mv /usr/sbin/clamd /usr/sbin/clamd_old
mv /usr/bin/freshclam /usr/bin/freshclam_old

Ensuite je modifie le passe pour accéder aux binaires dans les deux fichiers mentionnés ci-dessus. Sachant que les fichiers de configuration sont dans /usr/local/etc, j'en profite aussi pour modifier la ligne

  • Dans le fichier /etc/init.d/clamav-daemon, je remplace les lignes "DAEMON=..." et "CLAMAVCONF=..." par celles-ci
    ...
    DAEMON=/usr/local/sbin/clamd
    ...
    CLAMAVCONF=/usr/local/etc/clamd.conf
    ......
  • Dans le fichier /etc/init.d/clamav-freshclam, je remplace la ligne "DAEMON=...", "CLAMAV_CONF_FILE=..." et "FRESHCLAM_CONF_FILE=..."par celle-ci
    ...
    DAEMON=/usr/local/bin/freshclam
    ...
    CLAMAV_CONF_FILE=/usr/local/etc/clamd.conf
    FRESHCLAM_CONF_FILE=/usr/local/etc/freshclam.conf
    ...

2. Fichiers de configuration

Voici le conte respectif des fichiers de configuration

Les deux fichiers sont

  • pour clamd c'est /usr/local/etc/clamd.conf dont le contenu est
    LogFile /var/log/clamav/clamav.log
    LogFileMaxSize 200M
    LogTime yes
    LogClean yes
    LogSyslog yes
    LogFacility LOG_MAIL
    LogVerbose yes
    PidFile /var/run/clamav/clamd.pid
    TemporaryDirectory /var/tmp
    DatabaseDirectory /usr/local/share/clamav
    LocalSocket /tmp/clamd.socket
    VirusEvent /usr/local/bin/send_sms 123456789 "VIRUS ALERT: %v"
    User simscan
    AlgorithmicDetection yes
    ScanOLE2 yes
    ScanPDF yes
    ScanMail yes
    PhishingSignatures yes
    PhishingScanURLs yes
    ScanHTML yes
    ScanArchive yes
    ArchiveBlockEncrypted no
  • pour freshclam, c'est /usr/local/etc/freshclam.confdont le contenu est
    UpdateLogFile /var/log/clamav/freshclam.log
    LogFileMaxSize 2M
    LogTime yes
    LogVerbose yes
    LogSyslog yes
    LogFacility LOG_MAIL
    PidFile /var/run/clamav/freshclam.pid
    DatabaseOwner simscan
    DatabaseMirror database.clamav.net

On pensera à  fournir les droits nécessaires sur les fichiers de log que sont /var/log/clamav/clamav.log et /var/log/clamav/freshclam.log

3. Test en redémarrant les services

On redémarre les services

root@olivia:~# /etc/init.d/clamav-freshclam restart
 * Stopping ClamAV virus database updater freshclam                                   [ OK ]
 * Starting ClamAV virus database updater freshclam                                   [ OK ]
root@olivia:~# /etc/init.d/clamav-daemon restart
 * Stopping ClamAV daemon clamd                                                       [ OK ] 
 * Starting ClamAV daemon clamd                                                       [ OK ]

On a respectivement dans les logs

  • pour /var/log/clamav/clamav.log, on a
    Sat Nov 22 17:11:13 2008 -> clamd daemon 0.94.1 (OS: linux-gnu, ARCH: i386, CPU: i686)
    Sat Nov 22 17:11:13 2008 -> Running as user simscan (UID 3001, GID 3001)
    Sat Nov 22 17:11:13 2008 -> Log file size limited to 209715200 bytes.
    Sat Nov 22 17:11:13 2008 -> Reading databases from /usr/local/share/clamav
    Sat Nov 22 17:11:13 2008 -> Not loading PUA signatures.
    Sat Nov 22 17:11:15 2008 -> Loaded 463891 signatures.
    Sat Nov 22 17:11:15 2008 -> LOCAL: Unix socket file /tmp/clamd.socket
    Sat Nov 22 17:11:15 2008 -> LOCAL: Setting connection queue length to 15
    Sat Nov 22 17:11:15 2008 -> Listening daemon: PID: 20289
    Sat Nov 22 17:11:15 2008 -> Limits: Global size limit set to 104857600 bytes.
    Sat Nov 22 17:11:15 2008 -> Limits: File size limit set to 26214400 bytes.
    Sat Nov 22 17:11:15 2008 -> Limits: Recursion level limit set to 16.
    Sat Nov 22 17:11:15 2008 -> Limits: Files limit set to 10000.
    Sat Nov 22 17:11:15 2008 -> Archive support enabled.
    Sat Nov 22 17:11:15 2008 -> Algorithmic detection enabled.
    Sat Nov 22 17:11:15 2008 -> Portable Executable support enabled.
    Sat Nov 22 17:11:15 2008 -> ELF support enabled.
    Sat Nov 22 17:11:15 2008 -> Mail files support enabled.
    Sat Nov 22 17:11:15 2008 -> OLE2 support enabled.
    Sat Nov 22 17:11:15 2008 -> PDF support enabled.
    Sat Nov 22 17:11:15 2008 -> HTML support enabled.
    Sat Nov 22 17:11:15 2008 -> Self checking every 1800 seconds.
  • pour /var/log/clamav/freshclam.log,on a
    Sat Nov 22 17:11:01 2008 -> --------------------------------------
    Sat Nov 22 17:11:01 2008 -> Current working dir is /usr/local/share/clamav
    Sat Nov 22 17:11:01 2008 -> freshclam daemon 0.94.1 (OS: linux-gnu, ARCH: i386, CPU: i686)
    Sat Nov 22 17:11:01 2008 -> Max retries == 3
    Sat Nov 22 17:11:01 2008 -> ClamAV update process started at Sat Nov 22 17:11:01 2008
    Sat Nov 22 17:11:01 2008 -> Using IPv6 aware code
    Sat Nov 22 17:11:01 2008 -> Querying current.cvd.clamav.net
    Sat Nov 22 17:11:02 2008 -> TTL: 734
    Sat Nov 22 17:11:02 2008 -> Software version from DNS: 0.94.1
    Sat Nov 22 17:11:02 2008 -> main.cvd version from DNS: 49
    Sat Nov 22 17:11:02 2008 -> main.cld is up to date (version: 49, sigs: 437972, f-level: 35, builder: sven)
    Sat Nov 22 17:11:02 2008 -> daily.cvd version from DNS: 8663
    Sat Nov 22 17:11:02 2008 -> daily.cld is up to date (version: 8663, sigs: 26281, f-level: 35, builder: mcichosz)
    Sat Nov 22 17:11:02 2008 -> --------------------------------------

Done!

lundi 17 novembre 2008

[ClamAV] WARNING: Your ClamAV installation is OUTDATED! - Partie 1/2

1. Erreur obtenue

Erreur obtenue lors du lancement de Freshclam

root@olivia:~# freshclam 
ClamAV update process started at Mon Nov 17 10:52:21 2008
SECURITY WARNING: NO SUPPORT FOR DIGITAL SIGNATURES
See the FAQ at http://www.clamav.net/support/faq for an explanation.
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.93.3 Recommended version: 0.94.1
DON'T PANIC! Read http://www.clamav.net/support/faq
Downloading main-48.cdiff [100%]
Downloading main-49.cdiff [100%]
main.cld updated (version: 49, sigs: 437972, f-level: 35, builder: sven)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Current functionality level = 33, recommended = 35
DON'T PANIC! Read http://www.clamav.net/support/faq
WARNING: getfile: daily-7963.cdiff not found on remote server (IP: 212.180.1.29)
WARNING: getpatch: Can't download daily-7963.cdiff from database.clamav.net
WARNING: getfile: daily-7963.cdiff not found on remote server (IP: 193.218.105.9)
WARNING: getpatch: Can't download daily-7963.cdiff from database.clamav.net
WARNING: getfile: daily-7963.cdiff not found on remote server (IP: 193.218.105.9)
WARNING: getpatch: Can't download daily-7963.cdiff from database.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Downloading daily.cvd [100%]
daily.cvd updated (version: 8642, sigs: 26115, f-level: 35, builder: guitar)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Current functionality level = 33, recommended = 35
DON'T PANIC! Read http://www.clamav.net/support/faq
Database updated (464087 signatures) from database.clamav.net (IP: 212.180.1.29)

L'erreur n'est pas blocante mais c'est freshclam qu'il faut pouvoir mettre à  jour

2.Upgrade en Clamav 0.94.1

2-a. sans option spécifique

On fait habituellement

 wget http://freshmeat.net/redir/clamav/29355/url_tgz/clamav-0.94.1.tar.gz
 tar xzf clamav-0.94.1.tar.gz 
cd clamav-0.94.1
 ./configure --with-user=simscan
make
make install

On redémarre les services clamav-daemon et clamav-freshclam

root@olivia:~/clamav-0.94.1# /etc/init.d/clamav-daemon restart
 * Stopping ClamAV daemon clamd                                                                          [ OK ] 
 * Starting ClamAV daemon clamd                                                                                                                                                                                                                                                                                                                               [fail]
Running as user simscan (UID 3001, GID 3001)                                                            
ERROR: Can't open /var/log/clamav/clamav.log in append mode (check permissions!).
ERROR: Problem with internal logger. Please check the permissions on the /var/log/clamav/clamav.log file.
 

Il suffit de changer les permissions sur /var/log/clamav/clamav.log et on redémarre les deux services

root@olivia:~/clamav-0.94.1# chmod 777 /var/log/clamav/clamav.log
root@olivia:~/clamav-0.94.1# /etc/init.d/clamav-daemon restart
 * Stopping ClamAV daemon clamd                                                                                                                                                                          [ OK ] 
 * Starting ClamAV daemon clamd                                                                                                           
 Running as user simscan (UID 3001, GID 3001)
                                                                                                                                                                                                         [ OK ]
root@olivia:~/clamav-0.94.1# /etc/init.d/clamav-freshclam restart
 * Stopping ClamAV virus database updater freshclam                                                                                                                                                      [ OK ] 
 * Starting ClamAV virus database updater freshclam 

En rejouant freshclam, on aura noté le warning suivant

root@olivia:~/clamav-0.94.1# freshclam
ClamAV update process started at Mon Nov 17 11:04:31 2008
SECURITY WARNING: NO SUPPORT FOR DIGITAL SIGNATURES
See the FAQ at http://www.clamav.net/support/faq for an explanation.
main.cld is up to date (version: 49, sigs: 437972, f-level: 35, builder: sven)
daily.cvd is up to date (version: 8642, sigs: 26115, f-level: 35, builder: guitar)

Ce WARNING est dà» en parti à  la levée rencontrée lors du configure

configure: WARNING: ****** GNU MP 2 or newer NOT FOUND - digital signature support will be disabled !

On va maintenant compiler en fontion de la librairie adéquate

2-b. avec option nécessaire pour signatures

Il est nécessaire d'ajouter une librairie

apt-get install libgmp3-dev

Et on reprend tout

 ./configure --with-user=simscan
make
make install
ldconfig

On redémarre les deux services (voir section précédente)

Enfin on rejoue freshclam

root@olivia:~/clamav-0.94.1# freshclam
ClamAV update process started at Mon Nov 17 16:38:08 2008
main.cld is up to date (version: 49, sigs: 437972, f-level: 35, builder: sven)
daily.cvd is up to date (version: 8642, sigs: 26115, f-level: 35, builder: guitar)

Bingo