\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{jeu. mars 31 13:02:03 CEST 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={iwatch},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Monitoring de système de fichier en temps réel utilisant inotify},
CreationDate={D:20160331130203},
ModDate={D:20160331130203},
Keywords={inotify}
}}
\begin{document}
 
\begin{center}
{\Huge iwatch }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Monitoring de système de fichier en temps réel utilisant inotify}
 
\vspace{10mm}
 
\hspace{1mm}  iWatch est un outil Perl pour inotify pour superviser les changements dans des répertoires et fichiers spécifiques, en envoyant des alarmes à l'administrateur système en temps réel. Il peut:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{Envoyer des notifications via des email sur les changements}
\item[\hspace{1mm} -]{Exécuter les actions programmables immédiatement}
\item[\hspace{1mm} -]{Agir comme un HIDS (Host-based Intrusion Detection System) ou un vérificateur d'intégrité}
\end{description}
 
\hspace{1mm}  iWatch peut être lancé comme service pour comme simple commande. Le mode service utilise un fichier de configuration xml. Le mode ligne de commande n'utilise pas de fichier de configuration.
\vspace{5mm} \\
 
 
\hspace{1mm}  Dans le fichier de configuration, chaque cible peut avoir son propre email de contact.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Options pour le mode service }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -d]{Mode service}
\item[\hspace{1mm} -f]{Spécifie le fichier de configuration. Défaut: /etc/iwatch/iwatch.xml}
\item[\hspace{1mm} -p]{Fichier pid à utiliser. Défaut: /var/run/iwatch.pid}
\item[\hspace{1mm} -v]{mode verbeux}
\end{description}
 
