Rechercher des fichiers selon leurs permissions avec find

La commande find dispose de plusieurs options pour rechercher des fichiers/dossiers selon leurs permissions.

Permissions exactes

Tout d’abord, si vous souhaitez trouver les éléments avec le chmod exact :

find / -perm 755

Egal ou plus permissif

Ceux ayant un chmod égal ou supérieur (avec davantage de droits) :

find . -perm -755

Attention cependant car 755 n’est pas supérieur à 766. En effet, le 55 donne les droits de lecture et exécution mais 66 perd le bit d’exécution au profil des droits d’écriture. Il n’est donc pas considérer comme supérieur. En revanche, le filtre matchera avec un 77 (gain des droits en écriture).

Le ‘0’ indique que l’on ignore la valeur. Rechercher 055 signifie donc trouver tous les fichiers dont le groupe et les autres ont les droits en lecture et exécution. Peu importe ce qu’il en est du propriétaire.

setuid / setgid / sticky

Pour trouver les éléments avec un setuid (donc le 1er octet à 4), on utilisera :

find . -perm -4000

Idem avec setgid (1er octet à 2) et le sticky bit (1er octet à 1).

Multiples critères

La dernière syntaxe est lorsque la permission commence par ‘/’. Cela se traduit : cherche les éléments qui répondent à au moins un critère.

Exemple :

find . -perm /222

Le 2 correspond à l’octet d’écriture, on cherche donc un élément dont, de façon inclusive, le propriétaire, le groupe ou les autres possèdent les droits en écriture.

find . -perm /022

Avec le premier octet à 0, on ne recherche plus que dans le groupe ou les autres.

Je trouve cependant plus pratique d’utiliser la syntaxe « longue » lorsque cela se complique :

find . -perm /u=rx,go=r

On recherche ici des éléments dont :

  • soit le propriétaire a les droits de lecture et/ou d’exécution
  • soit le groupe et/ou les autres les droits de lecture.

Pour trouver ceux qui ont le propriétaire en lecture et/ou exécution ET le groupe et/ou les autres en lecture, on chaînera les -perm :

find . -perm /u=rx -perm /go=r

A l’inverse, pour trouver ceux dont le propriétaire a lecture et/ou exécution ET dont le groupe et/ou les autres n’ont pas de droit en lecture, on utilisera le symbole ‘!’ :

find . -perm /u=rx ! -perm /go=r

En espérant avoir été clair🙂

Pour plus d’informations, je vous invite à lire le manuel de find : www.gnu.org/software/findutils/manual/html_mono/find.html

Linux : masquer les processus des autres utilisateurs

Il est parfois souhaitable sur un serveur Linux de n’afficher aux utilisateurs que leurs propres processus :

Le contrôle se fait au niveau de l’option de montage hidepid pour /proc avec trois valeurs numériques possibles :

  • 0 : le comportement par défaut, tous les processus sont visibles de tous les utilisateurs
  • 1 : les informations sur les processus des autres utilisateurs sont protégées (on voit les PID dans /proc mais sans pouvoir récupérer leurs propriétés, la ligne de commande notamment).
  • 2 : les processus sont masqués, on ne les voit même plus en parcourant /proc.

La modification se fait dans /etc/fstab. Si le point de montage existe déjà, ajoutez hidepid=X dans les options (généralement après defaults) sinon ajoutez la ligne complète :

proc /proc proc defaults,hidepid=2 0 0

Ne reste plus ensuite qu’à remonter /proc (pas besoin de redémarrer) :

mount -o remount /proc

Traduction en Puppet :

file_line { 'fstab_hidepid':
    line     => 'proc /proc proc defaults,hidepid=2 0 0',
    match    => '^proc',
    multiple => false,
    path     => '/etc/fstab',
} ~>
exec { 'reload_proc':
    command     =>'/usr/bin/mount -o remount /proc',
}

Sources :

Alternance, WordPress et ProtonMail

Cela faisait trois mois que je n’avais pas donné signe de vie sur ce blog et un an pile depuis les précédentes nouvelles. Non pas que ma vie soit vide et inintéressante (bien que cela puisse porter à débat) mais la motivation pour écrire me manquait.

Alternance

En septembre 2015, j’écrivais :

Me voilà donc de retour à Laval pour une licence « classique » (du CNAM) d’informatique en alternance à l’IIA (Institut d’informatique appliqué) suivi, je l’espère, d’un master pour obtenir le saint graal, à savoir le titre d’ingénieur.

La licence option Système et Réseaux dans la poche (merci à NnTech), j’entame à présent la dernière ligne droite pour l’obtention d’un « Master of science i-Manager« , l’intitulé officiel (et pour le moins bizarre) de ce diplôme.

J’ai opté pour le parcours Manager de la Sécurité des Systèmes d’Information (MSSI) en alternance à la société Jouve, basée à Mayenne (la ville). C’est une société aux multiples activités dont j’intègre la branche « IT Solutions« .

Les cours proprement dit ne débuteront que début novembre – la formation commence par deux mois chez l’employeur – et le rythme sera ensuite d’un mois en entreprise et d’un mois en cours.

