lundi 18 novembre 2013

Le minimum vital pour sécuriser son Raspberry Pi

Les premières précautions se prennent directement via le menu de configuration sudo raspi-config On change son mot de passe si on ne l'a pas déjà fait.

On s'assure de désactiver le boot en mode desktop puisqu'on ne va pas utiliser l'interface graphique (option "enable boot to deskop").

Et comme on vient de désactiver la GUI on peut réduire la part de RAM utilisée par le GPU à 16Mo (option "memory split").

On s'assure d'être à jour niveau source sudo apt-get update
sudo apt-get upgrade
Ensuite on va se débarrasser du compte utilisateur par défaut (pi). On peut pour cela en créer un autre avec les mêmes groupes puis supprimer ou le désactiver le compte pi. J'ai préféré cependant récupérer le compte existant en le renommant. Pour cela on va devoir se loguer en root mais la connexion par ce compte est désactivée par défaut (cf le signe * à la place du hash du mot de passe dans /etc/shadow). root:*:15973:0:99999:7::: On va donc créer un login root par la commande suivante: sudo passwd root Qui ajoute le hash du mot de passe dans le fichier /etc/shadow root:$6$4SHHg7....kjIIHGYTL/:16027:0:99999:7::: Maintenant qu'on a un autre compte que le compte pi on peut se déconnecter et se reconnecter en tant que root. Puis on renomme le compte pi: usermod -l phi pi Et on transfère le compte home associé ainsi que son contenu usermod -m -d /home/phi phi Par précaution on re-désactive le login en compte root par: sudo passwd -l root Notez le point d'exclamation ajouté au début du hash et qui le rend donc inopérant: root:!$6$4SHHg7....kjIIHGYTL/:16027:0:99999:7::: Pour finir on va désactiver la possibilité de se connecter en root par ssh en éditant /et/ssh/sshd_config: PermitRootLogin no
Puis: /etc/init.d/ssh restart
Ne pas oublier de faire une sauvegarde régulière du contenu de sa carte SD: fdisk -l (sous linux)
diskutil list (sous OSX)
puis:
sudo dd if=/dev/rdisk1 bs=1m | gzip > backup.gz (sous osx disk1 donne rdisk1)
que l'on pourra restaurer comme ceci gzip -dc /path/to/backup.gz | sudo dd of=/dev/rdisk1 bs=1m

lundi 11 novembre 2013

Son propre serveur mail sur Raspberry Pi grâce à iRedmail

Récemment j'ai fais le tour de l'excellent site Prism Break qui a le mérite de lister de manière concise et claire tout un tas d'outils connus uniquement des personnes avisés en sécurité informatique.

Parmi les liens j'ai pas mal étudié l'article suivant "NSA proof email in 2 hours" qui explique comment monter son propre serveur mail avec Postfix et Dovecot. Alors OK ça fonctionne, j'ai essayé, mais franchement c'est un pur truc d'autiste, on est dans la caricature du linuxien avec autant de commandes à taper. J'ai donc opté pour une solution beaucoup plus simple grâce au script iRedmail, et très peu onéreuse puisque fonctionnant sur un Raspberry Pi.

Le problème d'iRedmail est qu'on est totalement spectateur de l'installation et qu'au moindre problème on ne sait pas trop par où recommencer. Le script est clairement destiné à une machine fraîchement installée.

On commence donc avec une installation vierge de Raspbian que l'on prépare en changeant le mot de passe SSH (pi / raspberry par défaut), en étendent la partition à toute la SD et en paramétrant son hostname: (ex: myhost.dyndns.org). On peut tout faire à partir de: sudo raspi-config Ensuite j'ai eu quelques modifications à faire pour que le script iRedmail fonctionne sur le Raspberry.

Premièrement, iRedmail requiert officiellement 1Go de RAM. Je n'ai pas voulu perdre de temps à essayer avec moins donc j'ai suivi ce tuto pour installer zram et virtuellement doubler ma RAM (j'ai un raspberry model B). Résultat après l'installation de zram: pi@myhost ~ $ free -m
         total used free shared buffers cached
Mem: 438   53    384   0         8         23
-/+ buffers/cache: 22 416
Swap: 538   0     538
Ensuite la première fois que j'ai lancé le script j'ai été confronté à l'erreur suivante: dpkg: error processing dovecot-pop3d (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
dovecot-imapd
dovecot-sieve
dovecot-managesieved
dovecot-pop3d
E: Sub-process /usr/bin/dpkg returned an error code (1)
Et j'ai découvert qu'il fallait installer ipv6 pour que Dovecot s'installe correctement. La FAQ du raspberry donne la solution suivante pour activer l'ipv6 sudo modprobe ipv6 (activation immédiate)
ajouter une ligne ipv6 à /etc/modules (démarrage auto au boot)
Enfin pour des raisons de support et de manque de test, iRedmail ne supporte pas officiellement la plateforme ARM. Pour forcer l'installation il faut modifier le test d'architecture dans le script ./conf/global en ajoutant le cas armv6l case $arch in
    i[3456]86) export ARCH='i386' ;;
    x86_64|amd64) export ARCH='x86_64' ;;
   + armv6l) export ARCH='armhf' ;;
    *)
       echo "Your architecture is not supported yet: ${arch}."
      ! echo "Arm, i386 and x86_64 are supported by ${PROG_NAME}."
       exit 255
    ;;
esac
On est enfin prêt pour lancer le script: sudo bash iRedmail.sh Et à la fin de l'installation on n'oublie pas de supprimer le fichier de config temporaire qui contient nos mots de passe: rm /home/pi/Install/iRedMail-0.8.5/config Pour des raisons de performance et parce que je n'en avais pas besoin j'ai également désactivé l'antivirus ClamAV avec: Dans /etc/amavis/conf.d/50-user commenter:

#@bypass_virus_checks_maps = (
#    \%bypass_virus_checks,
#    \@bypass_virus_checks_acl,
#    $bypass_virus_checks_re,
# );

Puis:

sudo /etc/init.d/clamav-daemon stop
sudo /etc/init.d/clamav-freshclam stop

sudo update-rc.d -f clamav-daemon remove
sudo update-rc.d -f clamav-freshclam remove
Dans le futur peut être qu'arkos présentera une alternative intéressante et plus simple à mettre en neuve. Pour le moment Raspbian et iRedmail ont le mérite d'être des systèmes plus éprouvés.