\vspace{1cm}{\huge Options pour le mode ligne de commande }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -c]{Spécifie la commande à exécuter}
\item[\hspace{1mm} -C]{Spécifier l'encodage. Défaut: utf-8}
\item[\hspace{1mm} ]{Spécifie une liste d'événements à monitorer}
\item[\hspace{1mm} -m]{Adresse email de contact}
\item[\hspace{1mm} -r]{Recherche récursivement dans un répertoire}
\item[\hspace{1mm} -s on|off]{Active/désactive les rapports à syslog. Défaut: off}
\item[\hspace{1mm} -t]{Spécifie un filtre (regex) à comparer avec le nom de fichier ou du répertoire.}
\item[\hspace{1mm} -v]{mode verbeux}
\item[\hspace{1mm} -x]{Spécifie un fichier ou répertoire exclus}
\item[\hspace{1mm} -X]{Similaire mais en utilisant une expression régulière}
\end{description}
 
\vspace{1cm}{\huge Chaînes pour la commande }
 
\
 
\hspace{1mm}  En utilisant l'option -c, ces chaînes sont disponible:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} \%c]{Event cookie number}
\item[\hspace{1mm} \%e]{Nom de l'événement}
\item[\hspace{1mm} \%f]{Chemin complet du fichier}
\item[\hspace{1mm} \%F]{L'ancien nom du fichier (moved\_to)}
\item[\hspace{1mm} \%p]{Nom du programme (iWatch)}
\item[\hspace{1mm} \%v]{Numéro de version}
\end{description}
 
\vspace{1cm}{\huge Événements }
 
\
 
\hspace{1mm}  Les événements suivant sont possibles pour l'options -e:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} access]{Le fichier est accédé}
\item[\hspace{1mm} attrib]{Les attributs sont changés}
\item[\hspace{1mm} close]{Le fichier est fermé}
\item[\hspace{1mm} close\_nowrite]{fichier fermé après avoir été ouvert en mode lecture-seule}
\item[\hspace{1mm} close\_write]{fichier fermé après avoir été ouvert en mode lecture écriture}
\item[\hspace{1mm} create]{Fichier créé dans le répertoire}
\item[\hspace{1mm} delete]{Fichier supprimé dans le répertoire}
\item[\hspace{1mm} delete\_self]{Le fichier supervisé a été supprimé}
\item[\hspace{1mm} ignored]{Le fichier a été ignoré}
\item[\hspace{1mm} isdir]{en événement s'est produit avec le repertoire}
\item[\hspace{1mm} modify]{Le fichier a été modifié}
\item[\hspace{1mm} move]{un fichier/répertoire dans le répertoire recherché a été déplacé}
\item[\hspace{1mm} moved\_from]{Un fichier a été déplacé depuis}
\item[\hspace{1mm} moved\_to]{Un fichier a été déplacé vers}
\item[\hspace{1mm} oneshot]{Seulement avoyé une fois}
\item[\hspace{1mm} open]{Le fichier a été ouvert}
\item[\hspace{1mm} q\_overflow]{La file d'événement déborde}
\item[\hspace{1mm} unmount]{Le système de fichier sur lequel le fichier existe a été démonté}
\item[\hspace{1mm} default]{= close\_write, create, delete, move, delete\_self et move\_self}
\item[\hspace{1mm} all\_events]{Tous les événements}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Monitor les changements dans le /tmp avec les événements pas défaut: \\
\hspace{1mm} \textbf{iwatch /tmp} \\
\hspace{1mm} Monitor seulement les événements access et create dans /etc, récursivement, à l'exception de /etc/mail, et envoie un mail à root@example.com \\
\hspace{1mm} \textbf{iwatch -r -e access,create -m root@example.com -x /etc/mail /etc} \\
\hspace{1mm} Monitor /bin récursivement, et exécute les commandes w et ps -ef \\
\hspace{1mm} \textbf{iwatch -r -c (w;ps -ef)|mail -s '\%f was changed' root@localhost /bin} \\
\hspace{1mm} Monitor \textasciitilde/projects, excluant les répertoires .svn. \\
\hspace{1mm} \textbf{iwatch -r -X '.svn' \textasciitilde/projects} \\
 
\hspace{1mm} Exemple de fichier de configuration
 
{\ttfamily
<?xml version="1.0" ?>\\ \hspace{2mm}<!DOCTYPE config SYSTEM "/etc/iwatch/iwatch.dtd" >\\ \hspace{2mm}\\ <config>\\ \hspace{2mm}<guard email="root@example.com" name="iWatch"/>\\ \hspace{2mm}<watchlist>\\ \hspace{2mm}<title>WEB server integrity monitoring</title>\\ \hspace{2mm}<contactpoint email="someone@example.com" name="Administrator"/>\\ \hspace{2mm}\hspace{2mm}<path type="recursive" syslog="on" alert="off" exec="echo \%p: \%e \%f | /usr/bin/sendxmpp -t foo@jabber-br.org">/var/www</path>\\ \hspace{2mm}\hspace{2mm}<path type="exception">/var/www/counter</path>\\ \hspace{2mm}</watchlist>\\ </config>\\
}
\vspace{8mm}
 
\hspace{1mm}  Les 2 premières lignes définissent la version XML et le fichier qui définis le motif utilisé par iWatch (défaut: /etc/iwatch/iwatch.dtd).
\vspace{5mm} \\
 
 
\hspace{1mm}  La déclaration <config> est utilisé pour marquer le port de départ de la configuration. La ligne guard email est utilisée pour spécifier l'email et le nom du champ From:. watchlist délimite un block de définitions à superviser. La déclaration watchlist peut être spécifié plusieurs fois.
\vspace{5mm} \\
 
 
\hspace{1mm}  title est utilisé pour ajouter un titre pour identifier le block. contactpoint est l'email du contact. path peut monitorer un fichier/répertoire ou exécuter des actions.
\vspace{5mm} \\
 
 
\hspace{1mm} Autre exemple possédant 3 watchlist:
 
{\ttfamily
<?xml version="1.0" ?>\\ <!DOCTYPE config SYSTEM "iwatch.dtd">\\ \hspace{2mm}\\ <config>\\ \hspace{2mm}<guard email="admin@localhost" name="iWatch"></guard>\\ \hspace{2mm}<watchlist>\\ \hspace{2mm}\hspace{2mm}<title>Public Website</title>\\ \hspace{2mm}\hspace{2mm}<contactpoint email="webmaster@example.com" name="WebMaster"/>\\ \hspace{2mm}\hspace{2mm}<path type="single">/var/www/localhost/htdocs</path>\\ \hspace{2mm}\hspace{2mm}<path type="single" syslog="on">/var/www/localhost/htdocs/About</path>\\ \hspace{2mm}\hspace{2mm}<path type="recursive">/var/www/localhost/htdocs/Photos</path>\\ \hspace{2mm}</watchlist>\\ \hspace{2mm}<watchlist>\\ \hspace{2mm}\hspace{2mm}<title>Operating System</title>\\ \hspace{2mm}\hspace{2mm}<contactpoint email="admin@localhost" name="Administrator"/>\\ \hspace{2mm}\hspace{2mm}<path type="recursive">/etc/apache2</path>\\ \hspace{2mm}\hspace{2mm}<path type="single">/etc/passwd</path>\\ \hspace{2mm}\hspace{2mm}<path type="recursive">/etc/mail</path>\\ \hspace{2mm}\hspace{2mm}<path type="exception">/etc/mail/statistics</path>\\ \hspace{2mm}\hspace{2mm}<path type="single" filter="shadow|passwd">/etc</path>\\ \hspace{2mm}</watchlist>\\ \hspace{2mm}<watchlist>\\ \hspace{2mm}\hspace{2mm}<title>Only Test</title>\\ \hspace{2mm}\hspace{2mm}<contactpoint email="root@localhost" name="Administrator"/>\\ \hspace{2mm}\hspace{2mm}<path type="single" alert="off" exec="(w;ps -ef)|mail -s \%f root@localhost">/tmp/dir1</path>\\ \hspace{2mm}\hspace{2mm}<path type="single" events="access,close" alert="off" exec="(w;ps -ef)|mail -s \%f root@localhost">/tmp/dir2</path>\\ \hspace{2mm}\hspace{2mm}<path type="single" events="default,access" alert="off" exec="(w;ps -ef)|mail -s '\%f is accessed' root@localhost">/tmp/dir3</path>\\ \hspace{2mm}\hspace{2mm}<path type="single" events="all\_events" alert="off">/tmp/dir4</path>\\ \hspace{2mm}</watchlist>\\ </config>\\
}
\vspace{8mm}
\end{flushleft}
\end{document}
