Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conseils sur la sécurisation de ses accès par SSH

26 réponses
Avatar
Olivier
--001a114196b4d667d0052ff54ae2
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Bonjour,

Je me connecte r=C3=A9guli=C3=A8rement par SSH =C3=A0 des serveurs sous Deb=
ian.
Par habitude, j'interdis sur ces serveurs l'acc=C3=A8s au compte root par S=
SH.
J'acc=C3=A8de =C3=A0 ces machines depuis un PC sous Debian, mais je peux pl=
us
rarement le faire depuis un PC sous Windows ou un smartphone sous Android.

Je souhaite am=C3=A9liorer la s=C3=A9curit=C3=A9 de ces acc=C3=A8s et me si=
mplifier la vie en
changeant mes habitudes.

J'ai pens=C3=A9 =C3=A0 la chose suivante:

- sur toutes les machines distantes (sous Debian), l'acc=C3=A8s par SSH s'o=
p=C3=A8re
uniquement par cl=C3=A9s SSH,
- je stocke mes propres cl=C3=A9s SSH sur une cl=C3=A9 USB (voir plus loin)=
qui comme
mon smartphone est toujours avec moi,
- quand je veux me connecter =C3=A0 une machine distante depuis un PC, j'in=
s=C3=A8re
la cl=C3=A9 USB dans le PC, je lance SSH agent en lui indiquant qu'il pourr=
a
trouver mes cl=C3=A9s sur la cl=C3=A9 USB
- quand je lance SSH agent, celui-ci me demande un mot de passe
- sur toutes les machines distantes, j'autorise les cl=C3=A9s SSH qui se
trouvent sur ma cl=C3=A9 USB et la cl=C3=A9 SSH sur mon smartphone
- en cas de perte de ma cl=C3=A9 USB ou de mon smartphone, je r=C3=A9pudie =
la cl=C3=A9 SSH
correspondante sur tous les machines qui l'autorise et je rajoute la
nouvelle cl=C3=A9 SSH.

J'utilise ici le terme cl=C3=A9 USB =C3=A0 la fois comme un terme g=C3=A9n=
=C3=A9rique d=C3=A9signant
un appareil portable avec une interface USB, et en pensant aux simples cl=
=C3=A9s
USB du commerce.


Mes questions sont nombreuses:
- Ai-je pens=C3=A9 =C3=A0 tout ?
- Que choisir comme cl=C3=A9 USB ?
- Comment la prot=C3=A9ger sans perdre la possibilit=C3=A9 de l'utiliser s=
ur une
machine occasionnelle (*) ?
- Y-a-t-il une astuce particuli=C3=A8re (ie une option d'un logiciel) pour
conserver la liste des machines sur lesquelles une cl=C3=A9 SSH a =C3=A9t=
=C3=A9 copi=C3=A9e
afin de ne pas oublier cette machine en cas de r=C3=A9pudiation) ?
- Conseils, remarques et suggestions ?

Slts

(*) Il m'arrive souvent, sur une machine occasionnelle, de t=C3=A9l=C3=A9-c=
harger
PuTTY avant de me connecter et =C3=A7a me semble acceptable. S'il fallait
installer des drivers et des logiciels, pour utiliser les cl=C3=A9s SSH sto=
ck=C3=A9es
sur la cl=C3=A9 USB, =C3=A7a ne me semble pas acceptable.

