web-dev-qa-db-fra.com

Linux est-il vraiment aussi sécurisé, avec seulement un mot de passe root refusant l'accès externe?

Pendant que je cherchais en ligne des informations sur la sécurité Linux, l'explication la plus courante était: Linux est sécurisé, car le mot de passe root est requis pour accéder au noyau et installer de nouvelles applications - par conséquent, les logiciels malveillants externes ne peuvent pas faire de mal tant que le l'administrateur est la seule personne à connaître le mot de passe.

OK, ça sonne bien. Mais lorsqu'un mot de passe est la seule chose qui se situe entre un accès restreint et un contrôle total du système, le système est-il vraiment aussi sécurisé? J'entends par là toutes sortes de trucs auxquels les pirates informatiques pensent pour accéder aux systèmes, et en particulier pour révéler des données (mots de passe).

29
James C

"Linux" (comme un agrégat de toutes les installations) a généralement bien plus qu'un simple mot de passe refusant l'accès externe.

Tout d'abord, il existe un ensemble uniforme de contrôles d'accès discrétionnaires: autorisations de lecture/écriture/exécution, pour l'utilisateur/groupe/tout le monde. Traditionnellement, ces autorisations sont réellement utilisées, plutôt qu'ignorées et/ou contournées. De plus, certains sous-ensembles d'installations ont SELinux installés, configurés et fonctionnels, de sorte que le style d'autorisations de liste de contrôle d'accès plus fin est appliqué.

Deuxièmement, les serveurs s'exécutent généralement en tant qu'utilisateur spécial désigné. NTP les processus s'exécutent en tant qu'utilisateur "ntp". Les processus du serveur Web s'exécutent en tant qu'utilisateur "http", MySQL les bases de données s'exécutent en tant qu'utilisateur "mysql", par exemple. Les contrôles d'accès discrétionnaires décrits ci-dessus empêchent presque toujours l'ID utilisateur NTP) de faire bien plus que de lire certains fichiers de l'ID utilisateur HTTP.

Troisièmement, la base installée de logiciels est très fragmentée. Il existe un grand nombre de distributions différentes. Après cela, toutes les installations n'exécutent pas Apache HTTPD ou le serveur sendmail SMTP. Il existe des alternatives, et il n'y a généralement qu'une pluralité d'installations avec un serveur donné. Les versions des logiciels sont également très fragmentées. Avec chaque distribution compilant et maintenant son propre choix de serveur Web, il est très, très rare que deux installations exécutent un serveur qui a les mêmes bogues, ou même les mêmes options de compilation.

Ainsi, par exemple, quelqu'un qui poursuit une machine Linux via WordPress deviner le mot de passe peut peut-être deviner le mot de passe WordPress. Cela pourrait faire en sorte que l'attaquant s'exécute en tant qu'utilisateur "http" ou "Apache". Aussi mauvais et horrible que cela puisse être, ce n'est pas tout. L'utilisateur "http" ou "Apache" ne peut certainement pas écraser de très nombreux fichiers, seulement du HTML et ce que vous avez dans le répertoire DocumentRoot. Il prendrait un autre bond, devinant le mot de passe "racine" pour certaines distributions, ou exploitant une élévation de privilèges locale, pour accéder à une sorte d'accès universel aux fichiers.

Il s'agit vraiment de plusieurs couches, mais notez que c'est principalement par culture et tradition, et c'est aussi une sorte d '"immunité collective". Il est toujours possible qu'une combinaison d'exploits donne un accès root sur un système donné, mais cette combinaison ne s'appliquerait probablement pas à de nombreux autres systèmes.

32
Bruce Ediger

Pendant que je cherchais en ligne des informations sur la sécurité Linux, l'explication la plus courante était: Linux est sécurisé, car le mot de passe root est requis pour accéder au noyau et installer de nouvelles applications - par conséquent, les logiciels malveillants externes ne peuvent pas faire de mal tant que le l'administrateur est la seule personne à connaître le mot de passe.

Vous avez raison, ce n'est pas le mot de passe qui sécurise un système, ce sont les outils et la culture (mais ne négligeons pas complètement le mot de passe). Plus vous simplifiez la configuration et l'administration des groupes d'utilisateurs, des comptes et des privilèges, plus la sécurité d'un système est facile.

