Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
tutoriel:restrictions_horaires [Le 04/06/2008, 10:09]
Agone fautes d'orthographe
tutoriel:restrictions_horaires [Le 30/09/2016, 17:02]
82.250.123.21 [Configuration semi-automatique par script]
Ligne 1: Ligne 1:
-{{tag>tutoriel ​sécurité}}+{{tag>​sécurité ​tutoriel pam}}
 ---- ----
  
-====== Les Restrictions Horaires ​sous Linux ======+====== Les restrictions horaires ​sous Linux ======
  
  
-===== Introduction =====+Avec Ubuntu Linux, il est possible d'​affecter à votre ordinateur des **restrictions horaires**, afin d'​empêcher la connexion d'un ou plusieurs utilisateurs à votre système. 
 +Grâce aux restrictions horaires, vous pourrez, par exemple, limiter l'​accès à l'​ordinateur pour vos enfants (une sorte de [[:​tutoriel:​comment_mettre_en_place_un_controle_parental|Contrôle Parental]], en somme), ou bien encore protéger la connexion à votre serveur durant certaines heures.
  
-Avec Ubuntu Linux, il est possible d'affecter ​à votre ordinateur des **Restrictions Horaires** , afin d'​empêcher la connexion d'un ou plusieurs utilisateurs à votre système. +2 grandes orientations s'offrent ​à vous: 
-Grâce aux Restrictions Horaires, vous pourrez, par exemple, limiter l'​accès à l'​ordinateur pour vos enfants ​(une sorte de [[comment_mettre_en_place_un_controle_parental|Contrôle Parental]], en somme), ou bien encore protéger la connexion à votre serveur durant certaines heures.+  ​utiliser une interface graphique (utilisateur normal) 
 +  ​configurer manuellement des fichiers textes ​(utilisateur avancé)
  
-=== Comprendre ce que vous allez faire ===+===== Utilisation d'une interface graphique ===== 
 + 
 +Pour utiliser une interface graphique, consulter la page sur le logiciel [[:​timekpr]]. 
 + 
 +===== Configuration semi-automatique par script ===== 
 + 
 + 
 +Le script **CTparental** que l'on retrouve dans la page de documentation [[:​tutoriel:​comment_mettre_en_place_un_controle_parental#​dnsmasq_et_blackliste_de_l_universite_de_toulouse|comment mettre en place un contrôle parental]] 
 +se base sur les principes décrits dans la partie **Configuration manuelle**, mais automatise toutes les étapes. 
 + 
 +Une fois le script installé il vous suffira de lancer : 
 +  sudo CTparental -off  # si vous ne voulez pas du filtrage sur Internet. 
 + 
 +puis : 
 + 
 +  sudo CTparental -tlo  # pour paramétrer les plages horaires de connexion de chaque usager. Attention à bien se laisser un compte en accès H24 7/7 
 + 
 + 
 +===== Configuration manuelle ===== 
 + 
 +==== Comprendre ce que vous allez faire ====
 Tout au long de ce tutoriel, nous allons nous servir du **Module PAM** (Pluggable Authentication Modules, en anglais //modules d'​authentification enfichables//​). Il permet de contrôler l'​authentification des utilisateurs lorsqu'​ils se connectent. Puis, nous utiliserons les fichiers de configuration de sécurité afin de définir les heures de connexion autorisées.\\ ​ Tout au long de ce tutoriel, nous allons nous servir du **Module PAM** (Pluggable Authentication Modules, en anglais //modules d'​authentification enfichables//​). Il permet de contrôler l'​authentification des utilisateurs lorsqu'​ils se connectent. Puis, nous utiliserons les fichiers de configuration de sécurité afin de définir les heures de connexion autorisées.\\ ​
 Ces manipulations peuvent être exécutées sur **n'​importe quelle version d'​Ubuntu**,​ et ne nécessitent qu'un simple éditeur de texte ([[:vim]], [[:emacs]], [[:nano]], [[:gedit]], [[:kate]], pour ne citer qu'​eux).\\ ​ Ces manipulations peuvent être exécutées sur **n'​importe quelle version d'​Ubuntu**,​ et ne nécessitent qu'un simple éditeur de texte ([[:vim]], [[:emacs]], [[:nano]], [[:gedit]], [[:kate]], pour ne citer qu'​eux).\\ ​
  
-===== Activer les Restrictions Horaires via le Module PAM =====+==== Activer les Restrictions Horaires via le Module PAM ====
 Tout d'​abord,​ commencez par vous rendre dans le répertoire ''/​etc/​pam.d/'',​ où se situe l'​ensemble des services configurables : Tout d'​abord,​ commencez par vous rendre dans le répertoire ''/​etc/​pam.d/'',​ où se situe l'​ensemble des services configurables :
 <​code>​ <​code>​