Le programme s’annonce très intéressant (vraiment) avec beaucoup, beaucoup de modules sur la sécurité (Sécurité Linux et Mac, Concepts sécurité et Cybersécurité, concepts et techniques de chiffrement, etc.).

J’essayerais d’écrire régulièrement des articles pour partager mes découvertes techniques tant en cours qu’en entreprise.

Migration du blog

Jusqu’à présent hébergé sur un VPS OVH, j’ai choisi après une longue hésitation de passer à la solution hébergée (SaaS diront certains) wordpress.com. Le prix est identique (3 € par mois) et je peux enfin faire une croix sur les alertes quotidiennes de tentatives brute-force et autre scans de ports.

Cette solution ne conviendra probablement pas à tout le monde sachant que le choix de thèmes et de plugins est limité – on ne peut pas installer n’importe quoi. Me concernant, n’utilisant que quelques plugins pour la sécurité, le sitemap et les smileys, rien de bloquant. Quand aux thèmes, je les trouve très réussis.

Une surcouche a été ajoutée pour rendre l’interface plus sexy :

https://en-blog.files.wordpress.com/2015/11/editor-posting-gif.gif?w=720

C’est la même interface que l’on retrouve en utilisant le client lourd – une application web embarquée. On peut cependant accéder à toutes les fonctionnalités de l’admin classique en suffixant son domaine par /wp-admin.

La migration en elle-même a été très rapide, il m’a suffit d’exporter le contenu depuis l’admin WordPress (Outils > Export) et de réimporter côté WordPress.com. En quelques minutes, tout (ou presque) était de retour.

Adieu Hosted Exchange

Précédemment sur une offre OVH Hosted Exchange qui a multiplié les indisponibilités (le record : 4 jours consécutifs sans accès et un support toujours aux abonnés absents), ma boîte mail est désormais hébergée chez ProtonMail.

Avec l’accent mis sur le respect de la vie privée avec un cryptage end-to-end (l’hébergeur ne peut pas les lire), c’est un service qui se révèle très fiable au quotidien bien qu’encore jeune avec certaines fonctionnalités qui tardent à venir (les filtres de réception ne sont arrivés que début septembre). Manque encore l’import en masse depuis une autre boîte mail et la possibilité de créer plusieurs comptes sur un domaine personnalisé.

157994
Capture de l’interface de ProtonMail

L’offre Plus, nécessaire pour utiliser son propre domaine, coûte un poil plus cher que celle d’OVH, à savoir 4 € par mois chez ProtonMail contre 3,59 € chez OVH.

Attention cependant car, contrairement à  Exchange, ProtonMail ne propose pas d’outils collaboratifs, adieu donc le partage de carnets d’adresses, de calendriers (en fait, il n’y a pas de calendrier) et de tâches (il n’y en a pas non plus).

Donc si vous êtes un pro ou une entreprise dépendante des fonctionnalités de Microsoft Exchange et pas trop soucieus(e) de confier vos données à une société étrangère, je vous encourage plutôt à aller voir du côté d’Office 365 (si si, vraiment, je n’en ai que de bons retours).

Si ce n’est pas le cas et que Zimbra ne vous effraie pas, regardez plutôt du côté de Web4all. Dommage que leur première offre soit si chère pour un particulier, j’aurais probablement craqué sinon. Tant pis pour eux🙂

PeerBlock & OVH

(ce billet est surtout un pense-bête)

En essayant de me connecter à un serveur dédié chez OVH en SSH :

  • Putty me ferme systématiquement la connexion
  • Bitvise me retourne le message d’erreur suivant :
    FlowSocketConnector: Failed to connect to target address. Windows error 10013: Une tentative d’accès à un socket de manière interdite par ses autorisations d’accès a été tentée.
  • Le ping ne passe pas (défaillance générale)

En vérifiant le fichier de logs du pare-feu Windows (%systemroot%system32LogFilesFirewallpfirewall.log), je vois mes connexions bloquées :

2016-06-01 19:07:38 DROP ICMP 192.168.1.14 X.X.X.X - - 0 - - - - 8 0 - SEND
2016-06-01 19:08:12 DROP TCP 192.168.1.14 X.X.X.X 54934 22 0 - 0 0 0 - - - SEND

Je désactive donc logiquement le pare-feu Windows : même résultat et les logs continuent à s’écrire.

Et c’est là que je me souviens que j’utilise PeerBlock (je passe la raison). Je regarde dans l’interface et… bingo c’est lui qui bloque – car la plupart des plages OVH sont sur listes noir.

Après ajout dans la whitelist, ça va beaucoup mieux🙂

Office 365 : Créer une redirection Exchange sans licence

Voici la marche à suivre pour créer une adresse e-mail sur Office 365 qui ne va faire que rediriger, et ce sans utiliser de licence.

Ce n’est pas la seule façon de procéder mais celle-ci a l’avantage de permettre de transférer le compte en vrai boîte mail très rapidement en lui associant une nouvelle licence.

Création de l’utilisateur

