Pas toujours évident de s'apercevoir que des pages ou des scripts ont été modifiés pas des méchants, surtout quand il s'agit de modifications invisibles qui n'apparaissent que dans la source d'une page. J'ai déjà goûté.
Voici un petit script de surveillance qu'une tâche cron pourra exécuter. Elle liste simplement la liste des fichiers modifiés depuis X et s'il y en a, un email est envoyé pour prévenir.
Les éléments à renseigner :
USERCPANEL = Votre utilisateur CPANEL
nbminutes = Nombre de minutes en arrière à vérifier. Exemple '-120' = 2 heures. Le script listera les fichiers modifiés dans les dernière 2 heures.
from_address = Email expéditeur (compte sur le serveur).
mailpass = Mot de passe du email (pour permettre l'envoi)
to_address = Email de destination
emailsubject = Sujet du email
dossiers = les dossiers à surveiller. Si vous n'avez qu'un site principal sur votre hébergement World, c'est tout probablement public_html. Le script se charge d'ajouter /home/USERCPANEL/ au début.
Vous pourriez ajouter public_ftp aussi, ça ne mange pas de pain.
Si vous avez des domaines supplémentaires, ils sont généralement dans /home/USERCPANEL/domainesup.com, ajouter simplement domainesup.com
dossiersexclus = Les dossiers à exclure de la surveillance. Utile pour éviter de recevoir des emails parce que le cache de votre site s'est regénéré. Mettre simplement /LEDOSSIERAEXCLURE
Le script se chargera d'ajouter /home/USERCPANEL/DOSSIERSURVEILLE/DOSSIEREXCLUS
C'est tout....
Le code
Sauvegardez le fichier au nom (exemple) surveillance.sh et envoyez sur votre serveur en ftp (identifiant principal) dans un dossier (exemple) /backups ou /scripts
Modifiez les permission en 744.
Dans votre CPANEL, ajoutez une tâche cron
Toutes les 2 heures, le fichier sera exécuté et s'il y a eu des changements non prévus, un email vous sera envoyé avec la liste des fichiers concernés.
Testé sur un World avec des domaines supplémentaires.
Voici un petit script de surveillance qu'une tâche cron pourra exécuter. Elle liste simplement la liste des fichiers modifiés depuis X et s'il y en a, un email est envoyé pour prévenir.
Les éléments à renseigner :
USERCPANEL = Votre utilisateur CPANEL
nbminutes = Nombre de minutes en arrière à vérifier. Exemple '-120' = 2 heures. Le script listera les fichiers modifiés dans les dernière 2 heures.
from_address = Email expéditeur (compte sur le serveur).
mailpass = Mot de passe du email (pour permettre l'envoi)
to_address = Email de destination
emailsubject = Sujet du email
dossiers = les dossiers à surveiller. Si vous n'avez qu'un site principal sur votre hébergement World, c'est tout probablement public_html. Le script se charge d'ajouter /home/USERCPANEL/ au début.
Vous pourriez ajouter public_ftp aussi, ça ne mange pas de pain.
Si vous avez des domaines supplémentaires, ils sont généralement dans /home/USERCPANEL/domainesup.com, ajouter simplement domainesup.com
dossiersexclus = Les dossiers à exclure de la surveillance. Utile pour éviter de recevoir des emails parce que le cache de votre site s'est regénéré. Mettre simplement /LEDOSSIERAEXCLURE
Le script se chargera d'ajouter /home/USERCPANEL/DOSSIERSURVEILLE/DOSSIEREXCLUS
C'est tout....
Le code
Code:
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
import smtplib
from email.mime.text import MIMEText
########################## VARIABLES
# USERCPANEL
USER = 'VOTREUTILISATEURCPANEL'
# -120 = 120 minutes - cherche les changements effectués dans les 2 heures précédentes
nbminutes = '-120'
# Email Expéditeur
from_address = '[email protected]'
# SI BESOIN - Mot de passe du email expéditeur (pour l'envoi)
mailpass = 'motdepasseemail'
# Email Destination
to_address = '[email protected]'
# Sujet
emailsubject = 'Changements dans les fichiers'
# Dossiers à surveiller - public_html = site principal, DOMAINE1 = site supplémentaire.
dossiers = ['public_html',
'DOMAINE1.com',
'DOMAINE2.com',
]
# Dossiers à exclure.
# Garder en mémoire que le chemin correspondra à /home/UTILISATEURCPANEL/DOSSIERSURVEILLE/DOSSIEREXCLUS
# Par exemple, pour exclure /home/UTILISATEURCPANEL/public_html/wp-content/cache mettre seulement '/wp-content/cache'
dossiersexclus = ['/wp-content/cache',
'/assets/cache',
'/cache',
'/templates_c',
'/.ftpquota',
'/.well-known',
]
# FIN DES VARIABLES - NE PAS MODIFIER LE RESTE
########################################
# Fonction email
def send_mail(from_address, to_address, subject, text):
msg = MIMEText(text)
msg['subject'] = subject
msg['From'] = from_address
msg['To'] = to_address
s = smtplib.SMTP('localhost')
#s = smtplib.SMTP('localhost:587')
#s.ehlo()
#s.starttls()
#s.login(from_address, mailpass)
s.sendmail(from_address, to_address, msg.as_string())
s.quit
import os
import subprocess
import re
import string
# Fonction lisant les lignes de la commande find,
def check_lines(output, userpath):
new_output = ""
# Sépare ligne par ligne
lines = output.split('\n')
for line in lines:
exclude_it = False
# Exclusions
#
for ex_path in dossiersexclus:
#if (re.match(userpath + ex_path , line) != None):
matchObj = re.match(r'(.*)'+ex_path+'(.*?).*' , line, re.M|re.I)
if matchObj:
exclude_it = True
break
# Exclus les fichiers error_log
if (re.match(r'(.*error_log$)', line) != None):
exclude_it = True
if (exclude_it == False) and (line !=''):
new_output += line + '\n'
return new_output
message = ""
# Excution de la commande find sur les éléments à surveiller
for fwatch in dossiers:
userpath = "/home/" + USER + "/" + fwatch
# Commande find
p = subprocess.Popen(["find", userpath, "-name", "*", "-mmin", nbminutes, "-print"], stdout = subprocess.PIPE)
output, err = p.communicate()
if (output != ""):
processed_output = check_lines(output, userpath)
if (processed_output != ''):
message += "Dossier: " + fwatch + '\n'
message += processed_output + '\n'
# Si changement, envoi du email - sinon, rien.
if (message != ""):
send_mail(from_address, to_address, emailsubject, message)
# FIN
Modifiez les permission en 744.
Dans votre CPANEL, ajoutez une tâche cron
Code:
0 */2 * * * /home/USERCPANEL/backups/surveillance.sh >/dev/null 2>&1
Testé sur un World avec des domaines supplémentaires.
Dernière édition: