30 mars 2012

Stop Disable Remove

Je défends l’idée que d’ajouter des couches de sécurité, et donc d’avoir plus de code en mémoire, n’est pas une garantie de plus de sécurité. Je préfère ne faire tourner que le strict minimum, correctement configuré et à jour.

Donc, après une installation de Linux je désactive systématiquement SELinux, iptables, ipv6 et les applications inutiles telles que sendmail.
systemctl stop sendmail
systemctl disable sendmail

systemctl stop iptables
systemctl disable iptables

systemctl stop ip6tables
systemctl disable ip6tables

systemctl stop firewalld
systemctl disable firewalld
Pour désactiver SELinux éditer /etc/selinux/config pour remplacer cette ligne :
SELINUX=enforcing
par celle ci :
SELINUX=disabled
Verifier l'etat avec
sestatus

Après le reboot il doit afficher
SELinux status:                 disabled

Pour désactiver ipv6, ajouter ces 4 lignes au fichier /etc/sysctl.conf
net.ipv6.conf.lo.disable_ipv6=1
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.enp2s0.disable_ipv6
Remplacer enp2s0 par le nom de l'interface sur la quelle vous voulez désactiver ipv6.

Utiliser la commande  find /proc/sys/net/ipv6 -name disable_ipv6 pour trouver tous les flags pouvant être utilisés


Une partie de IPv6 est maintenant intégrée au noyau, la désactivation n'est donc jamais complète.

Je vérifie qu’il n’y que les services nécessaires qui acceptent des connections.
 netstat –nat
Je vérifie de n’avoir sur le disque que des applications utiles
yum list installed
Je supprime celles qui sont inutiles
yum erase sendmail procmail
Je met a jour celles qui restent

yum update
Enfin, pour que les modif dans les fichier de conf soient prises en compte:
shutdown -r now            # -r pour reboot

IMPORTANT:  Ce travail au niveau de Linux doit aussi être fait aussi au niveaux d'applications comme Apache qui, par défaut, chargent trop de modules inutiles.


 


26 mars 2012

Paradoxe de Borda

PREALABLE

Ceci n'est pas une discussion sur la fiabilité des sondages mais sur un paradoxe soulevé par Bordas et repris par Condorcet (les sondages n’existaient pas à leur époque). Le paradoxe présenté ici ne fait que rajouter à la complexité d’interprétation des sondages.

Ce qui suit peut s’appliquer à tous types de choix ; qu’il s’agisse de choisir un président de la république, un sous-traitant, un projet à financer ect…  J’utiliserai le vocabulaire des élections (candidats, électeurs, voix) mais ce n’est pas une exigence.

ETABLIR  LES  PREFERENCES

Posons la question suivante à tous les électeurs et supposons que tous les électeurs répondent honnêtement.
« Parmi ces 3 candidats A, B, C pour lequel voteriez vous ? »
On note la réponse de l’électeur, puis on lui repose la question en éliminant de la liste celui qu’il vient de choisir. Ainsi, pour chaque électeur on obtient un classement des 3 candidats.

Exemple :
Q1) Votre choix entre « A, B, C » ?
R2) B.
Q2) Votre choix entre « A, C » ?
R2) A.
Pour cet électeur le classement est donc : B, A, C (ligne 3 dans les tableaux ci-dessous)

NOTES: Avec 3 candidats il y a 6 combinaisons possibles. De manière générale avec n candidats il y a factorielle(n) combinaisons, ce qui croit très vite : 3 candidats 6 combinaisons, 4 candidats 24 combinaisons … 11 candidats 39 916 800 combinaisons. Pour des raisons de facilité j’en reste à 3 candidats mais avec des programmes on peut simuler sans problèmes des millions de combinaisons. Notez qu’avec 12 candidats il y a plus de combinaisons que d’électeurs en Europe !

Imaginons que les préférences des électeurs établissent le classement suivant :

    combinaisons      voix
1    A    B    C       2 %
2    A    C    B      37 %
3    B    A    C       5 %
4    B    C    A      27 %
5    C    A    B       3 %
6    C    B    A      26 %

ANALYSE

39% des électeurs ont mis A en tête (lignes 1 et 2)
32% des électeurs ont mis B est en tête (lignes 3 et 4)
29% des électeurs ont mis C est en tête (lignes 5 et 6)


Notez que ces trois pourcentages sont exactements les même que dans le paradoxe de Condorcet.