Tout d’abord, il faut créer l’utilisateur. Pas de manipulation spéciale, c’est un compte normal.
Son nom d’utilisateur constituera son adresse e-mail – il sera ensuite possible de définir des alias dans la console Exchange.
Le mot de passe importe peu étant donné que, faute de licence, l’utilisateur ne pourra jamais s’y connecter.

Création d’un contact

Depuis le portail d’administration d’Office 365, se rendre sur la console Exchange :

2016-05-30-08_27_56

 

Se rendre ensuite dans Recipients > Contacts.

2016-05-30-08_28_19.png

Nous allons ici créer un nouveau contact portant le nom de l’utilisateur (peu importe en fait) avec son adresse e-mail externe – vers laquelle on va rediriger.

 

Création d’un boîte partagée

Maintenant que le contact est créé, passons à la redirection proprement dîtes.

Toujours dans la section Recipients, allez dans dans l’onglet Shared.

Cliquer sur le petit (+) et renseignez le nom d’affichage et l’adresse e-mail. Pas besoin de définir de propriétaire ou d’alias :

2016-05-30-08_31_44

Une fois créé, éditez-le puis rendez-vous dans mailbox features > Mail Flow > Delivery Options :

2016-05-30-08_32_57.png

Une nouvelle s’ouvre, cochez la case Enable forwarding et sélectionnez le contact comme destinataire :

2016-05-30-08_34_24.png

Terminé !

PI, je n’ai pas eu d’erreur en laissant la case Deliver message to both forwarding address and mailbox cochée.

SuSE : Température CPU

Sous OpenSuSE Leap 42.1, le relevé de température des différents capteurs d’un ordinateur peut s’obtenir à l’aide du package sensors.

On commence par l’installer :

sudo zypper in sensors

Puis l’on rafraichit la liste des capteurs disponibles :

sudo sensors-detect --auto

Sans l’option –auto, on peut sélectionner les capteurs et répondant YES ou NO à chacun des questions – elles sont nombreuses.

A la fin de l’assistant, on peut voir ce qu’il a trouvé et les modules noyau qu’il a dû charger pour :

Now follows a summary of the probes I have just done.

Driver `coretemp':
  * Chip `Intel digital thermal sensor' (confidence: 9)

Do you want to generate /etc/sysconfig/lm_sensors? (YES/no): 
Copy prog/init/lm_sensors.init to /etc/init.d/lm_sensors
for initialization at boot time.
You should now start the lm_sensors service to load the required
kernel modules.

Unloading i2c-dev... OK
Unloading cpuid... OK

Ne reste plus qu’à exécuter sensors (pas besoin des droits root) pour afficher les informations relevées :

simon@linux-f4lt:~> sensors
nouveau-pci-0700
Adapter: PCI adapter
temp1:            N/A  (high = +95.0°C, hyst =  +3.0°C)
                       (crit = +105.0°C, hyst =  +5.0°C)
                       (emerg = +135.0°C, hyst =  +5.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +41.0°C  (high = +84.0°C, crit = +100.0°C)
Core 0:         +38.0°C  (high = +84.0°C, crit = +100.0°C)
Core 1:         +42.0°C  (high = +84.0°C, crit = +100.0°C)

En cas de doute sur un adapteur PCI, pour connaître le périphérique associé, on utilise lspci :

simon@linux-f4lt:~> sudo lspci | grep 07:00
07:00.0 3D controller: NVIDIA Corporation GK208M [GeForce GT 740M] (rev a1)

(ici ma carte graphique)

Linux : Bloquer le ping entrant

Il existe sous Linux deux moyens de désactiver le ping entrant, rendant la machine plus difficilement détectable.

Pour commencer par la plus radicale, c’est le paramètre net.ipv4.icmp_echo_ignore_all . Configuré à 1, il bloque le ping. De retour à 0, il laisse passer :

# On bloque le ping
sysctl -w net.ipv4.icmp_echo_ignore_all=1

# Equivalent à :
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# On réactive le ping
sysctl -w net.ipv4.icmp_echo_ignore_all=0

# Equivalent à :
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Pour vérifier la valeur actuelle
sysctl net.ipv4.icmp_echo_ignore_all

# Equivalent à :
cat /proc/sys/net/ipv4/icmp_echo_ignore_all

Pour le rendre persistent, l’ajouter dans /etc/sysctl.conf ou dans un nouveau fichier situé dans /etc/sysctl.d (ce qui est la pratique recommandée) :

echo 'net.ipv4.icmp_echo_ignore_all = 1' > /etc/sysctl.d/99-disable-ipv4-echo.conf

Moins radicale et plus flexible, on peut confier cette tâche à iptables :

iptables -t filter -I INPUT -p icmp --icmp-type echo-request -j DROP

On pourra alors autoriser préalablement certaines IP (de monitoring par exemple) à pinger l’hôte. Voir à brider sur certaines interfaces seulement.

La manière de le rendre persistent va dépendre d’une distribution à une autre, on pourra par exemple utiliser une règle riche (add-rich-rule) sous firewalld.