Sécuriser son serveur Linux Fontaine Thibaut - 1 janvier 2016 FONTAINE THIBAUT 1
Sommaire I) Pourquoi sécuriser un serveur? II) Les sécurités SSH Clé asymétrique Fail2ban IPtable FONTAINE THIBAUT 2
I) Pourquoi sécuriser un serveur? La sécurité des données est une choses extrêmement importante, surtout de nos jours. Alors pourquoi le sécuriser? il suffit de mettre un mot de passe différents de 8 caractères et le tour est joué. Et bien non car on peut facilement «cracker» les mots de passe en lançant une attaque en brute force. Il existe différents moyen pour sécuriser un serveur linux, qui permettent de se protéger un minimum. II) Les Sécurités : Configurer son ssh Par défaut le port qu utilise SSH pour se connecter est le port 22 heureusement pour nous nous pouvons le changer. Ensuite on remplace 22 par le nombre de notre choix. FONTAINE THIBAUT 3
On redémarre ensuite le service ssh : Maintenant quand vous vous connecterez à votre serveur, il faudra indiquer le numéro de port ici le port 2244 ( ssh -p 2244 thibaut@serveur.com ) Il est conseillé d interdire la connexion en root au serveur, il suffit seulement de mettre no Connexion SSH avec clé privé/clé public La connexion SSH avec un système de clé permet de se connecter à son serveur sans avoir à rentrer de mot de passe. On auras besoin d un serveur et d un poste client. Pour ma part j utilise un de mes serveurs et de mon Macbook. Les clés SSH se trouve dans le dossier.ssh Sur votre poste client générer une clé SSH Il vous demanderas de donner un nom à votre clé ici ks-docker et une passphrase l équivalent «d un mot de passe» FONTAINE THIBAUT 4
On va ensuite envoyer notre clé public générer sur notre serveur. Maintenant aller dans /etc/ssh/sshd_config pour autoriser la connexion avec notre clé De base si vous générer une clé RSA il n y a pas besoin de modifier le sshd_config En revanche si vous avez utilisé DSA il faut que vous décommantez la ligne HostKey /etc/ssh/ssh_host_dsa_key Vous pouvez également gérer le temps de la session de ou il sera possible de rentrer son login. Autoriser après la connexion avec votre clé et décommenter AuthorizedKeysFile.ssh/authorized_keys Désactiver les autres moyens de connexion RSAAuthentication no UsePAM no KerberosAuthentication no GSSAPIAuthentication no FONTAINE THIBAUT 5
PasswordAuthentication no Une fois paramétrer redémarré le service SSH : /etc/init.d/ssh restart La connexion avec le système de clé est maintenant opérationnel. Fail2Ban Le Fail2Ban permet de mettre de bannir une IP, lorsqu il détecte un certain nombre d erreurs de tentative de connexion en se basant sur IPtable Une fois installer passons à la configuration Il est recommandé de faire une copie du jail.conf en jail.local qui sera utiliser à la place. Ensuite c est bon on peut configurer notre Fail2ban. FONTAINE THIBAUT 6
ignorip Pour la liste des adresse IP de confiance que doit ignorer le Fail2ban bantime Pour le temps de ban en seconde, j ai mis 1h pour mon cas maxretry Pour le nombre de tentative ( je mets 6 car je tape vite ) desmail Pour l adresse mail ou veut recevoir des notifications action Permet de définir des actions en cas ou le nombre de tentative serais dépassé pour cela il faut aller dans le dossier /etc/fail2ban/action.d/ Voici tous les fichiers de configuration. Chaque fichiers de configuration possède ses propres paramètres qui prennent le dessus sur le fichier de configuration jail.local si elle sont configuré. Bref vous pouvez configurer votre fail2ban à votre guise, règles pour le ftp, mail, web etc. IPtable IPTable est un firewall ou pare-feu qui permet de filtrer le traffic entrant et sortant sur votre serveur permettant d autoriser ou non l accès, pour ce faire le firewall utilise des règles. Ces règles peuvent filtrer des adresses IP, des ports, des protocoles, etc. De base IPtable est installé sur le noyau linux, si ce n est pas le cas : apt-get install iptables FONTAINE THIBAUT 7
Pour voir les règles iptables actifs tapez : iptables -L -v /**** Pour ne pas nous bloquer l accès par inadvertance en créant une règle, on va crée un script bash contenant toute nos règles ****\ Commençons par créer le script : Les paramètres IPtable : -t >Filtrer -A > Indiquer le sens du traffic INPUT /OUTPUT -p > Le type de protocole TCP ou UDP dport et sport > Port de destination ou port source -j > La façon dont il faut traiter le paquet, si il faut accepter ou refuser ( ACCEPT ou DROP ) Exemple de script : FONTAINE THIBAUT 8
Une fois votre script crée nous allons pouvoir le lancer Pour vous donner le droit d exécution : chmod +x /etc/init.d/firewall Pour le lancer : /etc/init.d/firewall Afin d être protéger même en cas de reboot : update-rc.d firewall defaults Vous pouvez également ajouter d autre règles comme pour le DDOS ( ou dénis de service ) iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT Bannir une IP : iptables -A INPUT -s @IP_a_bannir -j DROP Si vous voulez tester la vulnérabilité de votre serveur, pouvez installer nmap qui est un outils de scannage de port. #apt-get install nmap #nmap -v ip_de_la_machine On peut rajouter l argument -p si on souhaite scanner un port en particulier. FONTAINE THIBAUT 9