Page 1 sur 1

[autologin] boot, passphrase, getty, xorg...

Publié : mer. 06 avr. 2016, 14:31
par Moviuro
Plop,

J'aimerais sécuriser mon PC tout en restant ergonomique, ergo : entrer des mots de passe le moins possible, mais rester safe.
Voici typiquement ce que je souhaite faire lors d'une session de boot :
  • Appuyer sur le bouton on/off
  • Entrer le mot de passe LUKS
Et à ce point-ci exactement, je ne veux faire absolument aucune action supplémentaire et arriver sur ma session Xorg personnelle ouverte (startx ou autre).

Cette volonté s'explique simplement par le fait que si le disque dur a été débloqué, il n'a pu l'être que par moi qui connais le mot de passe LUKS. D'où le fait qu'entrer un mot de passe de sesion me semble superflu et lourd.

Ensuite, j'aimerais me protéger de personnes malicieuses qui pourraient tenter de faire crasher Xorg et éventuellement retourner en tty, malgré mon écran de verrouillage (i3lock). L'idée est donc : si Xorg meurt pour une raison quelconque, j'aimerais arriver à l'invite de login habituelle getty (getty@tty1.service).
Et je n'ai aucune idée de comment faire.

Objectif : boot -> Xorg -(kill Xorg)-> demande de login "normale" sur tty1

Mes idées pour le moment :
  • Utiliser exec startx dans mon .*_rc ou .profile : ça suppose que mon utilisateur fait un auto-login sur le tty1 lors du boot (ce que je sais faire). Cela suppose également que cet auto-login n'a lieu qu'une unique fois (ce que j'ai réussi à faire avec Restart=no dans le .service). Le problème ici, c'est que je n'arrive pas à lancer getty pour qu'il demande mon login/mot de passe si Xorg meurt une fois. J'ai droit à :
    • boot -> autologin -> Xorg -(kill Xorg)-> plus rien du tout (pas ergonomique, j'ai un underscore qui clignotte en tty1) ou
    • boot -> autologin -> Xorg -(kill Xorg)-> autologin -> Xorg (pas du tout sécurisé)
Si vous avez des solutions, je suis preneur.
++

Re: [autologin] boot, passphrase, getty, xorg...

Publié : mer. 06 avr. 2016, 17:21
par benjarobin
Bonjour,
Pourquoi ne pas utiliser tout simplement un gestionnaire de connexion ultra léger et le configurer en autologin ?
Par exemple LightDM, voir peut être aussi https://wiki.archlinux.org/index.php/Li ... _autologin ?

Si Xorg plante, je suis presque persuadé que tu n'es pas reconnecté, tu te retrouves sur l'interface de LightDM
En tout cas j'ai configuré ainsi mon Kodi (XBMC), j'arrive ainsi automatiquement sur mon XBMC et si je sort de Kodi alors j'arrive sur l'interface de LightDM

Re: [autologin] boot, passphrase, getty, xorg...

Publié : mer. 06 avr. 2016, 17:48
par Moviuro
C'est effectivement une option. Cependant, les DM changent et meurent (RIP KDM, SLiM...), d'où ma quête pour un truc plus stable ;) (je garde lightdm sous le coude)

Re: [autologin] boot, passphrase, getty, xorg...

Publié : mer. 06 avr. 2016, 20:57
par benjarobin
Si tu veux une bonne gestion / bon fonctionnement des droits / logind / systemd, tu as 3 choix :
* Te connecter via un tty à main (ce que tu ne veux pas)
* Utiliser quelque chose de tout fait : gestionnaire de connexion (un cycle de vie de plus de 10 ans on a vu pire question stabilité)
* Se bricoler quelque chose au risque de mal faire les choses et d'avoir quelque chose de moi sécurisé, ...

Donc si tu veux vraiment partir dans cette direction, je suis sûre qu'il y a moyen de trouver un truc à base de service, mais ce n'est pas trivial à faire...

Re: [autologin] boot, passphrase, getty, xorg...

Publié : jeu. 07 avr. 2016, 12:43
par lemust83
Bonjour
Loubrix a publié chez Manjaro.fr une solution pour se loguer hors DM.
Je me permet de vous passer son tuto:


Un gestionnaire de connexion, ça sert à quoi ? normalement, à saisir son mot de passe, choisir son environnement (quand on en a plusieurs)...
et du coup, si on a qu'un environnement, qu'on est seul à utiliser la machine, et qu'on a activé l'autologin, on a un gestionnaire de connexion qu'on ne voit jamais, qui ne sert à rien :siffle
le mieux serait de s'en passer, ça ferait un service en moins qui tourne en tâche de fond...

ce qu'on va apprendre à faire maintenant peut être dissocié, c'est à dire que l'on va réaliser 3 actions différentes, qui toutes ensembles font démarrer l'ordinateur jusqu'au bureau sans demander le mot de passe, mais on peut n'en utiliser que certaines pour des buts particuliers.

1) Se faire un ~/.xinitrc qui peut lancer un environnement

Ce point permet d'utiliser la commande "startx" sans passer d'argument: l'environnement choisi sera lancé par l'utilisateur...

le meilleur point de départ, c'est de récupérer une copie de celui fourni avec le système:

Code : Tout sélectionner

  cp /etc/X11/xinit/xinitrc ~/.xinitrc

dans notre nouveau ~/.xinitrc (caché) on ne va pas toucher au contenu existant (certaines choses sont utiles), on va juste désactiver ce qui ne nous sert pas, et mettre la commande pour notre environnement:

Code : Tout sélectionner

    #!/bin/sh

    userresources=$HOME/.Xresources
    usermodmap=$HOME/.Xmodmap
    sysresources=/etc/X11/xinit/.Xresources
    sysmodmap=/etc/X11/xinit/.Xmodmap

    # merge in defaults and keymaps

    if [ -f $sysresources ]; then







        xrdb -merge $sysresources

    fi

    if [ -f $sysmodmap ]; then
        xmodmap $sysmodmap
    fi

    if [ -f "$userresources" ]; then







        xrdb -merge "$userresources"

    fi

    if [ -f "$usermodmap" ]; then
        xmodmap "$usermodmap"
    fi

    # start some nice programs

    if [ -d /etc/X11/xinit/xinitrc.d ] ; then
     for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
      [ -x "$f" ] && . "$f"
     done
     unset f
    fi

    # ici on désactive le lancement du gestionnaire de fenêtre de Xorg
    #twm &
    #xclock -geometry 50x50-1+1 &
    #xterm -geometry 80x50+494+51 &
    #xterm -geometry 80x20+494-0 &
    #exec xterm -geometry 80x66+0+0 -name login

    # et on lance NOTRE environnement
    exec startxfce4

il y a plusieurs écoles sur un point, certains disent qu'il doit être exécutable, d'autres non; dans le doute:

Code : Tout sélectionner

 chmod u+x ~/.xinitrc

ici, on a mis Xfce, mais on peut démarrer d'autres environnements; pour trouver la ligne de commande adéquate, il suffit de regarder le fichier *.desktop correspondant à la session qu'on veut lancer dans /usr/share/xsessions, à la ligne "Exec=".

ça c'est fait, quand on lancera "startx", ça démarrera notre environnement...

2) Faire en sorte que "startx" soit lancé automatiquement au login de l'utilisateur

si on arrive sur un terminal après le boot, on saisit son login, son mot de passe, et après il faut lancer la commande "startx" pour obtenir l'environnement graphique; ici, on fera en sorte que ce soit automatique dès que le mot de passe a été entré...
il faut éditer le fichier ~/.bash_profile (s'il n'existe pas, copier celui de /etc/skel ) et s'assurer d'avoir ceci dedans:

Code : Tout sélectionner

  [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx

sauvegarder, c'est tout: "startx" sera automatique quand l'user se connectera...

3) Autologin dans le TTY1 de l'utilisateur

Ici, on fait en sorte que l'utilisateur désigné soit connecté automatiquement à la fin du boot, sans demande de mot de passe, et sur le TTY1 (celui qui fera tourner Xorg).
ça se fait en modifiant le service getty@tty1, au moyen des outils fournis avec Systemd; la modification est placée dans /etc/systemd/system/getty@tty1.service.d et donc pas modifiée par les mises à jour.

Code : Tout sélectionner

sudo systemctl edit getty@tty1.service

ceci ouvre un nouveau fichier avec votre éditeur (Nano par défaut) dans lequel il faut mettre ceci:

Code : Tout sélectionner


    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty --autologin username --noclear %I 38400 linux

il faut bien sûr remplacer "username" par le vrai nom de l'utilisateur.
il peut arriver que DBus ne se lance pas assez vite, et on se retrouve avec certains daemon de la session (comme Thunar sous Xfce) qui tournent sans lui, avec pour résultat, un problème de permissions (sur les clés USB par exemple). on peut donc s'arranger pour que la session ne démarre qu'une fois DBus lancé, en mettant ceci (à la place du code précédent):

