<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Another Home Page Blog - find</title><link href="https://blog.anotherhomepage.org/" rel="alternate"></link><link href="https://blog.anotherhomepage.org/feed/tag/find/atom" rel="self"></link><id>https://blog.anotherhomepage.org/</id><updated>2010-12-30T11:11:00+01:00</updated><entry><title>Vérifications de permissions</title><link href="https://blog.anotherhomepage.org/post/2010/12/30/V%C3%A9rifications-de-permissions/" rel="alternate"></link><published>2010-12-30T11:11:00+01:00</published><updated>2010-12-30T11:11:00+01:00</updated><author><name>Nils Ratusznik</name></author><id>tag:blog.anotherhomepage.org,2010-12-30:/post/2010/12/30/Vérifications-de-permissions/</id><summary type="html">&lt;p&gt;&lt;em&gt;Introduction&lt;/em&gt; : les astuces de ce billet sont extraites du document “Guide to the Secure Configuration of Red Hat Enterprise Linux 5” édité par la &lt;a href="https://secure.wikimedia.org/wikipedia/fr/wiki/NSA"&gt;NSA&lt;/a&gt;. Vous pouvez télécharger le document au format PDF dans son intégralité &lt;a href="http://www.nsa.gov/ia/guidance/security_configuration_guides/operating_systems.shtml#linux2"&gt;sur leur site&lt;/a&gt;. Cette introduction me permet d'être en conformité avec leur &lt;a href="http://www.nsa.gov/terms_of_use.shtml#copyright"&gt;notice de …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Introduction&lt;/em&gt; : les astuces de ce billet sont extraites du document “Guide to the Secure Configuration of Red Hat Enterprise Linux 5” édité par la &lt;a href="https://secure.wikimedia.org/wikipedia/fr/wiki/NSA"&gt;NSA&lt;/a&gt;. Vous pouvez télécharger le document au format PDF dans son intégralité &lt;a href="http://www.nsa.gov/ia/guidance/security_configuration_guides/operating_systems.shtml#linux2"&gt;sur leur site&lt;/a&gt;. Cette introduction me permet d'être en conformité avec leur &lt;a href="http://www.nsa.gov/terms_of_use.shtml#copyright"&gt;notice de Copyright&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Je vous propose de vérifier les permissions de certains de vos fichiers sur votre serveur ou poste fonctionnant sur un système Linux. Le but est de limiter les possibilités de tentatives d'intrusion en recherchant les moyens d'entrée possibles. Commençons par vérifier notre environnement :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;root@orgrimmar:~#&lt;span class="w"&gt; &lt;/span&gt;whoami
root
root@orgrimmar:~#&lt;span class="w"&gt; &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;/etc/redhat-release&lt;span class="w"&gt; &lt;/span&gt;
CentOS&lt;span class="w"&gt; &lt;/span&gt;release&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;.5&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;Final&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Recherchons maintenant tous les répertoires dont les droits permettent à n'importe quel utilisateur d'écrire dedans, et dont le &lt;em&gt;sticky bit&lt;/em&gt; n'est pas positionné :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;root@orgrimmar:~#&lt;span class="w"&gt; &lt;/span&gt;find&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;-type&lt;span class="w"&gt; &lt;/span&gt;d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-0002&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;!&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-1000&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-print
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Si jamais votre machine possède de nombreuses partitions, et qu'elles sont du genre bien remplies, il est possible de limiter la recherche de &lt;em&gt;find&lt;/em&gt; à une partition à la fois :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;root@orgrimmar:~#&lt;span class="w"&gt; &lt;/span&gt;find&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;-xdev&lt;span class="w"&gt; &lt;/span&gt;-type&lt;span class="w"&gt; &lt;/span&gt;d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-0002&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;!&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-1000&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-print
root@orgrimmar:~#&lt;span class="w"&gt; &lt;/span&gt;find&lt;span class="w"&gt; &lt;/span&gt;/home&lt;span class="w"&gt; &lt;/span&gt;-xdev&lt;span class="w"&gt; &lt;/span&gt;-type&lt;span class="w"&gt; &lt;/span&gt;d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-0002&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;!&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-1000&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-print
root@orgrimmar:~#&lt;span class="w"&gt; &lt;/span&gt;find&lt;span class="w"&gt; &lt;/span&gt;/var&lt;span class="w"&gt; &lt;/span&gt;-xdev&lt;span class="w"&gt; &lt;/span&gt;-type&lt;span class="w"&gt; &lt;/span&gt;d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-0002&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;!&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-1000&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-print
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Idéalement (et c'est le cas sur ma machine, ouf !), cette commande ne devrait occasionner aucun affichage. Maintenant, amusons-nous un peu :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;root@orgrimmar:/tmp#&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;insecure
root@orgrimmar:/tmp#&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;777&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;insecure
Le&lt;span class="w"&gt; &lt;/span&gt;mode&lt;span class="w"&gt; &lt;/span&gt;d&lt;span class="s1"&gt;&amp;#39;accès de `insecure&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;été&lt;span class="w"&gt; &lt;/span&gt;modifié&lt;span class="w"&gt; &lt;/span&gt;à&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0777&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;rwxrwxrwx&lt;span class="o"&gt;)&lt;/span&gt;.
root@orgrimmar:/tmp#&lt;span class="w"&gt; &lt;/span&gt;find&lt;span class="w"&gt; &lt;/span&gt;/tmp/&lt;span class="w"&gt; &lt;/span&gt;-type&lt;span class="w"&gt; &lt;/span&gt;d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-0002&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;!&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-1000&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-print
/tmp/insecure
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Positionnons maintenant le sticky bit :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;root@orgrimmar:/tmp#&lt;span class="w"&gt; &lt;/span&gt;ls&lt;span class="w"&gt; &lt;/span&gt;-hl&lt;span class="w"&gt; &lt;/span&gt;/tmp/&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;insecure
drwxrwxrwx&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;root&lt;span class="w"&gt; &lt;/span&gt;root&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;,0K&lt;span class="w"&gt; &lt;/span&gt;déc&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;23&lt;/span&gt;:54&lt;span class="w"&gt; &lt;/span&gt;insecure/
root@orgrimmar:/tmp#&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;+t&lt;span class="w"&gt; &lt;/span&gt;/tmp/insecure/
Le&lt;span class="w"&gt; &lt;/span&gt;mode&lt;span class="w"&gt; &lt;/span&gt;d&lt;span class="s1"&gt;&amp;#39;accès de `/tmp/insecure/&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;été&lt;span class="w"&gt; &lt;/span&gt;modifié&lt;span class="w"&gt; &lt;/span&gt;à&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1777&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;rwxrwxrwt&lt;span class="o"&gt;)&lt;/span&gt;.
root@orgrimmar:/tmp#&lt;span class="w"&gt; &lt;/span&gt;ls&lt;span class="w"&gt; &lt;/span&gt;-hl&lt;span class="w"&gt; &lt;/span&gt;/tmp/&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;insecure
drwxrwxrwt&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;root&lt;span class="w"&gt; &lt;/span&gt;root&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;,0K&lt;span class="w"&gt; &lt;/span&gt;déc&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;23&lt;/span&gt;:54&lt;span class="w"&gt; &lt;/span&gt;insecure/
root@orgrimmar:/tmp#&lt;span class="w"&gt; &lt;/span&gt;find&lt;span class="w"&gt; &lt;/span&gt;/tmp/&lt;span class="w"&gt; &lt;/span&gt;-type&lt;span class="w"&gt; &lt;/span&gt;d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-0002&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;!&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-1000&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-print
root@orgrimmar:/tmp#&lt;span class="w"&gt; &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Qu'est-ce que le &lt;em&gt;sticky bit&lt;/em&gt; ? Extrait de la page de manuel de &lt;em&gt;chmod&lt;/em&gt; (man chmod) :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;t (sticky-bit) conserver le code du programme sur le périphérique de swap après exécution. Il s’agit du comportement original, mais de nos jours il sert uniquement pour les répertoires. Il indique que seuls le propriétaire du répertoire, et le propriétaire d’un fichier qui s’y trouve ont le droit de supprimer ce fichier. C’est typiquement utilisé pour les répertoires comme /tmp ayant une autorisation d’écriture générale.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Vérifions cela :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;root@orgrimmar:/tmp#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/
root@orgrimmar:/#&lt;span class="w"&gt; &lt;/span&gt;ls&lt;span class="w"&gt; &lt;/span&gt;-hl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;tmp
drwxrwxrwt&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;root&lt;span class="w"&gt; &lt;/span&gt;root&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;,0K&lt;span class="w"&gt; &lt;/span&gt;déc&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;23&lt;/span&gt;:59&lt;span class="w"&gt; &lt;/span&gt;tmp/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Le sticky bit est positionné. Je suis rassuré. Néanmoins, il ne fait pas tout. Regardons donc quels répertoires sont accessibles à tous les utilisateurs, sans chercher à savoir si le sticky bit est positionné :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;root@orgrimmar:/#&lt;span class="w"&gt; &lt;/span&gt;find&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;-type&lt;span class="w"&gt; &lt;/span&gt;d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-perm&lt;span class="w"&gt; &lt;/span&gt;-0002&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-print
/var/tmp
/var/lib/xenstored
/dev/shm
/tmp
/tmp/insecure
/tmp/.ICE-unix
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Cela fait déjà un peu plus de monde... pas très rassurant mais à part notre répertoire &lt;em&gt;insecure&lt;/em&gt;, pas de quoi s'affoler : &lt;em&gt;/var/tmp&lt;/em&gt; et &lt;em&gt;/tmp&lt;/em&gt; sont des répertoires destinés aux fichiers temporaires des programmes en fonctionnement, &lt;em&gt;/var/shm&lt;/em&gt; désigne &lt;a href="https://secure.wikimedia.org/wikipedia/fr/wiki/M%C3%A9moire_partag%C3%A9e"&gt;la mémoire partagée&lt;/a&gt; et le xenstored sert &lt;a href="http://books.google.com/books?id=XS-Jj7s2nhYC&amp;amp;pg=PA68&amp;amp;lpg=PA68&amp;amp;dq=/var/lib/xenstored&amp;amp;source=bl&amp;amp;ots=UUPHrW9az-&amp;amp;sig=NvdqPm8-x3cC6UOPlGEpRGOXKQY&amp;amp;hl=fr&amp;amp;ei=sw4dTcycMouo8QPnsrm9BQ&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=4&amp;amp;ved=0CC8Q6AEwAw#v=onepage&amp;amp;q=%2Fvar%2Flib%2Fxenstored&amp;amp;f=false"&gt;au bon fonctionnement de l'hyperviseur Xen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour finir, nous pouvons nettoyer notre petite expérience :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;root@orgrimmar:/#&lt;span class="w"&gt; &lt;/span&gt;rmdir&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;/tmp/insecure/
rmdir:&lt;span class="w"&gt; &lt;/span&gt;destruction&lt;span class="w"&gt; &lt;/span&gt;du&lt;span class="w"&gt; &lt;/span&gt;répertoire&lt;span class="w"&gt; &lt;/span&gt;/tmp/insecure/
root@orgrimmar:/#&lt;span class="w"&gt; &lt;/span&gt;ls&lt;span class="w"&gt; &lt;/span&gt;-hal&lt;span class="w"&gt; &lt;/span&gt;/tmp/&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;secu
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Commentaires&lt;/h2&gt;
&lt;h3&gt;Le 06/01/2011 19:09 par &lt;a href="http://www.sakana.fr/blog/"&gt;stephane&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Juste un petit commentaire en passant, vu que ça fait longtemps :-)&lt;/p&gt;
&lt;p&gt;Un flag de ls a connaître : -d, pour éviter le ls .... | grep .... , tu peux faire un ls -ld /tmp par exemple. Ça te sort le ls du répertoire et non de son contenu.&lt;/p&gt;
&lt;p&gt;A+&lt;/p&gt;
&lt;p&gt;Stéphane&lt;/p&gt;</content><category term="Sécurité"></category><category term="CentOS"></category><category term="chmod"></category><category term="find"></category><category term="Linux"></category><category term="NSA"></category><category term="RHEL"></category><category term="sticky-bit"></category></entry></feed>