Dans les versions antérieures de Windows (1), avoir un seul compte utilisateur avec tous les privilèges était la norme. Pas de mot de passe, droits d'administrateur complets. Cela signifiait essentiellement que l'oncle Joe pouvait faire tout ce qu'il devait faire sans se soucier de choses comme des privilèges élevés. Cela signifiait également que tout code réussissant à s'exécuter sous son nom aurait libre cours à la machine. Il appartenait à des programmes individuels, s'ils le souhaitaient, de mettre en œuvre des dispositifs de sécurité intégrée et "Êtes-vous vraiment, vraiment sûr?" - encadrés.

En revanche, Unix/Linux sont depuis longtemps des systèmes multi-utilisateurs par conception. Ils sont construits avec l'idée qu'il y aura différents rôles avec différentes exigences de sécurité:

  • Les administrateurs maintiennent le système. Ils peuvent avoir besoin de mettre à niveau le système d'exploitation, de modifier des programmes, d'ajouter/supprimer des groupes et des privilèges ... Tout cela signifie qu'ils ont besoin d'un accès pratiquement libre.

  • Les utilisateurs sont des consommateurs quotidiens des services système, l'Oncle Joe d'en haut. Ils utilisent des logiciels pour écrire des lettres, lire des documents, surfer sur le Web, jouer à des jeux, etc. Ils peuvent installer des logiciels dans une certaine mesure, mais uniquement dans leur propre sphère d'influence; ils ne peuvent pas modifier le logiciel système ou les bibliothèques.

  • Les services en cours d'exécution reçoivent souvent leur propre compte utilisateur, car ils ont généralement des besoins très limités et bien définis. MySQL aura besoin de certains répertoires sur lesquels il peut écrire, d'un port réseau qu'il peut ouvrir, etc., mais il n'a pas besoin d'accéder aux documents d'oncle Joe ni de pouvoir écraser/modifier le logiciel (même lui-même) .

Ainsi, même si un service en cours d'exécution est compromis (un serveur HTTP, par exemple), s'il ne s'exécute pas lui-même avec les privilèges les plus élevés, il est limité dans la quantité de dommages durables qu'il peut causer. Cette mentalité de courir avec des privilèges limités est ce qui en fait un système plus sécurisé.


OK, ça sonne bien. Mais lorsqu'un mot de passe est la seule chose qui se situe entre un accès restreint et un contrôle total du système, le système est-il vraiment aussi sécurisé? J'entends par là toutes sortes de trucs auxquels les pirates informatiques pensent pour accéder aux systèmes, et en particulier pour révéler des données (mots de passe).

C'est un peu comme dire qu'un coffre-fort n'est pas sûr parce que les gens avec la combinaison peuvent entrer.

Mais quand même, vous faites valoir un argument valable. Devenez root, obtenez un accès complet.

Tout système où une personne a besoin d'un accès spécial laisse de la place pour que cette personne soit usurpée. C'est pourquoi la règle numéro un pour tout système protégé par mot de passe est de ne pas divulguer le mot de passe.

Il existe des stratégies d'atténuation que vous pouvez utiliser pour limiter les dommages d'un compte racine compromis, telles que la mise en liste blanche uniquement de plages d'adresses IP spécifiques, la modification de mots de passe de temps en temps ou l'interdiction de certains rôles de passer à la racine, quel que soit le mot de passe.

Ce n'est pas parfait. Mais il bat certainement le compte administrateur sans mot de passe de l'oncle Joe.


(1) Mais Windows Vista et les versions ultérieures ne font-ils pas également cette distinction? Même avant Windows Vista, des comptes séparés avec des privilèges distincts étaient disponibles mais, d'après mon expérience, ils n'étaient pas couramment utilisés.

15
JvR

Il n'y a pas de système sécurisé. Il n'y a que des systèmes qui peuvent être suffisamment sécurisés contre des types d'attaques spécifiques, et les scénarios d'attaque peuvent changer rapidement.

Linux en tant que système de bureau bénéficie d'une faible adoption, ce qui signifie que vous n'êtes pas une cible attrayante pour les attaques de masse. En outre, il offre une meilleure segmentation entre les limites de sécurité, c'est-à-dire qu'il ne suffit généralement pas de simplement cliquer sur OK pour exécuter quelque chose en tant qu'administrateur. Vous devez également définir explicitement l'autorisation exécutable sur un fichier pour en faire un exécutable, car cette propriété n'est pas dérivée du nom de fichier comme dans Windows.