Code : Tout sélectionner

    [Unit]
    Requires=dbus.Service
    After=dbus.Service

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty --autologin username --noclear %I 38400 linux

on enregistre (Ctrl-O) et on quitte (Ctrl-X).

et c'est tout...
à ce stade, on peut désactiver le gestionnaire de connexion utilisé, par exemple pour Lightdm

Code : Tout sélectionner

    sudo systemctl disable lightdm.service

ou si Plymouth est utilisé

Code : Tout sélectionner

Code : Tout sélectionner

sudo systemctl disable lightdm-plymouth.service

(au passage, je pense qu'il serait utile de supprimer Plymouth aussi pour gagner de la vitesse).
et on redémarre...

si tout est OK, on pourra désinstaller le gestionnaire de connexion; en cas de pépin, on peut réactiver en remplaçant "disable" par "enable" dans la commande.
Fin du tuto:



J'utilise sur ma tour cette façon de se connecter automatiquement depuis pas mal de temps.

Re: [autologin] boot, passphrase, getty, xorg...

Publié : jeu. 07 avr. 2016, 12:53
par waitnsea
Bonjour ami,
J'ai essayé 2 fois cette technique mot-à-mot avec pour résultat d'abominables plantages...
Je ne suis peut-être pas très doué, mais je conseillerai un petit clonage de sécurité avant de tester...

Re: [autologin] boot, passphrase, getty, xorg...

Publié : ven. 08 avr. 2016, 08:49
par RoyalPanda
Bonjour,

Personnellement c'est exactement ce que j'ai, avec le disque encrypté en entier.
Je retrouve les quelques pages qui m'ont aidé et je poste ça.

Edit :

J'ai retrouvé le plus important :
http://www.pavelkogan.com/2014/05/23/lu ... ncryption/

Ça c'est pour pouvoir booter avec la partition boot encryptée. Pour la clé stocker sur le pc, personnellement je l'ai mise dans le dossier /root/.
Ensuite, autologin via : https://wiki.archlinux.org/index.php/Au ... al_console
Ensuite, auto startx via : https://wiki.archlinux.org/index.php?title=Xinitrc
Et enfin, ne pas oublier de mettre un verrouilleur d'écran si tu n'en as pas dans ton environnement graphique (xscreensaver par exemple).

Voilà,
Bon courage pour la mise en place, ça se fait bien si tu es en anglophile, sinon bah je peux essayer une traduction mais franchement je préfère la première option.

Re: [autologin] boot, passphrase, getty, xorg...

Publié : ven. 08 avr. 2016, 14:44
par Moviuro
lemust83 a écrit :Bonjour
Loubrix a publié chez Manjaro.fr une solution pour se loguer hors DM. [...]
Merci @lemust83 mais tu n'as pas lu ce que je voulais faire. Ta solution ne permet pas de retrouver un login tty normal après avoir fermé Xorg, point sur lequel je pensais avoir bien insisté sur mon post.

Re: [autologin] boot, passphrase, getty, xorg...

Publié : ven. 08 avr. 2016, 23:43
par lemust83
Moviuro a écrit :Ta solution ne permet pas de retrouver un login tty normal après avoir fermé Xorg
Bonjour
Je pensais que la partie "3) Autologin dans le TTY1 de l'utilisateur..." aurais pu permettre de te retrouver automatiquement sur TTY1.

Re: [autologin] boot, passphrase, getty, xorg...

Publié : sam. 09 avr. 2016, 15:05
par HS-157
Avec SystemD, tu ne pas dire lancer un service pour serveur graphique après le service d'auto-login et que si l'un des deux plante arrêter le service d'auto-login ?

Vu que SystemD fait tout, il doit pouvoir faire ça.

Re: [autologin] boot, passphrase, getty, xorg...

Publié : sam. 09 avr. 2016, 16:26
par aminnairi
J'ai cru voir quelques éléments de réponses dans cette discussion très intéressante sur le stackexchange unix. Je n'ai pas eu le temps de tester mais ça peut valoir le coup.

EDIT 1 : je confirme que le exec startx fonctionne bien (après un kill de xorg, on revient sur le prompt user/psswd).

Donc, logiquement

Code : Tout sélectionner

[[ $(tty) == "/dev/tty1" ]] && exec startx
Dans le fichier .bash_profile d'un utilisateur devrait bien fonctionner. Il ne reste plus qu'à éditer le fichier tty1.service et je pense que tu arriveras à ce que tu souhaitais faire à l'origine (LUKS > autologin > exec startx > oops xorgkill > prompt login/psswd > badguy is mad).