--001a114196b4d667d0052ff54ae2
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div><div><div><div><div><div><div><div><div><div><di=
v><div><div>Bonjour,<br><br></div>Je me connecte r=C3=A9guli=C3=A8rement pa=
r SSH =C3=A0 des serveurs sous Debian.<br></div>Par habitude, j&#39;interdi=
s sur ces serveurs l&#39;acc=C3=A8s au compte root par SSH.<br></div><div>J=
&#39;acc=C3=A8de =C3=A0 ces machines depuis un PC sous Debian, mais je peux=
plus rarement le faire depuis un PC sous Windows ou un smartphone sous And=
roid.<br></div><div><br></div>Je souhaite am=C3=A9liorer la s=C3=A9curit=C3=
=A9 de ces acc=C3=A8s et me simplifier la vie en changeant mes habitudes.<b=
r><br></div>J&#39;ai pens=C3=A9 =C3=A0 la chose suivante:<br><br></div>- su=
r toutes les machines distantes (sous Debian), l&#39;acc=C3=A8s par SSH s&#=
39;op=C3=A8re uniquement par cl=C3=A9s SSH,<br></div>- je stocke mes propre=
s cl=C3=A9s SSH sur une cl=C3=A9 USB (voir plus loin) qui comme mon smartph=
one est toujours avec moi,<br></div>- quand je veux me connecter =C3=A0 une=
machine distante depuis un PC, j&#39;ins=C3=A8re la cl=C3=A9 USB dans le P=
C, je lance SSH agent en lui indiquant qu&#39;il pourra trouver mes cl=C3=
=A9s sur la cl=C3=A9 USB<br></div>- quand je lance SSH agent, celui-ci me =
demande un mot de passe<br></div>- sur toutes les machines distantes, j&#39=
;autorise les cl=C3=A9s SSH qui se trouvent sur ma cl=C3=A9 USB et la cl=C3=
=A9 SSH sur mon smartphone<br></div>- en cas de perte de ma cl=C3=A9 USB ou=
de mon smartphone, je r=C3=A9pudie la cl=C3=A9 SSH correspondante sur tous=
les machines qui l&#39;autorise et je rajoute la nouvelle cl=C3=A9 SSH.<br=
><br>J&#39;utilise ici le terme cl=C3=A9 USB =C3=A0 la fois comme un terme =
g=C3=A9n=C3=A9rique d=C3=A9signant un appareil portable avec une interface =
USB, et en pensant aux simples cl=C3=A9s USB du commerce.<br><br><br></div>=
Mes questions sont nombreuses:<br></div><div>-=C2=A0 Ai-je pens=C3=A9 =C3=
=A0 tout ?<br></div>-=C2=A0 Que choisir comme cl=C3=A9 USB ?<br></div>-=C2=
=A0 Comment la prot=C3=A9ger sans perdre la possibilit=C3=A9 de l&#39;utili=
ser sur une machine occasionnelle (*) ?<br></div><div>-=C2=A0 Y-a-t-il une =
astuce particuli=C3=A8re (ie une option d&#39;un logiciel) pour conserver l=
a liste des machines sur lesquelles une cl=C3=A9 SSH a =C3=A9t=C3=A9 copi=
=C3=A9e afin de ne pas oublier cette machine en cas de r=C3=A9pudiation) ?<=
br></div><div>-=C2=A0 Conseils, remarques et suggestions ?<br><br></div><di=
v>Slts<br></div><div><br></div>(*) Il m&#39;arrive souvent, sur une machine=
occasionnelle, de t=C3=A9l=C3=A9-charger PuTTY avant de me connecter et =
=C3=A7a me semble acceptable. S&#39;il fallait installer des drivers et des=
logiciels, pour utiliser les cl=C3=A9s SSH stock=C3=A9es sur la cl=C3=A9 U=
SB, =C3=A7a ne me semble pas acceptable.<br><div><br></div></div>

--001a114196b4d667d0052ff54ae2--

6 réponses

1 2 3
Avatar
Vincent Lefevre
On 2016-04-09 18:45:36 +0200, David Demonchy wrote:
1 machine 1 jeu de clé.
C'est à dire que chaque serveur à sa clé, mais aussi chaque client (pc
perso, boulot et smartphone)
Pour résumé, j'ai 3 jeux de clés par machine qui nécessite une connexion ssh.
Si 2 machines peuvent communiquer entre elles, elles ont aussi leurs
jeu de clés.



Tu as un jeu de clés pour chaque couple (client,serveur)???