Ligne 22: Ligne 44:
 chsh  common-password ​ cupsys ​         gnome-screensaver ​ passwd ​ su chsh  common-password ​ cupsys ​         gnome-screensaver ​ passwd ​ su
 </​code>​ </​code>​
-Si nous souhaitons bloquer la connexion à l'​ordinateur,​ nous allons devoir modifier le service [[:gdm]]. [[:​tutoriel:​comment_editer_un_fichier|Editez donc le fichier]] ''​gdm''​ et ajoutez-y cette ligne de code (à la fin du fichier) : +Si nous souhaitons bloquer la connexion à l'​ordinateur,​ nous allons devoir modifier le service [[:lightdm]]. [[:​tutoriel:​comment_editer_un_fichier|Editez donc le fichier]] ​ ''​lightdm''​ et ajoutez-y cette ligne de code (à la fin du fichier) : 
-<code>+<file>
 account required pam_time.so account required pam_time.so
-</code+</file
-GDM est l'​écran de connexion des distributions Ubuntu, Edubuntu et Xubuntu. Pour Kubuntu, qui utilise KDE, le service se nomme **kdm**, ce sera donc ce fichier qu'il faudra ouvrir.\\+Si vous utilisez ​**kdm**, ce sera donc ce fichier qu'il faudra ouvrir.\\
 Et voilà, c'est terminé pour la configuration du module PAM ! Cela aura pour effet d'​activer le contrôle des heures sur ce service . Et voilà, c'est terminé pour la configuration du module PAM ! Cela aura pour effet d'​activer le contrôle des heures sur ce service .
-<note important>​Si vous possédez un serveur, vous ne disposez sûrement pas d'​interface graphique. Auquel cas, GDM/​KDM ​n'est pas installé et la connexion ne sera pas bloquée. Pour empêcher la connexion aux [[:TTY]], il faut modifier le fichier ''​login''​ du même dossier, et y ajouter la même ligne de code que celle précedemment ​citée.+<note important>​Si vous possédez un serveur, vous ne disposez sûrement pas d'​interface graphique. Auquel cas, Lightdm ​n'est pas installé et la connexion ne sera pas bloquée. Pour empêcher la connexion aux [[:TTY]], il faut modifier le fichier ''​login''​ du même dossier, et y ajouter la même ligne de code que celle précédemment ​citée.
 Cette manipulation est également valable pour les personnes qui ont installé une interface graphique et qui souhaitent bloquer l'​accès à l'​écran de connexion ainsi qu'aux terminaux.</​note>​ Cette manipulation est également valable pour les personnes qui ont installé une interface graphique et qui souhaitent bloquer l'​accès à l'​écran de connexion ainsi qu'aux terminaux.</​note>​
  
Ligne 35: Ligne 57:
  
  
-===== Configurer les Horaires d'​Accès =====+ 
 +==== Configurer les Horaires d'​Accès ==== 
 Maintenant que le service PAM a été activé, nous n'​avons plus qu'à configurer les heures d'​accès. Ouvrez le répertoire ''/​etc/​security''​. Plusieurs fichiers de configuration s'​offrent à vous : Maintenant que le service PAM a été activé, nous n'​avons plus qu'à configurer les heures d'​accès. Ouvrez le répertoire ''/​etc/​security''​. Plusieurs fichiers de configuration s'​offrent à vous :
 <​code>​ <​code>​
Ligne 84: Ligne 108:
 ''​mathilde''​ est autorisée à se connecter tous les jours de 13H20 à 15H20, puis de 16H00 à 20H30 : ''​mathilde''​ est autorisée à se connecter tous les jours de 13H20 à 15H20, puis de 16H00 à 20H30 :
 <​code>​ <​code>​
-*;​*;​mathilde:Al1320-1520|Al1600-2030;+*;​*;​mathilde;Al1320-1520|Al1600-2030
 </​code>​ </​code>​
 ''​pierre'',​ ''​franck''​ et ''​florian''​ sont autorisés à se connecter de 14H00 à 18H45 pendant les jours de semaine, et de 14H00 à 22H15 pendant le week-end : ''​pierre'',​ ''​franck''​ et ''​florian''​ sont autorisés à se connecter de 14H00 à 18H45 pendant les jours de semaine, et de 14H00 à 22H15 pendant le week-end :
Ligne 97: Ligne 121:
 </​code>​ </​code>​
  
