Les fichiers journaux

Chap 1. Prise en main du RPi et installation de Mate sur un Raspbian
Chap 2. Installation de OwnCloud sur un Raspberry Pi
Chap 3. Sécuriser votre RPi
Chap 4. Accès au serveur Web Owncloud à partir de son nom de domaine
Chap 5. Connection SSH
Chap 6. Les fichiers journaux
Chap 7. Let’s Encrypt (LE)
Chap 8. Ajout d’un disque dur externe et migration de données
Chap 9. Suppression et ajout d’une interface graphique
Chap 10. Rappel sur les différentes étapes pour mettre en place un server dédié à Owncloud

Chap 6. Les fichiers journaux

Vous vous êtes peut-être demandé où se situe les fichiers journaux (logs) sur votre serveur? C’est ce que je vais traiter dans cette partie. Je ne vais cependant pas me limiter à celà, puisque je vais vous aider à configurer un serveur SMTP pour automatiser l’envoie de certains fichiers journaux par courrier (email).
Je n’ai pas beaucoup parlé des fichiers journaux jusque ici. Pourtant, ces derniers sont très important, surtout pour la compréhension et l’aide au dépannage des problèmes qui peuvent survenir sur nos serveurs.

Où sont enregistré les messages d’erreur du serveur Apache?

Soyons curieux et jettons un coup d’oeil dans le fichier de configuration de /etc/apache2/apache2.conf. Faites une recherche avec le mot clé ErrorLog.

Voici ce que vous devriez trouver.

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a 
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a 
# container, that host's errors will be logged there and not here.
#
ErrorLog ${APACHE_LOG_DIR}/error.log

#
# LogLevel: Control the severity of messages logged to the error_log.
# Available values: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the log level for particular modules, e.g.
# "LogLevel info ssl:warn"
#
LogLevel warn

Ici, il est précisé que les messages d’erreurs doivent se trouver dans le dossier donné par la variable ${APACHE_LOG_DIR}/.Pour avoir des informations sur les variables dans apache, ouvrez donc le fichier /etc/apache2/envvars et faites une recherche encore une fois.

# Only /var/log/apache2 is handled by /etc/logrotate.d/apache2.
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX

Comme on le voit ici, tous les fichiers de log vont être sauvegardés dans le dossier /var/log/apache2/.

Voyons maintenant ce que contient le fichier /var/log/apache2.

$ ls /var/log/apache2
access.log
access.log.1
access.log.X.gz
!---tronquée---!
error.log
error.log.1
error.log.Y.gz
!---tronquée---!
other_vhosts_access.log

On note qu’il y a trois types de fichiers, que je vais présenter un par un ci-dessous.

1. Apache Error Log File
Ce fichier de log (ou fichier journal) contient tous les détails de ce qui s’est mal passé sur le serveur Apache (messages d’erreurs), ainsi que les information de diagnostic, pour y remédier.

2. Apache Access Log File
Le serveur Apache enregistre toutes les requêtes entrantes dans ce fichier journal.

3. Apache vHosts Access File
Les requêtes entrantes en destinations des différents hôtes virtuels y sont enregistrées dans ce fichier.

Maintenant qu’on a vu où sont enregistrés les fichiers journaux, il faut qu’on précise aussi quel niveau d’alerte doit être récupé. Vous avez différents niveaux, mais par défaut, Apache récupère tous les alertes de type WARN.

# emerg : Messages Urgents - Le système est inutilisable
# alert : Messages d’actions qui doivent être effectuées immédiatement
# crit : Messages critiques
# error : Messages d’erreur
# warn : Messages d’avertissement (par défaut)
# notice: Messages normaux mais significatives
# info : Messages d’informations
# debug : Messages de débogage
# trace[1-8]

Et, en ce qui concerne les hôtes virtuels?

Pour pour chaque hôte virtuel, vous pouvez aussi définir quel type d’information vous souhaitez voir dans les fichiers journaux, le niveau d’alerte ainsi que le dossier où les enregistrer.

La template pour s’inspirer des informations à placer dans notre fichier owncloud.conf, se trouve dans le fichier /etc/apache2/sites-enabled/000-default.conf.

$ sudo vim /etc/apache2/sites-available/owncloud.conf

	ServerName .MonDomai.ne
	Redirect permanent / https://.MonDomai.ne

	LogLevel info ssl:warn

	ErrorLog /mon/dossier/error.log
	CustomLog /mon/dossier/access.log combined

Dans cet exemple, nous allons récupérer tous les traffics en HTTPS (level Warning), ainsi que les traffics autre que ceux utilisant le protocol TLS/SSL (level Info), vers notre serveur Owncloud ainsi que ceux en destination de notre serveur Apache.
Je vais m’arrêter ici sans rentrer dans les détails. Vous pouvez toujours lire l’article sur les fichier journaux Apache si vous souhaitez en savoir un peu plus.

