Connexion racine distante

8

Je sais que l'une des premières choses que vous faites pour sécuriser un serveur est de refuser la connexion root à distance.

Les mots de passe sont assez faibles; à quoi pensent les gens d'autoriser uniquement la connexion root via les clés ssh ou d'autres méthodes sans mot de passe.

Quelles méthodes sont les meilleures? Est-il préférable de ne pas le risquer? Ssh-ing avec un compte secondaire et l'utilisation su -ajoute-t-il vraiment de la sécurité?

Comment les utilisateurs de serverfault.com accèdent-ils à root sur un serveur distant?

Kousha
la source

Réponses:

9

Pour la plupart, il y a peu d'avantages à désactiver les connexions root distantes. Il aide marginalement à appliquer une politique qui permet aux administrateurs de se connecter via leurs propres comptes et sude rooter si nécessaire (ou à utiliser sudoéventuellement avec sudosh... selon vos politiques).

La création de mots de passe root extrêmement longs et encombrants (efficaces tant que vous n'utilisez pas encore l'ancien hachage de sel DES + 12 bits pour vos mots de passe) est à peu près aussi efficace pour appliquer une telle politique.

Un site avec lequel je suis familier avait un système par lequel les mots de passe uniques étaient générés de manière aléatoire pour chaque hôte, stockés dans une base de données et envoyés aux systèmes. Les administrateurs devaient utiliser sshavec leurs comptes normaux et sudopour la plupart des opérations. Cependant, le mot de passe root leur était accessible via un service Web interne basé sur SSL (qui nécessitait en outre leur jeton RSA SecurID et leur PIN). La récupération d'un mot de passe root impliquait la saisie d'une justification (généralement un lien vers un numéro de ticket Remedy (TM)) et des accès où audités périodiquement. L'une des rares raisons acceptables d'utiliser directement le mot de passe root était dans les cas où un système a été arrêté fsckpendant le processus de démarrage ... etsuloginnécessitait un vrai mot de passe root pour exécuter manuellement les processus de vérification et de réparation du système de fichiers. (Il y a eu une discussion sur les méthodes alternatives pour cela --- qui sont relativement faciles pour Linux, mais deviennent beaucoup plus difficiles lorsque vous essayez d'étendre vos procédures pour tenir compte des nombreux systèmes HP-UX, AIX et SunOS et Solaris plus anciens qui étaient encore en production dans cet environnement).

Il y a des cas où un mot de passe root est nécessaire - ou du moins est la meilleure alternative disponible. Le garder disponible tout en le rendant suffisamment résistant aux types de menaces que vous pouvez anticiper est généralement votre meilleure stratégie.

Un autre site que je connais a une approche plutôt élégante de la gestion décentralisée des comptes. Ils ont des packages user- * et sudo- * (pensez RPM) qui sont installés dans les systèmes en utilisant les procédures normales de gestion des packages et l'infrastructure d'automatisation. Dans leur cas, le package sudo- * dépend du package user- * correspondant. C'est bien car cela vous permet d'avoir des clusters de machines avec des comptes localisés (tous les comptes sont des administrateurs, des développeurs, du personnel de support ou des comptes "sans tête") et élimine la dépendance à LDAP / NIS ou à d'autres services d'identité et d'authentification en réseau. (Cela réduit le couplage entre les systèmes les rend beaucoup plus robustes).

On pense que cette approche me plaît, c'est qu'elle donne de la souplesse. Toute personne disposant d'un sudoaccès peut émettre une commande pour ajouter un utilisateur normal ou un autre sudocompte d'utilisateur. Donc, si je travaille sur un ticket, toutes les personnes qui ont déjà accès à un système peuvent facilement me donner accès. Il n'y a pas de retards pendant qu'un ticket pour m'ajouter à une liste de contrôle d'accès dans une base de données centrale passe par un processus d'approbation centralisé et propage finalement un changement vers le système en question. N'importe lequel des utilisateurs autorisés sudosur le système peut me donner accès et me retirer ultérieurement. (Oui si j'étais méchant et qu'ils me jouentsudoJe pourrais malicieusement modifier les choses pour conserver l'accès ... en fait, je pourrais faire certaines choses en tant qu'utilisateur normal pour conserver l'accès après une telle suppression. Cependant, ce n'est pas la menace qui les inquiète. Mon accès est toujours limité à un nombre relativement plus faible de systèmes dans l'ensemble; donc l'impact d'un compte compromis est encore plus limité que la plupart des schémas similaires que j'ai vus.

Jim Dennis
la source
2

Si vous désactivez l'accès root à distance, vous empêchez les attaquants distants d'obtenir directement root - ils doivent casser un autre compte, accéder à la machine, puis essayer d'accéder à root. C'est une étape supplémentaire.

En règle générale, root est désactivé pour l'accès à distance. SU fonctionne bien. Si quelque chose se casse vraiment, il y a toujours un accès direct à la boîte pour le réparer.

Si vous voulez être plus strict - désactivez simplement root, c'est pour ça que sudo est là. Encore une fois, avec cette approche, vous pouvez toujours obtenir un accès root en passant en mode mono-utilisateur - à la Ubuntu. Cependant, je pense qu'ils ont utilisé une init corrigée pour cela, selon leurs documents.

En outre, vous pouvez configurer le ralenti pour lancer les utilisateurs inactifs au cas où leurs terminaux resteraient ouverts et les PC ouverts également. Vous pouvez forcer tous les utilisateurs à utiliser des clés, mais la gestion des clés peut être difficile.

Un hôte de journalisation unique en tant que système de type brise-verre a également forcé une couche supplémentaire de protection et une piste d'audit.

Alex
la source
2

Je vous suggère de configurer le système pour autoriser l'accès root UNIQUEMENT sur la console.

Sinon, en utilisant sudo avec l'option de mot de passe, autorisez les utilisateurs sélectionnés à accéder aux commandes privées. BTW, sachez que sudo peut être conçu pour restreindre un compte utilisateur à certaines commandes si vous le souhaitez. Sudo, laisse une "marque" dans le journal système qu'il a été utilisé. sudo est meilleur que su car le mot de passe root n'est pas divulgué. Ainsi, vous pouvez changer le mot de passe root et l'utilisateur utilisant sudo ne serait pas plus sage.

L'utilisation autorisée de sudo pour accéder aux commandes privées doit être accompagnée de changements de mot de passe périodiques et forcés avec la fréquence en fonction de l'environnement.

mdpc
la source
1
J'ai l'impression que le problème avec sudo est qu'il utilise le mot de passe normal de l'utilisateur. Pour cette raison, si le compte est compromis, l'accès root est juste à un 'sudo -s'. L'utilisation de «su» nécessite que l'attaquant brise deux mots de passe.
Kousha
De plus, j'aurai besoin d'une sorte d'accès root à distance car c'est un serveur hébergé et je n'ai pas accès à la console physique.
Kousha
Si je me souviens bien, vous pouvez configurer sudo pour utiliser le mot de passe d'un autre compte autre que le compte des utilisateurs.
mdpc
1

ne jamais autoriser root

configurer le système pour autoriser l'accès via des clés uniquement sans mot de passe

puis configurez sudo pour les utilisateurs autorisés à apporter des modifications via le compte root

drfrog
la source
Bien que je sois d'accord pour la plupart des situations, il y a certains moments où je me sens bien en autorisant l'accès root à distance (en particulier en utilisant des clés)
Matt Simmons
Je préfère prendre le temps supplémentaire pour faire quelque chose que d'avoir un accès root à la machine, même avec la clé wa d'un simple coup d'œil à tous les journaux d'authentification de serveur en direct, on voit généralement la connexion root utilisée pour essayer d'accéder à la boîte , à environ 90% de toutes les tentatives de connexion! si vous avez des informations sur une boîte, vous ne voulez pas que quiconque ait accès à sa boîte juste en mauvais état pour laisser une boîte ouverte à la racine
drfrog
Sur un bureau, oui. Mais sur un serveur administré par un seul utilisateur, l'utilisation de sudo est un peu comme jouer "dit Simon". IMO uniquement si vous avez plusieurs administrateurs et que vous voulez / avez besoin que leurs actions soient enregistrées, alors l'utilisation des utilisateurs sudo est légitime. Même dans ce cas, je ne suis pas convaincu que la désactivation de root soit nécessaire (bien qu'il soit judicieux de limiter les connexions root distantes à la clé).
Jeremy Davis