--
Vincent Lefèvre - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
Avatar
S
Le lundi 11 avril 2016 à 12:38, Vincent Lefevre a écrit :
On 2016-04-08 14:26:03 +0200, Sébastien NOBILI wrote:
> Je ne parlais pas de chiffrer les clés SSH, mais de chiffrer la clé USB.

Quel est l'intérêt de chiffrer la clé USB alors que la clé SSH est
déjà chiffrée en standard (de manière optionnelle, mais je suppose
que l'utilisateur a choisi une passphrase non vide)?



Présenté comme ça, ça n’a en effet aucun intérêt, mais ça peut en prendre si :
— pas de passphrase (ok, pas forcément top, mais tellement pratique),
— la clé contient d’autres données en clair (ce qui est mon cas, d’où ma
remarque, mais on sort un peu du sujet initial).

Sébastien
Avatar
Olivier
--001a114123d2e7a347053036ecc0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Le 9 avril 2016 à 22:38, Francois Lafont a à ©crit :

Bonsoir,

Perso, voici comment je fais. Je ne sais pas si bien comme il faut ou non .
Si certains ont des remarques, je suis preneur bien sûr.

Sur les serveurs que j'administre, le mot de passe root existe mais il
fait dans les ~30 caractères et je ne l'utilise jamais. De toute fa çon la
connexion en tant que root via ssh est impossible (PermitRootLogin false) .
C'est juste un mot de passe spécial coup dur ;). Ensuite, tout passe par
des paires de clés ssh. On va dire que j'ai globalement 2 machines ( une
chez moi et une à mon travail) avec chacun sa paire de clés ssh et les clés
publiques sont déployées sur les serveurs au niveau de root et d'un compte
flaf qui est sudo (je reviens sur ce point ci-dessous).



Si on suppose qu'en tant qu'administrateur, les opérations à effe ctuer à
distance sur une machine demandent très souvent les privilèges de root,
selon cette méthode, il faut se connecter par clé en tant qu'un u tilisateur
lamda, puis escalader en tant que root.
Pour cette escalade, dois-tu saisir le mot de passe de root (commande su)
ou utilises-tu de préférence sudo ?
Dans ce dernier cas (sudo) comment est gérée la saisie du mot de passe (
NOPASSWORD ? saisie du mot de passe ? ...)


La chose qui me semble _absolument_ indispensable pour ce type de clà ©s (ie
utilisées par un humain, en l'occurrence moi-même, et pas dans un script
non interactif), c'est une bonne passphrase sur chaque chaque clés p rivées.
Pour ce type de clés, je pense que c'est vraiment imprudent de ne pa s avoir
de passphrase. Ensuite, avoir un agent ssh qui tourne sur sa machine de
travail pour n'avoir à saisir la passphrase qu'une seule fois à chaque
début de session me semble un _excellent_ compris entre sécurit é et
commodité.

Je sauvegarde quelque part au chaud mes 2 paires de clés ssh.

