Lister et tuer les processus en cours sous Linux

Pour lister les processus de tous les utilisateurs du système : ps -faux
Pour lister uniquement vos processus : ps -fux

$ ps -fux
 USER  PID  %CPU %MEM VSZ   RSS TTY STAT START TIME COMMAND
 erwan 3377 0.0 0.1 600268  13212  ? Ssl 16:06 0:00 x-session-manager
 erwan 3418 0.0 0.0 10584   336    ? Ss  16:06 0:00 \_ /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-session-manager
 erwan 3442 0.0 0.2 816644  21384  ? Sl  16:06 0:00 \_ /usr/lib/gnome-settings-daemon/gnome-settings-daemon
 erwan 3520 1.7 2.5 1893352 202408 ? Sl  16:06 1:29 \_ /usr/bin/gnome-shell
 erwan 5067 3.9 3.8 1242492 302140 ? Sl  16:24 2:39 | \_ iceweasel
 erwan 6172 0.0 0.3 906316  25784  ? Sl  17:13 0:00 | \_ nautilus --new-window
 erwan 3572 0.0 0.1 551768  9596   ? SNl 16:06 0:00 \_ /usr/lib/tracker/tracker-miner-fs

C’est beaucoup plus pratique que la commande top car il n’y a pas de limitation de hauteur d’écran.

On y trouve des infos très utiles :

  • l’user qui a lancé le processus
  • la commande complète avec arguments qui a servie à lancer le processus
  • l’arborescence des commandes pour savoir quels sont les processus parents et enfants.
  • la date à laquelle le processus a été lancé et sa durée de vie
  • la charge du CPU
  • le PID, identifiant propre à chaque processus

Pour arrêter les processus qui vous intéressent, récupérez le PID correspondant (ex: 5067) et lancez :

$ kill 5067

.
Si le programme ne se ferme pas assez rapidement, vous pouvez le forcer à s’arrêter immédiatement :

$ kill -9 5067

Lister les connexions entrantes de votre ordinateur

La commande netstat -tape permet de lister les processus qui acceptent des connections entrantes sur votre ordinateur. Facile à se rappeler !
Pour plus d’information, man netstat.

# netstat -tape
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        User       Inode       PID/Program name
tcp        0      0 localhost:60061         *:*                     LISTEN      mysearch   7850        2813/python     
tcp        0      0 *:43173                 *:*                     LISTEN      statd      13393       1844/rpc.statd  
tcp        0      0 *:sunrpc                *:*                     LISTEN      root       13372       1816/rpcbind    
tcp        0      0 *:ssh                   *:*                     LISTEN      root       33422       6097/sshd       
tcp        0      0 *:gdomap                *:*                     LISTEN      root       6788        2253/gdomap     
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN      root       13375       1816/rpcbind    
tcp6       0      0 [::]:32947              [::]:*                  LISTEN      statd      13397       1844/rpc.statd  
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      root       33424       6097/sshd

Request Policy

« Request Policy » est une extension pour le navigateur web Firefox qui bloque les requêtes inter-domaines.

Le tracking de la vie privée des internautes passe majoritairement par les informations envoyées lors de requetes inter-sites.

Exemple simple: Je visite une page web qui intègre au choix:

  • une vidéo Youtube
  • une police d’écriture évoluée par l’API GoogleFont
  • un bouton j’aime Facebook
  • un script de statistique Google Analytics

Dans chaque cas, une requête est envoyée au service externe. Cette requête contient votre IP, diverses informations sur votre matériel (version du navigateur, OS) l’adresse web de la page que vous consultez, un cookie vous identifiant personnellement (sous couvert de stocker vos préférences) et si la requête mène à un script peut être encore d’autres infos.

Vous pouvez désactiver l’envoi du cookie dans les préférences de Firefox (« ne jamais accepter les cookies tiers ») mais pour le reste, vous êtes la proie du tracking de ces services.

Il est aisé de pour Facebook ou Google de dresser la liste de la grande majorité de sites que vous avez visité aujourd’hui.

Un bon moyen d’empêcher cela est de bloquer les requêtes inutiles vers des sites externes. Ce que fait Request Policy

Vous pouvez bien sûr autoriser au cas par cas les requêtes externes pour afficher les vidéos intégrées, fonts, etc.. quand vous le voulez.

Quand aux webmasters, soyez respectueux de la vie privée de vos lecteurs et réduiser au maximum les requêtes vers les sites externes connus pour avoir le tracking des utilisateurs comme coeur de métier (Disqus, Facebook, Google, etc..)

