Pages

Sunday, September 28, 2014

Sécuriser un server SSH


Source : http://korben.info/tuto-ssh-securiser.html

Config de base à changer dans le fichier /etc/ssh/sshd_config
#Changez le port par défaut. Cela évite pas mal d'attaques automatiques sur le port 22 (bots)
Port 1234
#C'est la seconde version du protocole ssh qui sera utilisée
Protocol 2
#Désactiver le login root. Ça c'est super important !!
PermitRootLogin no
Là déjà c'est pas mal... Relancez le serveur ssh :
/etc/init.d/ssh restart
Pour vous connecter sur ce nouveau port, vous devez utiliser le paramètre "p" avec ssh mac ou ssh linux. Pour Windows, utilisez Putty.
ssh -p1234 korben@monserveur.com
Vous continuez donc à vous logger en entrant votre login + mot de passe à chaque fois. C'est bien mais n'importe qui peut intercepter dans un mail, dans un snif (keylogger matériel ou qui balance ensuite par le réseau), ou autre, votre login et mot de passe... et ainsi avoir accès à votre serveur. Heureusement, on peut sécuriser tout ça encore un peu plus en interdisant l'authentification par mot de passe. Pour se connecter, on utilise alors des clés SSH (publique/privée). C'est de loin la technique la plus sûre même si pour vous connecter vous devrez être forcement sur un ordinateur qui dispose des bonnes clés...(pas évident donc depuis un cybercafé par exemple)
Voici donc comment faire... cette méthode fonctionne sous Linux / Mac OSX. Pour Windows, je sais que Putty-gen sait faire ça complètement via l'interface graphique.
=A faire sur votre ordinateur ET sur votre serveur=
#On crée un répertoire .ssh dans notre HOME
mkdir ~/.ssh
#Ensuite on lui change ses droits d'accès
chmod 0700 ~/.ssh
=A faire sur votre ordinateur uniquement=
#Puis on génère les clés. Vous pouvez choisir de mettre ou pas un mot de passe sur ces clés. Je vous recommande de le faire.
ssh-keygen -t dsa -f ~/.ssh/id_server
On se retrouve alors avec 2 fichiers dans .ssh :
id_server => clé privée qui ira sur vos machines clients
id_server.pub => clé publique qui ira sur votre serveur
#On transfère alors cette clé via scp vers votre serveur...
scp -P 1234 ~/.ssh/id_server.pub korben@monserveur.com:~/.ssh/authorized_keys
#Et on supprime cette clé publique parce qu'on n'en a plus besoin
rm -f ~/.ssh/id_server.pub
=A faire sur votre ordinateur ET sur votre serveur=
#On rechange les droits sur le répertoire qui contient les clés
chmod 0600 ~/.ssh/*
=A faire sur le serveur=
Et ensuite pour améliorer encore plus la sécurité, on va simplement créer un groupe avec uniquement votre / vos users dedans
#On crée le groupe sshusers
groupadd sshusers
#Et on ajouter l'utilisateur à ce groupe
usermod -a -G sshusers korben
Maintenant on retourne jeter un oeil dans le /etc/ssh/sshd_config afin de tout blinder et permettre l'utilisation de la clé que vous avez crée
#Décommentez ou ajouter la ligne suivante. Cela permet que le serveur donne son empreinte DSA en cas de connexion ssh.
HostKey /etc/ssh/ssh_host_dsa_key
#Mettez ensuite le paramètre suivant à 20s (par exemple). C'est la durée pendant laquelle une connexion sans être loggée sera ouverte.
#Si on avait gardé la bonne vieille technique du mot de passe, laisser 2 ou 3 minutes pour le taper, ce n'est pas de trop.
#Mais vu que là, on utilise la clé, on sera loggé immédiatement. Donc on peut vachement réduire le truc et mettre ça a 20 secondes par exemple.
LoginGraceTime 20s
#ça c'est le nombre maximum d'essais avant de se faire jeter par le serveur...
#Vu qu'avec la clé, pas d'erreur possible, vous pouvez le mettre à 1 essai possible.
MaxAuthTries 1
#Ensuite, on va indiquer au serveur SSH où se trouvent les clés et lui dire qu'on va les utiliser comme méthode d'authentification
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
#Et bien sûr, on va désactiver toutes les autres méthodes d'authentification
RSAAuthentication no
UsePAM no
KerberosAuthentication no
GSSAPIAuthentication no
PasswordAuthentication no
Note: Attention avec ce dernier paramètre (PasswordAuthentication) car il désactive l'authentification par mot de passe. Donc si vous vous êtes viandé avec les clés, vous n'aurez plus d'autre moyen de vous connecter. Finissez tout le tuto avant de mettre PasswordAuthentication à "no" et testez la connexion avec votre clé en faisant un simple "ssh -p1234 korben@monserveur.com". Dès que c'est bon, passez le paramètre à no et relancez ssh
#Ensuite, on va lui dire qu'on autorise uniquement les utilisateurs du groupe sshusers (pour plus de sécurité)
AllowGroups sshusers
#Le paramètre MaxStartups indique le nombre de connexions ssh non authentifiées que vous pouvez lancer en même temps.
#2 c'est largement suffisant sachant qu'avec les clés, c'est instantané.
MaxStartups 2
Maintenant que tout est paramétré, on va redémarrer le serveur ssh
sudo /etc/init.d/ssh restart
Faisons ensuite une connexion ssh pour tester
ssh -p1234 korben@monserveur.com
Normalement, ça devrait se connecter directement. Bravo, votre clé fonctionne ! (Si vous ne l'avez pas encore fait, vous pouvez alors mettre le paramètre PasswordAuthentication à "no")
On va maintenant hasher le fichier known_hosts qui contient en clair les infos de connexions déjà établies afin que justement, cela ne soit plus en clair.
ssh-keygen -H -f ~/.ssh/known_hosts
Supprimez ensuite le fichier known_hosts.old
rm ~/.ssh/known_hosts.old
Et voilà, je pense que là on est bon. Si vous souhaitez changer le mot de passe sur votre clé, voici la commande :
ssh-keygen -p -f ~/.ssh/id_server
Là, vous avez donc la clé "id_server" qui vous permet de vous connecter dans le répertoire .ssh. Vous pouvez la copier dans tous les .ssh de vos profils linux ou mac sur vos ordis (enfin, là où vous en avez besoin).
Un cas de figure un peu particulier se présente si vous utilisez Putty. En effet, celui-ci utilise des clés particulières .ppk. Il faudra donc importer votre clé avec un outil qui s'appelle Putty-gen. Sous Windows, c'est simple, c'est une interface graphique.
puttygen1 Sécuriser un serveur SSH
Sous linux par contre, il faut utiliser la ligne de commande pour convertir votre clé SSH en clé PPK
puttygen id_server -o macleputty.ppk
Dès que c'est ok, il suffit de configurer Putty pour lui indiquer sa clé ppk :
Capture d’écran 2010 05 25 à 06.39.02 Sécuriser un serveur SSH

Thursday, September 25, 2014

Purge sendmail

Problem description:

Somehow your sendmail outgoing message queue got flooded by e.g. a job and you want to remove all of the messages to be delivered.


Problem resolution:

Outgoing messages in the sendmail queue are stored in /var/spool/mqueue. In order to get an overview of the messages you could execute the following sendmail command:
1
sendmail -bp

As your sendmail queue got flooded with a lot of messages, this command might take forever. So instead of querying all of the stored messages you can also check the files directly:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@server01 mqueue]# pwd
/var/spool/mqueue
[root@server01 mqueue]#
[root@server01 mqueue]# ls -al
...
-rw-------  1 root smmsp    1285 18. Mai 10:35 qfr4I8ZSBn009790
-rw-------  1 root smmsp    1242 18. Mai 10:35 qfr4I8ZSu1009786
-rw-------  1 root smmsp    1233 18. Mai 10:35 qfr4I8ZumY009830
-rw-------  1 root smmsp    1253 18. Mai 10:35 qfr4I8ZUOF009794
-rw-------  1 root smmsp    1257 18. Mai 10:35 qfr4I8ZXPu009798
-rw-------  1 root smmsp    1253 18. Mai 10:35 qfr4I8ZZhj009802
...
[root@server01 mqueue]#
[root@server01 mqueue]# ls -al | wc -l
34439
[root@server01 mqueue]#

There is no explicit command for removing all messages. You can directly delete them with “rm”. In order to remove all messages, we just delete the queued files:
1
2
3
4
5
6
7
8
9
10
11
12
[root@server01 mqueue]# pwd
/var/spool/mqueue
[root@server01 mqueue]#
[root@server01 mqueue]# rm -f *
[root@server01 mqueue]#
[root@server01 mqueue]# ls -al
insgesamt 1128
drwx------  2 root mail 1138688 20. Mai 11:06 .
drwxr-xr-x 16 root root    4096 11. Mai 2011  ..
[root@server01 mqueue]#

“sendmail -bq” should now report an empty mail queue:
1
2
3
4
[root@server01 mqueue]# sendmail -bp
/var/spool/mqueue is empty
          Total requests: 0
[root@server01 mqueue]#
source : http://kb.initso.at/2013/05/how-to-remove-all-messages-from-a-sendmail-mail-queue/