Enfin, et c'est un point important je pense, les clés publiques sur les
serveurs sont déployées via un logiciel de gestionnaire de conf iguration
(en l'occurrence Puppet). Si jamais je me fait piquer une paire de clà ©s
ssh, le temps que le pirate arrive à me casser la passphrase, je peu x
supprimer les clés publiques des serveurs et en redéployer une nouvelle en
une dizaine de minutes.

Voilà.

--
François Lafont





--001a114123d2e7a347053036ecc0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quo te">Le 9 avril 2016 à 22:38, Francois Lafont <span dir="ltr">&lt;<a href="mailto:" target="_blank"> </a>&gt;</span> a écrit :<br><blockquote class="gmail_quote" style ="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding -left:1ex">Bonsoir,<br>
<br>
Perso, voici comment je fais. Je ne sais pas si bien comme il faut ou non. Si certains ont des remarques, je suis preneur bien sûr.<br>
<br>
Sur les serveurs que j&#39;administre, le mot de passe root existe mais il fait dans les ~30 caractères et je ne l&#39;utilise jamais. De toute f açon la connexion en tant que root via ssh est impossible (PermitRootL ogin false). C&#39;est juste un mot de passe spécial coup dur ;). Ensu ite, tout passe par des paires de clés ssh. On va dire que j&#39;ai gl obalement 2 machines (une chez moi et une à mon travail) avec chacun s a paire de clés ssh et les clés publiques sont déployée s sur les serveurs au niveau de root et d&#39;un compte flaf qui est sudo ( je reviens sur ce point ci-dessous).<br></blockquote><div><div>Si on suppos e qu&#39;en tant qu&#39;administrateur, les opérations à
effectuer à distance sur une machine demandent très souvent les
privilèges de root, selon cette méthode, il faut se connecter par clé en
tant qu&#39;un utilisateur lamda, puis escalader en tant que root.<br></di v><div>Pour cette escalade, dois-tu saisir le mot de passe de root (command e su) ou utilises-tu de préférence sudo ?<br></div>Dans ce dernie r cas (sudo) comment est gérée la saisie du mot de passe ( NOPASS WORD ? saisie du mot de passe ? ...) <br></div><blockquote class="gmail_q uote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,2 04);padding-left:1ex">
<br>
La chose qui me semble _absolument_ indispensable pour ce type de clés (ie utilisées par un humain, en l&#39;occurrence moi-même, et pa s dans un script non interactif), c&#39;est une bonne passphrase sur chaque chaque clés privées. Pour ce type de clés, je pense que c&# 39;est vraiment imprudent de ne pas avoir de passphrase. Ensuite, avoir un agent ssh qui tourne sur sa machine de travail pour n&#39;avoir à sais ir la passphrase qu&#39;une seule fois à chaque début de session me semble un _excellent_ compris entre sécurité et commodité .<br>
<br>
Je sauvegarde quelque part au chaud mes 2 paires de clés ssh.<br>
<br>
Enfin, et c&#39;est un point important je pense, les clés publiques su r les serveurs sont déployées via un logiciel de gestionnaire de configuration (en l&#39;occurrence Puppet). Si jamais je me fait piquer une paire de clés ssh, le temps que le pirate arrive à me casser la passphrase, je peux supprimer les clés publiques des serveurs et en re déployer une nouvelle en une dizaine de minutes.<br>
<br>
Voilà.<br>
<span class=""><font color="#888888"><br>
--<br>
François Lafont<br>
<br>
</font></span></blockquote></div><br></div></div>

--001a114123d2e7a347053036ecc0--
Avatar
Francois Lafont
Hello,

On 11/04/2016 17:09, Olivier wrote:

Si on suppose qu'en tant qu'administrateur, les opérations à effectuer à
distance sur une machine demandent très souvent les privilèges de root,
selon cette méthode, il faut se connecter par clé en tant qu'un utilisateur
lamda, puis escalader en tant que root.



C'est ça ou lancer des commandes avec sudo. Chez nous, l'accès root via ssh
n'est pas possible... avec un mot de passe (de toute façon celui-ci fait dans
les 30 caractères environ).

Au passage, je m'étais planté dans mon message précédent, ce n'est pas
"PermitRootLogin false" qu'on a mais "PermitRootLogin without-password" ce
qui veut donc dire que :

a) une connexion "ssh root" est impossible via son mot de passe;
b) une connexion "ssh root" est possible via une clé ssh.