Comment faire pour recevoir par courriel, certains fichiers journaux?

Déjà, avant d’aller plus loin, il faut se poser la question de l’utilité d’envoie des fichiers journaux par courriel. Chaque administrateur a sa propre raison de le faire. Personnelement, j’aime bien recevoir par courriel, toutes les activités qui se passent sur mon serveur. Logwatch est de ce fait, un très bon choix.

Installation et configuration de Logwatch

Logwatch est au fait, un script écrit en perl. Son installation et sa configuration est très simple comme nous allons le voir ci-dessous.

$ sudo apt-get install logwatch
!---Tronquée---!
The following extra packages will be installed:
bsd-mailx exim4-base exim4-config exim4-daemon-light libdate-manip-perl
liblockfile-bin liblockfile1 libsys-cpu-perl
Suggested packages:
mail-reader eximon4 exim4-doc-html exim4-doc-info spf-tools-perl swaks
fortune-mod
Recommended packages:
mailx
Vérifier que le programme fonctionne correctement.
$ logwatch
 ################### Logwatch 7.4.0 (03/01/11) #################### 
        Processing Initiated: Wed Apr 13 22:32:28 2016
        Date Range Processed: yesterday
                              ( 2016-Apr-12 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: stdout / text
        Logfiles for Host: raspi
 ################################################################## 
 
 --------------------- httpd Begin ------------------------ 

 Connection attempts using mod_proxy:
    a.b.c.d -> www.xxxxxxx.com:port: 1 Time(s)
    e.f.g.h -> www.yyyyyyy.com:port: 4 Time(s)
 
!--Tronquée--!
 
 ---------------------- httpd End ------------------------- 

 
 --------------------- pam_unix Begin ------------------------ 

 sudo:
    Authentication Failures:
       USERNAME(1000) -> USERNAME: 1 Time(s)
    Sessions Opened:
       USERNAME -> root: 14 Time(s)
 
 systemd-user:
    Unknown Entries:
       session closed for user USERNAME: 3 Time(s)
       session opened for user USERNAME by (uid=0): 3 Time(s)
 
 
 ---------------------- pam_unix End ------------------------- 

 
 --------------------- SSHD Begin ------------------------ 

 
 Users logging in through sshd:
    USERNAME:
       i.j.k.l: 3 times
 
 ---------------------- SSHD End ------------------------- 

 
 --------------------- Sudo (secure-log) Begin ------------------------ 

 
 USERNAME => root
 ----------------
 /bin/cat                       -   1 Time(s).
 /bin/ls                        -   3 Time(s).
 /sbin/iptables                 -   4 Time(s).
 /sbin/iptables-restore         -   2 Time(s).
 /usr/bin/crontab               -   2 Time(s).
 /usr/bin/vim                   -   2 Time(s).
 
 ---------------------- Sudo (secure-log) End ------------------------- 

 
 --------------------- Disk Space Begin ------------------------ 

 Filesystem      Size  Used Avail Use% Mounted on
 /dev/root       7.2G  3.6G  3.4G  52% /
 devtmpfs        483M     0  483M   0% /dev
 /dev/mmcblk0p1   60M   20M   41M  34% /boot
 
 
 ---------------------- Disk Space End ------------------------- 

 
 ###################### Logwatch End #########################

Editer ensuite le fichier /etc/cron.daily/000logwatch, pour que le serveur vous envoie automatiquement les informations obtenues par la commande logwatch comme ci-dessus, par email.

$ sudo vim /etc/cron.daily/00logwatch

Remplacer la ligne,

/usr/sbin/logwatch --output mail

Par

/usr/sbin/logwatch --mailto mon@adresse.mail --detail high

Pour en savoir un peu plus sur CRON, je vous renvoie sur cette page.

Configuration du serveur email

Si vous n’avez pas installé de serveur email, autre que celui installé par défaut sur Debian (Exim), installer l’outil Mailutils, qui vous permettra d’envoyer des emails.
L’installation de l’outil GNU/Mailutils est très simple.
$ apt-get install mailutils
Taper ensuite la commande « mu-tool info » pour avoir plus d’information sur ce que l’outil peut gérer.

$ mu-tool info
VERSION=2.99.98
SYSCONFDIR=/etc
MAILSPOOLDIR=/var/mail/
SCHEME=mbox
LOG_FACILITY=mail
IPV6
USE_LIBPAM
HAVE_LIBLTDL
WITH_KYOTOCABINET
WITH_GNUTLS
WITH_GSASL
WITH_GSSAPI
WITH_GUILE
WITH_PYTHON
WITH_PTHREAD
WITH_READLINE
HAVE_MYSQL
WITH_LDAP
WITH_LIBWRAP
ENABLE_VIRTUAL_DOMAINS
ENABLE_IMAP
ENABLE_POP
ENABLE_MH
ENABLE_MAILDIR
ENABLE_SMTP
ENABLE_SENDMAIL

Vérifier maintenant que vous pouvez envoyer un email du serveur.

Pour faire simple, j’envoie un email sans contenu, d’où le message « le corp du message est vide, etc. »

$ mail -s "Hello World!" mon@adresse.mail < /dev/null
Null message body; hope that's ok
!--Tronquée--!
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

mon@adresse.mail
Mailing to remote domains not supported

Ici, le message d’erreur est très clair. Le message ne peut pas être envoyé, puisque l’envoie d’email à un serveut distant n’est pas supporté.

Vérifions la configuration de notre serveur email, Exim.

$ sudo dpkg-reconfigure exim4-config

Choisissez « internet site », afin de pouvoir envoyer et recevoir les emails via le protocol SMTP.

050

Donner un nom au système email.

051

Ne rien modifier sur cette page.

052

Pour les autres destinations, j’ai choisi le même nom qu’à l’étape précédente.

053

Passer à la page suivante sans rien modifier sur celle-ci.

054

Pareil pour cette page.

055

Cliquer sur NON à la demande de garder un nombre minimal de requêtes DNS.

056

Choisissez ensuite l’option mbox.

057

Choisissez de ne pas découper le fichier de configuration de Exim en plusieurs petits fichiers configurables individuellement.

058

Ajouter toutes les adresses emails sur lesquelles vous souhaitez recevoir les alertes. L’ajout de root n’est pas obligatoire.

059

Mettez à jour les informations du Parefeux

Ajouter une règle dans le parefeux pour autoriser les paquets SMTPs à sortir de votre réseau.

$ sudo vim /etc/iptables.firewall.rules
# Allows SMTP access
-A INPUT -p tcp --dport 25 -j ACCEPT

$ sudo iptables-restore < /etc/iptables.firewall.rules

Vérifier ensuite que la nouvelle règle est prise en compte.

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere loopback/8 reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere tcp dpt:urd
ACCEPT tcp -- anywhere anywhere tcp dpt:submission
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT icmp -- anywhere anywhere icmp echo-request
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere

Envoyer un email de test en ligne de commande, puis de vérifier si vous l’avez reçu dans votre boîte email.

$ mail -s "Hello World!" mon@adresse.mail < /dev/null
Null message body; hope that's ok

Sources et Réferences

How To Configure Logging And Log Rotation In Apache On An Ubuntu VPS
Log Files
Install Logwatch To Keep An Eye On Things
Linux mail command examples – send mails from command line
How To Install the Send-Only Mail Server « Exim » on Ubuntu 12.04
How to send email from the Linux command line
Exim Internet Mailer

Publicités

4 réflexions sur “Les fichiers journaux

  1. Merci beaucoup pour ce tuto.

    Je me demandais si il y avait une technique simple pour
    identifier les comptes utilisateur Owncloud actifs dans un fichier log
    pour simplement éviter d’avoir des comptes morts en service ?

  2. Salut Arcane,
    Merci de ton intérêt pour ce tuto.
    Désolé, mais je n’ai pas de réponses de suite à ta question. Mais je ne pense pas que les fichiers de logs peuvent nous informer sur quel utilisateur est « actif », puisqu’il faut déjà définir ce qu’est un utilisateur « actif ». Est-ce un utilisateur qui se connecte au moins une fois par heure/jour/semaine/mois?
    En fonction de celà, il doit être possible de créer un règle pour ne filtrer que ce qui est actif comme utilisateur.

    • Je crois que j’ai trouver ce que je cherchais.
      Dans le config.php de owncloud on peux ajouter/modifier ces quelques lignes:
      « log_type » => « owncloud »,
      « logfile » => « owncloud.log »,
      « loglevel » => « 3 »,
      « logdateformat » => « F d, Y H:i:s »,

      En principe ça dois donner les indications que je voulais.
      Je vais faire le test et te donnerais peux être un retour dans un prochain post.

      @+.

      • C’est génial, si ça marche, et si t’as des liens à partager, n’hésites pas.
        En ce moment, je dois m’occuper encore de 2 gros chapitres, que je pense publier dès que j’ai un peu plus de temps. Pour faire court, j’attends de voir ce qu’il en sera exactement de owncloud d’ici quelques semaines, et si je devrais migrer vers nextcloud ou pas.

        http://linuxfr.org/news/nextcloud-le-fork-d-owncloud

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s