Dans un système à deux tours, comme la présidentielle en France, A et B seraient sélectionnés pour le second tour.

Analysons les préférences en prenant les candidats deux à deux.


  1. A face à B : B l’emporte, paradoxalement, avec 58% des voix.
    Le candidat A recevra les voies des combinaisons où il est classé avant B,
    c’est à dire les lignes 1, 2, 5. Soit 2% + 37% + 3% = 42%
    Le candidat B recevra les voies des combinaisons où il est classé avant A,
    c’est à dire les lignes 3, 4, 6. Soit 5% +27% + 12% = 58% 

     
  2. B face à C : C l’emporte, paradoxalement, avec 66% des voix.
    Le candidat B recevra les voies des combinaisons où il est classé avant C,
    c’est à dire les lignes 1, 3, 4. Soit 2% + 5% +27% = 34%
    Le candidat C recevra les voies des combinaisons où il est classé avant B,
    c’est à dire les lignes 2, 5, 6. Soit 37% + 3% + 26% = 66%

     
  3. A face à C : C l’emporte, paradoxalement, avec 56% des voix.
    Le candidat A recevra les voies des combinaisons où il est classé avant C,
    c’est à dire les lignes 1, 2, 3. Soit 2% + 37% + 5% = 44%
    Le candidat C recevra les voies des combinaisons où il est classé avant A,
    c’est à dire les lignes 4, 5, 6. Soit 27% + 3% + 26% = 56%

     

PARADOXE  DE  BORDA

Paradoxalement, le vainqueur du premier tour perd en tête à tête face aux autres candidats. Ici le résultat des tête à tête est l'exact opposé du classement général : C'est le paradoxe de Borda. 

L'ordre, d'aprés les 3 tête à tête, est C, B, A. Contraitement au paradoxe de Condorcet, la transitivite des tête à tête est respectée. Pourtant on ne retrouve pas cette logique dans le classement quand on compares les 3 candidats sur un seul tour.

Le vainqueur de l'ensemble des tête à tête (ici C) est appelé "vainqueur de Condorcet". C'est  celui qui est préféré à tout autre. Mais ce vainqueur n'existe pas toujour : c'est le paradoxe de Condorcet.

Paradoxe de Condorcet

PREALABLE

Ceci n'est pas une discussion sur la fiabilité des sondages mais sur un paradoxe soulevé par Condorcet (les sondages n’existaient pas à son époque). Le paradoxe présenté ici ne fait que rajouter à la complexité d’interprétation des sondages.

Ce qui suit peut s’appliquer à tous types de choix ; qu’il s’agisse de choisir un président de la république, un sous-traitant, un projet à financer ect…  J’utiliserai le vocabulaire des élections (candidats, électeurs, voix) mais ce n’est pas une exigence.

ETABLIR  LES  PREFERENCES

Posons la question suivante à tous les électeurs et supposons que tous les électeurs répondent honnêtement.
« Parmi ces 3 candidats A, B, C pour lequel voteriez vous ? »
On note la réponse de l’électeur, puis on lui repose la question en éliminant de la liste celui qu’il vient de choisir. Ainsi, pour chaque électeur on obtient un classement des 3 candidats.

Exemple :
Q1) Votre choix entre « A, B, C » ?
R2) B.
Q2) Votre choix entre « A, C » ?
R2) A.
Pour cet électeur le classement est donc : B, A, C (ligne 3 dans les tableaux ci-dessous)

NOTES: Avec 3 candidats il y a 6 combinaisons possibles. De manière générale avec n candidats il y a factorielle(n) combinaisons, ce qui croit très vite : 3 candidats 6 combinaisons, 4 candidats 24 combinaisons … 11 candidats 39 916 800 combinaisons. Pour des raisons de facilité j’en reste à 3 candidats mais avec des programmes on peut simuler sans problèmes des millions de combinaisons. Notez qu’avec 12 candidats il y a plus de combinaisons que d’électeurs en Europe !

Imaginons que les préférences des électeurs établissent le classement suivant :

    combinaisons      voix
1    A    B    C      37 %
2    A    C    B       2 %
3    B    A    C       5 %
4    B    C    A      27 %
5    C    A    B      17 %
6    C    B    A      12 %

ANALYSE

39% des électeurs ont mis A en tête (lignes 1 et 2)
32% des électeurs ont mis B est en tête (lignes 3 et 4)
29% des électeurs ont mis C est en tête (lignes 5 et 6)
 