Ceci étant, le cas b) n'est pas utilisé chez nous car nous ne déployons pas
(en vérité on l'a fait mais on le fait plus désormais) de clé publique ssh
dans /root/.ssh/authorized_keys.

Donc oui, en effet, on se connecte en ssh avec notre compte perso (qui
possède un mot de passe qu'on ne saisit jamais car on utilise notre clé ssh)
et ce compte est en effet « sudo » (pour les admins).

Pour cette escalade, dois-tu saisir le mot de passe de root (commande su)
ou utilises-tu de préférence sudo ?



On utilise sudo et on a configuré sudo (via notre gestionnaire de conf) pour
qu'on (les admins) puisse lancer "sudo cmd" sans demande de mot de passe _sauf_
dans le cas où la commande est "su" elle-même. Ceci étant, je crois bien que
cette petite exception avec "su" est plus cosmétique qu'autre chose. ;)

Dans ce dernier cas (sudo) comment est gérée la saisie du mot de passe (
NOPASSWORD ? saisie du mot de passe ? ...)



NOPASSWORD donc modulo la petite exception avec la commande su.

--
François Lafont
Avatar
Olivier
--001a114111bc8fb4d60530452ffe
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Le 11 avril 2016 à 17:33, Francois Lafont a à ©crit :

Hello,

On 11/04/2016 17:09, Olivier wrote:

> Si on suppose qu'en tant qu'administrateur, les opérations à effectuer à
> distance sur une machine demandent très souvent les privilège s de root,
> selon cette méthode, il faut se connecter par clé en tant qu' un
utilisateur
> lamda, puis escalader en tant que root.

C'est ça ou lancer des commandes avec sudo. Chez nous, l'accès root via ssh
n'est pas possible... avec un mot de passe (de toute façon celui-ci fait
dans
les 30 caractères environ).

Au passage, je m'étais planté dans mon message précéd ent, ce n'est pas
"PermitRootLogin false" qu'on a mais "PermitRootLogin without-password" c e
qui veut donc dire que :

a) une connexion "ssh root" est impossible via son mot de passe;
b) une connexion "ssh root" est possible via une clé ssh.