-===== Expiration d'une Session ​=====+ 
 +==== Expiration d'une Session ====
 Lorsqu'​une Session arrive à expiration (qu'​elle dépasse la limite horaire alors que l'​utilisateur est déjà connecté), le module PAM ne peut atteindre l'​utilisateur concerné. En effet, si ''​mathilde''​ se connecte pendant les horaires de temps autorisées,​ elle est tout à fait libre de dépasser ces plages horaires ! Pour cela, nous allons utiliser un nouveau programme : [[:cron]]. Cette application exécute des commandes à des intervalles de temps données. Dans notre cas, nous allons faire usage de la commande ''​skill -KILL -u''​ pour déconnecter l'​utilisateur lorsque la Session expire. \\  Lorsqu'​une Session arrive à expiration (qu'​elle dépasse la limite horaire alors que l'​utilisateur est déjà connecté), le module PAM ne peut atteindre l'​utilisateur concerné. En effet, si ''​mathilde''​ se connecte pendant les horaires de temps autorisées,​ elle est tout à fait libre de dépasser ces plages horaires ! Pour cela, nous allons utiliser un nouveau programme : [[:cron]]. Cette application exécute des commandes à des intervalles de temps données. Dans notre cas, nous allons faire usage de la commande ''​skill -KILL -u''​ pour déconnecter l'​utilisateur lorsque la Session expire. \\ 
 La Manipulation est très simple. [[:​tutoriel:​comment_editer_un_fichier|Editez simplement le fichier]] ''/​etc/​crontab''​. Ajoutez-y alors la ligne de code suivante : La Manipulation est très simple. [[:​tutoriel:​comment_editer_un_fichier|Editez simplement le fichier]] ''/​etc/​crontab''​. Ajoutez-y alors la ligne de code suivante :
Ligne 105: Ligne 130:
 Comme précédemment,​ remplacez les champs ''​Minute''​ et ''​Heure''​ aux horaires désirées. Puis, remplissez le champ ''​Jour(s)''​ par le(s) jour(s) interdit(s),​ ou tapez simplement une étoile (*) pour indiquer tous les jours de la semaine. Comme précédemment,​ remplacez les champs ''​Minute''​ et ''​Heure''​ aux horaires désirées. Puis, remplissez le champ ''​Jour(s)''​ par le(s) jour(s) interdit(s),​ ou tapez simplement une étoile (*) pour indiquer tous les jours de la semaine.
 Enfin, remplacez le champ ''​Utilisateur''​ par le login du compte à bloquer, et voilà ! Enfin, remplacez le champ ''​Utilisateur''​ par le login du compte à bloquer, et voilà !
-<note warning>​Les Jours de se notent pas de la même façon avec les tâches cron ! Voici la liste des abréviations à utiliser avec ce programme :+<note warning>​Les Jours ne se notent pas de la même façon avec les tâches cron ! Voici la liste des abréviations à utiliser avec ce programme :
 <​code>​ <​code>​
 mon : Lundi fri : Vendredi mon : Lundi fri : Vendredi
Ligne 132: Ligne 157:
 15 22    * * sat,​sun ​              ​root ​   skill -KILL -u pierre && skill -KILL -u franck && skill -KILL -u florian 15 22    * * sat,​sun ​              ​root ​   skill -KILL -u pierre && skill -KILL -u franck && skill -KILL -u florian
 </​code>​ </​code>​
-<​note>​La commande ''​skill -KILL -u''​ déconnecte l'​utilisateur de l'​interface graphique, mais aussi des TTY. Elle est donc parfaitement utilisable pour les administrateurs de serveur.\\ Cependant, cette commande est immédiate et la déconnection ​sera faite sans avertissement. Il serait donc préférable de prévenir de l'​installation de ce dispositif les utilisateurs de l'​ordinateur ou du réseau en question !</​note>​+<​note>​La commande ''​skill -KILL -u''​ déconnecte l'​utilisateur de l'​interface graphique, mais aussi des TTY. Elle est donc parfaitement utilisable pour les administrateurs de serveur.\\ Cependant, cette commande est immédiate et la déconnexion ​sera faite sans avertissement. Il serait donc préférable de prévenir de l'​installation de ce dispositif les utilisateurs de l'​ordinateur ou du réseau en question !</​note>​ 
 + 
 +Il est possible de prévenir les utilisateurs avec une commande wall lancée par cron quelques minutes avant la fin de la plage horaire, qui sera affichée dans les terminaux de tous les utilisateurs. 
 +<​code>​ 
 +40 18    * * mon,​tue,​wed,​thu,​fri ​  root echo "fin de session dans 5 minutes"​ | wall 
 +</​code>​ 
 + 
 +Pour prévenir les utilisateurs d'​interface graphique, on peut utiliser à la place de wall la commande notify-send qui est dans le paquet [[apt>​libnotify-bin|libnotify-bin]]. 
 +<​code>​ 
 +40 18    * * mon,​tue,​wed,​thu,​fri ​  ​pierre DISPLAY=:0 notify-send "fin de session dans 5 minutes"​ 
 +</​code>​ 
 + 
 +===== Voir aussi ===== 
 + 
 +FIXME 
 + 
 + 
 +---- 
 + 
 + 
 +//​Contributeurs principaux : //
  • tutoriel/restrictions_horaires.txt
  • Dernière modification: Le 10/05/2018, 18:48
  • par bcag2