Youtube-dl

Chers lecteurs,
Je pensais que je vous avoir déjà parlé de youtube-dl mais en fait, non.

Ce petit programme existe depuis fin 2012 et permet de télécharger les contenus multimédias (vidéo et/ou audio) se trouvant sur les sites de streaming. On pense ben sûr à Youtube mais pas que. La liste des sites supportés est impressionnante. Ca va de Dailymotion, à CanalPlus en passant par Soundcloud.

Le programme existe pour windows et linux.
Il est présent dans les paquets de Debian 8 (la testing en ce moment) mais pas dans ceux Debian 7 (qui est l’actuelle stable) :-(

Petit exemple rapide pour télécharger la vidéo se trouvant à l’adresse : https://www.youtube.com/watch?v=6D2DohKUhZw en haute qualité

$ youtube-dl https://www.youtube.com/watch?v=6D2DohKUhZw

Et pour avoir uniquement la piste audio il suffit de rajouter « -x »

$ youtube-dl https://www.youtube.com/watch?v=6D2DohKUhZw -x

Simple non? (et sans Adobe Flash). Si vous regarder dans les options, vous pouvez choisir le format de sortie si le format natif de la plateforme de streaming ne vous convient pas.
Mais que va faire Hadopi pour interdire le téléchargement? Nous piquer 8 millions d’euros par an pour se faire ridiculiser par youtube-dl…. la honte.

Bloquer l’accès à la mémoire du téléphone lors du branchement USB

Par défaut, lorsque vous branchez un câble USB à votre téléphone Android, vous donnez un accès en lecture/écriture à la totalité de votre téléphone. C’est pour moi une grosse faille de sécurité si l’on se branche sur l’ordinateur de quelqu’un à qui on n’a pas forcément envie de donner toutes ses données ou à un chargeur public qu’on ne connaît pas.

refCharlesdeGaulle

Pour désactiver l’accès automatique à la mémoire de votre téléphone lorsque l’on branche un cable USB, allez dans les options du téléphone, puis sur « Stockage », puis dans les options (l’icône en haut à droite avec 3 points verticaux), sélectionnez « Connexion USB à l’ordinateur » et désactivez les entrées MTP et PTP.

Messagerie sécurisée, attention à votre carnet de contact !

Une des questions cruciales à se poser sur une messagerie « sécurisée » est comment sont gérées les méta-données?

Par exemple, il est intéressant pour la NSA et autres états qui surveillent en masse de savoir qui parle à qui et à quelle fréquence. Ça permet aisément de construire des réseau de relations à faible coût.

Regardons maintenant un petit peu comment fonctionnent Textsecure et Telegram .

Pour mettre en relation les utilisateurs, ceux-ci se basent sur le numéro de téléphone.
Chaque utilisateur est identifié par son numéro de téléphone, vérifié par l’envoi d’un SMS sur le terminal lorsque l’on crée son compte de messagerie.Ensuite, lorsque l’on envoie un message à un contact, ça se passe grosso modo comme ça :

  1. on envoie le numéro de téléphone de son correspondant.
  2. le serveur cherche dans sa base d’utilisateurs connectés si il trouve le numéro de téléphone.
  3. le message est transmis au terminal de notre correspondant par la connexion permanente (PUSH) établie entre le terminal de notre correspondant et le serveur.

On comprend bien que déjà la personne qui gère le serveur sait qui parle à qui et à quelle fréquence.

Ensuite, on peut avoir quelques fioritures encore plus pourries :

Par exemple, comment savoir avec quels contacts je peux utiliser mon « application de communication sécurisée » ? En demandant au serveur, pour chacun des numéros de mon carnet de contact, s’il correspond à utilisateur enregistré. Bingo, vous venez d’envoyer la totalité des numéros de votre carnet de contact.

Ce qui est encore plus rigolo, c’est que même si vous ne l’avez pas fait mais que vos contacts ont envoyé leur carnet de contacts, par recoupement, le serveur peut reconstruire le votre. La preuve flagrante, c’est quand vous créez un compte avec un carnet d’adresse vide, mais qu’automatiquement, le serveur trouve vos amis (Ex: facebook, linkedin, etc…)

Pour moi, le design de base de ces applications rendent impossible la protection des métadonnées des échanges sauf si l’on a confiance dans le serveur. Croyez-vous encore au « Don’t be evil »?

Une solution serait :

  1. Utiliser un identifiant ne permettant pas de remonter facilement à l’identité réelle de l’utilisateur (ex : un numéro aléatoire)
  2. Ne pas laisser le serveur connaître qui envoie le message (ex: le message ne contient que l’identifiant du destinataire en clair, le message envoyé par l’utilisateur émetteur passe par plusieurs relais avant d’arriver au serveur. On peut ainsi dire que le message est envoyé de manière anonyme. L »identité de l’émetteur est à l’intérieur du message chiffré que seul le destinataire peut déchiffrer)

Dossier partagé entre utilisateurs sous Linux

La problématique du jour est de faire un répertoire partagé entre les utilisateurs d’un même ordinateur sous linux.

Permissions Unix, la mauvaise solution

Les permissions Unix sont très performants pour restreindre les accès mais rendent la création d’un répertoire partagé impossible en pratique.

La solution classique serait de créer un groupe qui regroupe les utilisateurs et de faire en sorte que tous les fichiers partagés appartiennent à ce groupe. Ca fonctionne en théorie, mais dans la pratique, les utilisateurs créent/modifient/copient  des fichiers sans vouloir mettre à jour les permission groupes. Et seul le propriétaire du fichier peut modifier la permission de groupe du fichier, ce qui rend la chose ingérable.

Le SGID est également une fausse bonne idée pour propager les droits aux fichiers créés car il ne se propage pas aux fichiers copiés par l’utilisateur vers le dossier partagé.

ACL

La solution élégante et performante passe par les ACL ou Access Control List. Elle permet un contrôle bien plus fin et explicite.

Pour avoir accès aux droits ACL vous devez avoir ajouté l’option à votre /etc/fstab .
Ex :

/dev/hda6 /home ext3 options1,option2,option3,acl 0 0

Une fois fait, remontez le point de montage.

# mount -o remount,acl /home

Assignation des droits ACL

On crée un dossier en root /home/dossier_partage. Personne peut y accéder à part root. Jusqu’ici rien de spécial.

# cd /home
# mkdir dossier_partage
# chmod 770 dossier_partage

On ajoute des droits étendus pour que les utilisateurs alice et bob puisse tout faire dans ce dossier.

# setfacl -m u:alice:rwX dossier_partage
# setfacl -m u:bob:rwX dossier_partage

On ajoute des droits étendus pour que les fichiers/dossiers créés dans ce dossier aient par défaut les mêmes droits étendus.

# setfacl -m d:u:alice:rwX dossier_partage
# setfacl -m d:u:bob:rwX dossier_partage

On peut vérifier les droits finaux ainsi :

$ getfacl dossier_partage/

# file: dossier_partage/
# owner: root
# group: root
user::rwx
user:alice:rwx
user:bob:rwx
group::rwx
mask::rwx
other::—
default:user::rwx
default:user:alice:rwx
default:user:bob:rwx
default:group::rwx
default:mask::rwx
default:other::—

Astuce sécurité

Par défaut, le /home/user des utilisateurs n’est pas privé sous Debian ! Si bien que Alice peut lire les fichier dans /home/bob .

Je vous recommande la lecture de ce document sur comment sécuriser Debian, surtout ces 2 points

  • 4.11.13.1 Limiter l’accès aux informations d’autres utilisateurs
  • 4.11.12 Positionner des umasks aux utilisateurs

Le plus important : Pour tous vos utilisateurs existants, assurez que le dossier home bloque bien l’accès aux autres utilisateurs :

# chmod 750 /home/bob

Ensuite, vous pouvez faire en sorte que soit créé automatiquement comme ça quand vous créez un utilisateur:

# dpkg-reconfigure adduser

et choississez Non

Vous pouvez également faire en sorte que les utilisateurs créént par défaut des fichiers que seuls eux peuvent voir :

# echo session optional pam_umask.so umask=027 >> /etc/pam.d/common-session

Dans /etc/login.defs, changez la valeur à UMASK 027

Pour vérifier les droits de l’utilisateur courant :

$ umask

GooglePlay Downloader 0.5

J’ai mis à jour mon application pour télécharger les APK gratuites du Play Store de Google sans avoir besoin d’installer les GoogleApps sur son téléphone ni d’avoir de compte Google personnel.

Le principal changement est la génération automatique d’AndroidID nécessaire si l’on veut utiliser d’autres identifiants Google que ceux fournis par défaut avec le logiciel

GooglePlay Donwloader 0.5

Téléchargement de GooglePlay Downloader
Page du projet sur Codingteam