Ceci étant, le cas b) n'est pas utilisé chez nous car nous ne d éployons pas
(en vérité on l'a fait mais on le fait plus désormais) de clé publique ssh
dans /root/.ssh/authorized_keys.

Donc oui, en effet, on se connecte en ssh avec notre compte perso (qui
possède un mot de passe qu'on ne saisit jamais car on utilise notre clé
ssh)
et ce compte est en effet « sudo » (pour les admins).

> Pour cette escalade, dois-tu saisir le mot de passe de root (commande s u)
> ou utilises-tu de préférence sudo ?

On utilise sudo et on a configuré sudo (via notre gestionnaire de co nf)
pour
qu'on (les admins) puisse lancer "sudo cmd" sans demande de mot de passe
_sauf_
dans le cas où la commande est "su" elle-même. Ceci étant, je crois bien
que
cette petite exception avec "su" est plus cosmétique qu'autre chose. ;)

> Dans ce dernier cas (sudo) comment est gérée la saisie du mot de passe (
> NOPASSWORD ? saisie du mot de passe ? ...)

NOPASSWORD donc modulo la petite exception avec la commande su.

--
François Lafont




Merci pour ces précisions: c'est beaucoup plus clair maintenant !

Je pense qu'un accès root exigeant une clé SSH est un bon niveau de
protection
Comme la machine possédant la clé SSH privée peut être perdue (détruite, en
panne, volée), il me parait nécessaire de doubler ou tripler le n ombre de
clés acceptées par le compte root afin de toujours pouvoir rà ©pudier une clé
perdue et ajouter sa remplaçante.

--001a114111bc8fb4d60530452ffe
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quo te">Le 11 avril 2016 à 17:33, Francois Lafont <span dir="ltr">&lt;<a href="mailto:" target="_blank"> r</a>&gt;</span> a écrit :<br><blockquote class="gmail_quote" style ="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<b r>
<span><br>
On 11/04/2016 17:09, Olivier wrote:<br>
<br>
&gt; Si on suppose qu&#39;en tant qu&#39;administrateur, les opération s à effectuer à<br>
&gt; distance sur une machine demandent très souvent les privilèg es de root,<br>
&gt; selon cette méthode, il faut se connecter par clé en tant qu &#39;un utilisateur<br>
&gt; lamda, puis escalader en tant que root.<br>
<br>
</span>C&#39;est ça ou lancer des commandes avec sudo. Chez nous, l&#3 9;accès root via ssh<br>
n&#39;est pas possible... avec un mot de passe (de toute façon celui-c i fait dans<br>
les 30 caractères environ).<br>
<br>
Au passage, je m&#39;étais planté dans mon message précà ©dent, ce n&#39;est pas<br>
&quot;PermitRootLogin false&quot; qu&#39;on a mais &quot;PermitRootLogin wi thout-password&quot; ce<br>
qui veut donc dire que :<br>
<br>
a) une connexion &quot;ssh root&quot; est impossible via son mot de passe;< br>
b) une connexion &quot;ssh root&quot; est possible via une clé ssh.<br >
<br>
Ceci étant, le cas b) n&#39;est pas utilisé chez nous car nous ne déployons pas<br>
(en vérité on l&#39;a fait mais on le fait plus désormais) d e clé publique ssh<br>
dans /root/.ssh/authorized_keys.<br>
<br>
Donc oui, en effet, on se connecte en ssh avec notre compte perso (qui<br>
possède un mot de passe qu&#39;on ne saisit jamais car on utilise notr e clé ssh)<br>
et ce compte est en effet « sudo » (pour les admins).<br>
<span><br>
&gt; Pour cette escalade, dois-tu saisir le mot de passe de root (commande su)<br>
&gt; ou utilises-tu de préférence sudo ?<br>
<br>
</span>On utilise sudo et on a configuré sudo (via notre gestionnaire de conf) pour<br>
qu&#39;on (les admins) puisse lancer &quot;sudo cmd&quot; sans demande de m ot de passe _sauf_<br>
dans le cas où la commande est &quot;su&quot; elle-même. Ceci à ©tant, je crois bien que<br>
cette petite exception avec &quot;su&quot; est plus cosmétique qu&#39; autre chose. ;)<br>
<span><br>
&gt; Dans ce dernier cas (sudo) comment est gérée la saisie du mo t de passe (<br>
&gt; NOPASSWORD ? saisie du mot de passe ? ...)<br>
<br>
</span>NOPASSWORD donc modulo la petite exception avec la commande su.<br>
<span><font color="#888888"><br>
--<br>
François Lafont<br>
<br>
</font></span></blockquote></div><br></div><div class="gmail_extra">Merci pour ces précisions: c&#39;est beaucoup plus clair maintenant !<br><b r></div><div class="gmail_extra">Je pense qu&#39;un accès root exige ant une clé SSH est un bon niveau de protection<br></div><div class= "gmail_extra">Comme la machine possédant la clé SSH privée p eut être perdue (détruite, en panne, volée), il me parait n écessaire de doubler ou tripler le nombre de clés acceptées par le compte root afin de toujours pouvoir répudier une clé perd ue et ajouter sa remplaçante.<br><br></div></div>

--001a114111bc8fb4d60530452ffe--
Avatar
Vincent Lefevre
On 2016-04-11 14:08:52 +0200, Sébastien NOBILI wrote:
Le lundi 11 avril 2016 à 12:38, Vincent Lefevre a écrit :
> On 2016-04-08 14:26:03 +0200, Sébastien NOBILI wrote:
> > Je ne parlais pas de chiffrer les clés SSH, mais de chiffrer la clé USB.
>
> Quel est l'intérêt de chiffrer la clé USB alors que la clé SSH est
> déjà chiffrée en standard (de manière optionnelle, mais je suppose
> que l'utilisateur a choisi une passphrase non vide)?

Présenté comme ça, ça n’a en effet aucun intérêt, mais ça peut en prendre si :
— pas de passphrase (ok, pas forcément top, mais tellement pratique),



Oui, mais si c'est pour les mettre sur une clé USB chiffrée, ce n'est
plus trop pratique.

— la clé contient d’autres données en clair (ce qui est mon cas, d’où ma
remarque, mais on sort un peu du sujet initial).



Oui, mais cela accroît le risque de divulguer ses données.
Personnellement je fournirais le minimum d'info à une machine
sous Windows.

--
Vincent Lefèvre - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
1 2 3