Notez que ces trois pourcentages sont les mêmes que dans le paradoxe de Borda.

Dans un système à deux tours comme la présidentielle A et B seraient sélectionnés pour le second tour.

Analysons les préférences en prenant les candidats deux à deux.


  1. A face à B : A l’emporte, logiquement, avec 56% des voix.
    Le candidat A recevra les voies des combinaisons où il est classé avant B,
    c’est à dire les lignes 1, 2, 5. Soit 37% + 2% + 17% = 56%
    Le candidat B recevra les voies des combinaisons où il est classé avant A,
    c’est à dire les lignes 3, 4, 6. Soit 5% +27% + 12% = 44%

  2. B face à C : B l’emporte, logiquement, avec 69% des voix.
    Le candidat B recevra les voies des combinaisons où il est classé avant C,
    c’est à dire les lignes 1, 3, 4. Soit 37% + 4% +27% = 69%
    Le candidat C recevra les voies des combinaisons où il est classé avant B,
    c’est à dire les lignes 2, 5, 6. Soit 2% + 17% + 12% = 31%

  3. A face à C : C l’emporte, paradoxalement, avec 56% des voix.
    Le candidat A recevra les voies des combinaisons où il est classé avant C,
    c’est à dire les lignes 1, 2, 3. Soit 37% + 2% + 4% = 44%
    Le candidat C recevra les voies des combinaisons où il est classé avant A,
    c’est à dire les lignes 4, 5, 6. Soit 27% + 17% + 12% = 56%

PARADOXE  DE  CONDORCET

Paradoxalement, le vainqueur du premier tour perd face à celui qui serait éliminé au premier tout !!  

En maths on dit que la transitivité n’est pas respectée. La transitivité c’est ce qui dit que : Si A pèse plus lourd que B et que B pèse plus lourd que C alors A pèse plus lourd que C. Le poids permet d’établir une relation transitive entre les personnes. Pas le vote !

Ce n’est pas l’absence de cette logique qui est la cause de ce paradoxe. Borda a montré que même avec des tête à tête transitifs on n’obtenait pas toujours un classement à un tour représentant cette logique.

Trucs pour virsh

Voici 3 conseils pour utiliser la commande virsh console

1) Comme cela vous est gentiment dit en début de session
Escape character is ^]
Le problème c’est que sur un clavier français CTRL + ] ne marche pas.
En fait l’équivalent de  CTRL + ]  est  CTRL + $.

2) Ne pas établir plusieurs sessions avec la même machine virtuelle en même temps. Vous obtiendrez des affichages incohérents dans toutes les sessions. En fait les caractères affichés sont dispatchés aléatoirement vers les différentes sessions ouvertes.

3) Quand on établie une session avec une machine virtuelle on prend le contrôle de la console dans l'état où elle est. On peut couper la session (avec CTRL + $), et la reprendre plus tard dans l’état où on l’a laissé. Le fait de couper la session ne provoque pas un logout. . (Un peut comme avec la commande screen)

Conséquence:
Dans le cas où la machine virtuelle est en attente du login le fait de s'y connecter à ce moment là ne fera pas apparaitre le prompt « login : »,. Donc on pourrait taper le nom d’utilisateur puis Enter, là on obtiendrait le prompt password et on continuerait comme d’habitude.

# virsh console vm1
Connected to domain vm1
Escape character is ^]
root
Password:
Last login: Mon Mar 26 01:08:45 on ttyS0
[root@localhost ~]#

Vous trouverez parfois le très mauvais conseil suivant :
« Taper sur la touche Enter pour faire apparaitre le prompt du login »
En effet, si vous ne tapez que sur la touche Enter sans avoir taper un nom d’utilisateur le prompt du login se réaffiche. Mais ceci est très dangereux !!

Que ce passerait il si, au lieu d’attendre le login, la machine virtuelle avait déjà un shell ouvert avec cette ligne de commande : « rm –rf / »
En appuyant aveuglement sur Enter vous valideriez l’effacement de tous les fichiers !!

Voila pourquoi il ne faut jamais taper sur Enter ‘pour faire apparaitre le prompt’. Il faut toujours commencer par CRTL+C pour annuler l’éventuelle commande en cours.
Si un shell est en cour il annulera l’éventuelle commande et réaffichera son prompt.

Si le CRTL+C ne provoque rien tapez CTRL+D. Dans le cas d’un login cela relance la procédure au début avec un nouveau prompt.