Linux en tant que système serveur peut également être sécurisé, mais malheureusement, de nombreux administrateurs croient simplement que Linux est sécurisé et n'assure pas la sécurité. Par exemple, ils ne gardent pas tous les logiciels du système mis à jour quotidiennement, vérifient les fichiers journaux, etc. Cela fait souvent de Linux une cible facile pour les attaques contre les applications Web vulnérables (plugins WordPress, etc.). Et une fois que l'attaquant a accès en tant qu'utilisateur local de cette façon, il est généralement facile de devenir root également. Il y avait suffisamment de vulnérabilités par élévation de privilèges ces dernières années pour Linux qui peuvent être utilisées.

Donc, Linux peut être suffisamment sécurisé pour de nombreuses tâches, mais ne croyez pas au battage médiatique et installez simplement le système, puis oubliez-le. Et ne croyez pas non plus que Windows ne soit pas sécurisé - les versions récentes peuvent également être suffisamment sécurisées, mais vous devez toujours savoir ce que vous faites et tout mettre à jour.

Comme demandé, quelques conseils sur la façon de sécuriser suffisamment les systèmes (Linux et Windows). Il pourrait y avoir plus de ressources en ligne, mais ce sont les principaux points de mon expérience:

  • Gardez les systèmes aussi à jour que possible. Cela signifie que vous installez uniquement les logiciels pris en charge. Sous Linux, il suffit généralement de rester avec le logiciel fourni avec le système et d'exécuter régulièrement des mises à jour ou d'utiliser des mises à jour automatiques. Sous Windows, c'est beaucoup plus difficile, car vous n'obtenez pas trop avec le système. Le logiciel dont vous avez vraiment besoin est alors livré avec son propre programme de mise à jour ( Adobe Flash , Adobe Acrobat Reader , Oracle Java , iTunes , etc.), vous oblige à consulter le site du vendeur pour les mises à jour par vous-même ou n'est pas du tout pris en charge. Souvent, vous exécuterez un ancien logiciel que vous avez acheté une fois, mais qui n'est plus pris en charge, car vous ne voulez pas payer à nouveau juste pour obtenir une version prise en charge (qui pourrait également nécessiter un meilleur matériel, etc.). Sur Linux, bien sûr, vous devez également mettre à jour tout logiciel à partir de sources externes, par exemple, quelque chose comme WordPress.
  • Ensuite, vous ne devez installer que les logiciels dont vous avez vraiment besoin. Moins vous avez de logiciels, plus la surface d'attaque est petite et plus il est facile de rester à jour. Surtout sous Windows, ce n'est pas facile, car vous obtenez souvent un ensemble de logiciels avec beaucoup d'autres logiciels. Par exemple, vous avez déjà associé le navigateur Safari à iTunes sur Windows. Ce navigateur n'est plus pris en charge sous Windows et vous avez maintenant beaucoup de systèmes avec un logiciel non sécurisé et non pris en charge.
  • Évitez les logiciels avec un mauvais dossier de sécurité si possible. Cela signifie actuellement au moins Java, Flash et Acrobat Reader.
  • Abaissez la surface d'attaque lorsque vous surfez. Cela signifie non seulement d'éviter les coins sombres d'Internet, mais également d'installer un certain blocage des publicités pour éviter les malvertising, etc.
  • Sous Windows, vous devez installer un antivirus.
  • Et bien sûr, soyez prudent. N'ouvrez aucun courrier suspect, etc. Réfléchissez bien si vous effectuez des opérations bancaires en ligne et d'autres tâches sensibles. Peut-être utiliser un système Linux spécial à partir d'une clé USB pour ces tâches.
6
Steffen Ullrich

Je pense que ce site Q/A n'est peut-être pas le meilleur endroit pour discuter de l'ensemble de la sécurité Linux, mais:

  • l'accès root est généralement limité aux comptes locaux, que vous devez d'abord obtenir
  • l'installation des applications est généralement limitée aux sources logicielles et non aux programmes d'installation exécutables
  • linux a moins d'utilisateurs, et ces utilisateurs conservent de meilleures pratiques logicielles (principalement parce que la mise à jour/mise à niveau est plus facile/moins coûteuse) et sont donc moins une cible

Choisir un bon mot de passe root est bien sûr de la plus haute importance, en particulier si vous autorisez d'autres utilisateurs à accéder à vos systèmes. En fin de compte, ce n'est qu'une autre couche de sécurité.

Sinon, ce serait une bonne idée de ne pas en attendre trop de la protection du compte root .

2
Maarten Bodewes

En plus des réponses ci-dessus, je voudrais souligner que Linux PAM permet d'ajouter des contrôles de sécurité supplémentaires pour n'importe quel utilisateur (et donc également pour root). Par exemple, nécessitant un certificat, une clé USB (comme YubiKey ), etc.

0
agtoever