Aller au contenu

linux-sms [Wiki de sebsauvage.net]


Ldfa

Messages recommandés

Je me sers de ce script pour “fliquer” un peu l'utilisation de ma machine personnelle qui est sous Linux. Je reçois donc un SMS quand l'un des événements suivants se produit:

  • Ouverture de session d'un utilisateur.

  • Fermeture de session d'un utilisateur.

  • Échec d'ouverture de session (mauvais mot de passe)

C'est assez simple: On surveille le fichier /var/log/auth.log et quand certains événements sont détectés, on appelle l'API SMS FreeMobile.

Le script ci-dessous est vite bricolé, avec certaines choses codées en dur. Vous devrez sans doute l'adapter.

Je met le script suivant dans /opt/scripts/logs-sms.sh (sans oublier de faire mon chmod):

logs-sms.sh
#!/bin/bash
# Surveillance des logs, et envoi d'un SMS quand un utilisateur se connecte ou déconnecte.
 
logger "SMS: Démarrage script SMS connexions."
 
envoie_sms () {
   chaine="Asus: `date +%Y-%m-%d_%Hh%M` $*"
   logger "SMS: $chaine"
   curl -G -d user=UTILISATEUR -d pass=MOTDEPASSE --data-urlencode msg="$chaine" 'https://smsapi.free-mobile.fr/sendmsg'
}
 
# Expressions régulières pour détecter certains évènements (ouverture session, fermeture session, mauvais mot de passe)
reg_open="pam_unix.*session opened for user (utilisateur1|utilisateur2|utilisateur3|utilisateur4)"
reg_close="pam_unix.*session closed for user (utilisateur1|utilisateur2|utilisateur3|utilisateur4)"
reg_failure="pam_unix.*authentication failure.*user=(.+)"
 
tail -fn0 /var/log/auth.log | \
while read line ; do
   if [[ $line =~ $reg_open ]] ; then
       envoie_sms "Ouverture session ${BASH_REMATCH[1]}"
   fi
   if [[ $line =~ $reg_close ]] ; then
       envoie_sms "Fermeture session ${BASH_REMATCH[1]}"
   fi
   if [[ $line =~ $reg_failure ]] ; then
       envoie_sms "Mauvais mot de passe utilisateur ${BASH_REMATCH[1]}"
   fi
done

Puis j'ai ajouté la ligne suivante avant le exit 0 dans /etc/rc.local afin que ça démarre en même temps que la machine.

nohup /bin/bash /opt/scripts/logs-sms.sh > /dev/null 2>&1 &

Et voilà le genre de SMS que je reçois:

fetch.php?w=400&tok=8eb228&media=linux:l

Notes:

  • Cela fonctionne aussi bien avec l'ouverture de sessions graphique (mdm/lightdm) que pour un su dans un terminal.

  • Je fais utilisateur1|utilisateur2|utilisateur3|utilisateur4 car je ne veux surveiller que les évènements pour ces utilisateurs.

  • Vous devrez sans doute adapter les expressions régulières dans les lignes reg_… en fonction de votre système.

  • J'ai mis en dur le nom de la machine (Asus:)

  • Vous devrez remplacer UTILISATEUR et MOTDEPASSE par vos propres identifiants SMS API FreeMobile (connectez-vous sur votre espace abonné FreeMobile et activez l'option pour les obtenir).
  • L'API SMS FreeMobile est gratuite et fonctionne sur tous les forfaits FreeMobile. Elle ne peut servir qu'à vous envoyer un SMS à vous-même, pas à d'autres personnes.
  • Le même genre de chose aurait pu être réalisé en modifiant la configuration de pam afin qu'il exécute le script sur certains événements d'authentification. L'avantage du script ci-dessus est qu'il peut être étendu à d'autres logs/événements que l'authentification.

  • J'aurais pu utiliser cron, mais je voulais du temps réel.

Afficher l’article complet

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.