tag:linuxfr.org,2005:/users/cicatrice/postsLinuxFr.org : les publications de Geoffrey Gouez2010-03-31T14:12:50+02:00/favicon.pngtag:linuxfr.org,2005:Post/285632010-03-31T14:12:50+02:002010-03-31T14:12:50+02:00LDAP, sshd & public key
Bonjour, <br />
<br />
J'ai installé un serveur LDAP dans mon réseau, un Centos-DS (un clone de Fedora-DS et RedHat-DS). <br />
<br />
J'ai une machine sous CentOS 5.2 egalement, et je souhaite pouvoir configurer l'authentification des utilisateurs de cette machine avec LDAP, de sorte que chaque utilisateur puisse se connecter avec son login et mot de passe du LDAP. <br />
J'ai donc installer pam_ldap, et j'ai reussi a tout configurer et j'ai fais quelques tests ; cela marche bien.<br />
<br />
J'ai ensuite enregisté une clef public dans le authorized_keys d'un user dans sa conf SSH. La connexion marche bien. J'ai voulu ensuite testé ce qu'il se passe quand je desactive cet utilisateur dans le LDAP, et j'ai remarqué que l'utilisateur peut toujours se connecter (grace a sa clef).<br />
<br />
Apres plusieurs tests, j'ai l'impression que SSH outre-passe PAM quand un utilisateur se connecte avec une clef privée.<br />
<br />
Quelqu'un pourrait m'infirmer ou me confirmer se comportement ? Avez vous une idée pour une solution ?<br />
<br />
Merci d'avance :)<div><a href="https://linuxfr.org/forums/linux-general/posts/ldap-sshd-public-key.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/83075/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/linux-general/posts/ldap-sshd-public-key#comments">ouvrir dans le navigateur</a>
</p>
Geoffrey Gouezhttps://linuxfr.org/nodes/83075/comments.atomtag:linuxfr.org,2005:Post/274002009-06-18T13:39:25+02:002009-06-18T13:39:25+02:00Script et clef SSH cryptée avec une passphrase : comment outrepasser ?
<span><b>Attention</b></span><br />
Ce script nécessite que vous retourniez en <span>clair</span> de votre passphrase depuis un programme. Il est évident que cela ouvre une jolie faille de sécurité, et qu'il est déconseillé d'utiliser cette méthode à outrance, spécialement en root.<br />
<br />
<span><b>Préambule</b></span><br />
Néanmoins, ce script permet d'outrepasser la demande de passphrase des programmes openssh courant (SSH et SCP spécialement). Cela permet d'executer des crontasks, par exemple, capables de se connecter à des machines par SSH.<br />
<br />
Voici ce que le man de ssh nous dit :<br />
<cite><br />
SSH_ASKPASS If ssh needs a passphrase, it will read the passphrase from the current terminal if it was run from a terminal. If ssh does not have a terminal associated with it but DISPLAY and SSH_ASKPASS are set, it will execute the program specified by SSH_ASKPASS and open an X11 window to read the passphrase. This is particularly useful when calling ssh from a .xsession or related script. (Note that on some machines it may be necessary to redirect the input from /dev/null to make this work.)<br />
</cite><br />
<br />
Plus précisement, la variable SSH_ASKPASS pointe vers un programme capable de retourner la passphrase en <span>clair</span>. <br />
<br />
<br />
<span><b>Exemple</b></span><br />
Ainsi, le script suivant, vous permet de recuperer la clef ~/.ssh/id_rsa prête à l'emploi pour vos futurs connexions :<br />
<code><br />
#!/bin/sh<br />
#<br />
#Chargez un ssh-agent si celui-ci ne l'est pas déjà<br />
if [ -z "$SSH_AGENT_PID" ] ; then<br />
eval `ssh-agent`<br />
fi<br />
#Ajoutez la clef<br />
DISPLAY=nia SSH_ASKPASS=/path/to/passphrase ssh-add ~/.ssh/id_rsa < /dev/null<br />
</code><br />
Notez que la variable DISPLAY est indispensable pour la bonne execution du script, definissez la avec une valeur débile mais courte.<br />
<br />
Voici un exemple de /path/to/passphrase :<br />
<code><br />
#!/bin/sh<br />
#<br />
echo "my_secret_passphrase"<br />
# Soyez poli avec le shell !<br />
exit 0 <br />
</code><br />
<br />
<span><b>Attention</b></span><br />
Je répète une dernière fois que <span>la passphrase est en clair</span> ; donc soyez prudent et raisonnable !<div><a href="https://linuxfr.org/forums/astucesdivers/posts/script-et-clef-ssh-crypt%C3%A9e-avec-une-passphrase-comment-outrepa.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/81943/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/astucesdivers/posts/script-et-clef-ssh-crypt%C3%A9e-avec-une-passphrase-comment-outrepa#comments">ouvrir dans le navigateur</a>
</p>
Geoffrey Gouezhttps://linuxfr.org/nodes/81943/comments.atomtag:linuxfr.org,2005:Post/273442009-06-09T12:03:12+02:002009-06-09T12:03:12+02:00Statistiques dans la console TTY1 au boot de la machine
Ca affiche l'IP, la gateway et le DNS primaire de la machine. Ca affiche également la liste des utilisateurs connectés, depuis où et ce qu'ils font.<br />
Bon mon code à l'air ridicule, mais il marche plutot bien pour ce que j'ai besoin :]<br />
À terme, j'aimerais mettre ce script sur les machines de nos clients ; ca leur permet de nous donner toutes les informations necessaires rapidement pour que l'ont puisse se connecter, ou encore de voir si il n'y a pas un admin de logger avant de tenter un reboot par une interface en ncurses ou gui...<br />
<br />
Testé sous debian, fedora et openSuse...<br />
<br />
<b>Script qui récupère et affiche les statistiques : /root/get_stat.sh</b><br />
<code><br />
#!/bin/sh <br />
# <br />
clear <br />
IFC=eth0 <br />
term_len=80 <br />
echo -en "\e[0;33m" <br />
for i in `seq 1 $term_len` ; do <br />
echo -ne "=" <br />
done <br />
echo -en "\033[0m" <br />
<br />
HOSTNM=`hostname`<br />
echo -en "\r\e[1;37m$HOSTNM\033[0m "<br />
echo ""<br />
IP_ADDR=`ip addr show dev $IFC | grep "inet " | sed -e "s/^.*inet \([0-9\.][0-9\.]*\)..*/\1/"`<br />
GW_ADDR=`route -n | grep "^0.0.0.0 "|awk '{print $2;}'`<br />
DNS_ADDR=`grep "^nameserver" /etc/resolv.conf|head -n1|sed -e "s/^..*[ ][ ]*\([0-9\.][0-9\.]*\).*/\1/"`<br />
<br />
<br />
echo -ne "IP\t"<br />
<br />
if [ -z "$IP_ADDR" ] ; then<br />
echo -e "\e[1;31m -N/A-\033[0m"<br />
else<br />
echo -e "\e[1;32m$IP_ADDR\033[0m"<br />
fi<br />
<br />
echo -ne "GW\t"<br />
<br />
if [ -z "$GW_ADDR" ] ; then<br />
echo -e "\e[1;33m -N/A-\033[0m"<br />
else<br />
echo -e "\e[0;32m$GW_ADDR\033[0m"<br />
fi<br />
<br />
echo -ne "DNS\t"<br />
<br />
if [ -z "$DNS_ADDR" ] ; then<br />
echo -e "\e[1;33m -N/A-\033[0m"<br />
else<br />
echo -e "\e[0;32m$DNS_ADDR\033[0m"<br />
fi<br />
<br />
w<br />
<br />
sleep 2<br />
</code><br />
<br />
<b>Script qui boucle : /root/stat_on_tty.sh</b><br />
<i>Ca permet de pouvoir modifier le script de stats "à chaud" et d'eviter un "respawn too fast".</i><br />
<code><br />
#!/bin/sh<br />
#<br />
while true ; do<br />
source "/root/get_stat.sh"<br />
done <br />
</code><br />
<br />
<b>Modification dans /etc/inittab</b><br />
Avant :<br />
<code><br />
2:2345:respawn:/sbin/getty 38400 tty1<br />
2:23:respawn:/sbin/getty 38400 tty2<br />
</code><br />
<br />
Après : (bon je sais, c'est pas forcement propre de mettre ca dans root, mais c'est pour des VMs de dev pour le moment)<br />
<code><br />
1:2345:respawn:/bin/sh /root/stat_on_tty.sh <br />
2:2345:respawn:/sbin/getty 38400 tty2 <br />
</code><div><a href="https://linuxfr.org/forums/astucesdivers/posts/statistiques-dans-la-console-tty1-au-boot-de-la-machine.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/81889/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/astucesdivers/posts/statistiques-dans-la-console-tty1-au-boot-de-la-machine#comments">ouvrir dans le navigateur</a>
</p>
Geoffrey Gouezhttps://linuxfr.org/nodes/81889/comments.atom