Créer un serveur avec Ubuntu: Sécuriser son accès SSH
Voilà une petite surprise
!! Après un certain succès des mes tutos sur l’installation d’un serveur Ubuntu, Velvetshadow m’a envoyer un tuto sur la sécurisation d’un accès SSH. Même si le protocole est très sécurisé en lui-même, une petite touche de protection en plus n’est pas de trop.
Voici donc le tuto de Velvetshadow et le lien vers son blog: http://blog.velvetshadow.fr/ (Je l’ai lu et avec un humour décalé mais tellement véridique, je me suis bien fendu la gueule
)

Nous allons voir comment en limiter l’accès pour plus de sécurité, et ensuite comment configurer Iptables pour restreindre les connexions entrantes à certains ports.
Le fichier de configuration SSH-Server se trouve dans:
[/etc/ssh/] et se nomme:
[sshd_config] : C’est ce fichier la que nous allons modifier en premier lieu.
Tout d’abord, afin d’éviter les attaque en Bruteforce (un robot test une par une toutes les combinaisons possible de mot de passe) visant l’accès SSH et donc en général le port par défaut : [22] nous allons définir un autre port d’écoute pour notre serveur:
sudo nano /etc/ssh/sshd_config
On ouvre le fichier de configuration avec Nano
Qui nous ouvre cette fenêtre :

On indique le nouveau port, disons 2424. Mais concrètement, cela nous protège que de la majorité des robots type Bruteforce. Toutefois si quelqu’un de mal intentionné cherche vraiment à vous nuire, il peut très facilement savoir que vous utilisez le port 2424 pour vos connections SSH. Il s’agit donc de renforcer la sécurité.
1) Interdire la connexion « root » :
Toujours dans ce fichier, il faut trouver la ligne [PermitRootLogin], et mettre [no] à la place de [yes]. Il est bien plus sur de se connecter en tant qu’utilisateur, et de devoir faire [su] avant une commande qui requiert les permissions root.
2) N’autoriser que certains utilisateurs :
Il suffit d’ajouter une ligne [AllowUsers], suivi des noms d’utilisateurs autorisés séparés par des espaces. Ici, [AllowUsers MonsieurDupont] pour n’autoriser la connexion que pour l’utilisateur MoniseurDupont.
Voila déjà une bonne protection, facile à mettre en place. Tournons nous maintenant du côté d’iptables :
Iptable (seul) n’est rien d’autre qu’un parefeu. Le table que nous allons utiliser est « filter ». Elle contient les chaines [INPUT] (trafic entrant), [FORWARD] (le trafic routé au travers de la machine), et [OUTPUT] (trafic sortant)
Pour chacune de ces chaines, nous pouvons spécifier un port, un protocole, et une action (cible) à effectuer :
[ACCEPT]:Â Accepte (!) le(s) paquet(s)
[DROP]: Rejette le(s) paquet(s)
[QUEUE]: Mets les paquets en attente pour les programmes et applications.
Avec ces connaissances, nous allons réaliser un script qui initialisera nos règles pour iptables de manière propre à chaque démarrage. Je détaillerais ce script à l’intérieur de celui-ci, via les commentaires désigné par un « # » . Créer le fichier avec un:
sudo nano /etc/init.d/omgitshot
Et remplissez-le avec ce qui se trouve dans la tableau ci-dessous.
| # !/bin/sh # Nettoyage complet des anciennes règles : # -F efface toutes les règles # -X seul, efface la table de toutes les chaines prédéfinies # -Z remet à zero le compteur de paquet et d’octet dans toutes les chaines # -t xxx : indique la table sur laquelle agir iptables -t filter -F iptables -t filter -X iptables -Z # Maintenant nous allons bloquer absolument tout le trafic entrant iptables -t filter -P INPUT DROP # Pour éviter de se faire ennuyer, on ne répondra pas aux pings en mettant DROP sur l’ICMP # -A ajoute la règle en fin de chaine # -p défini le protocole (ici donc, ICMP) # -j défini la règle à appliquer (ici DROP) iptables -t filter -A INPUT -p icmp -j DROP # Bien, maintenant ouvrons laissons notre port SSH ouvert iptables -t filter -A OUTPUT -p tcp –dport 2424 -j ACCEPT # Je planifie d’en faire un serveur de fichier, donc je vais laisser ouvert les ports FTP iptable -t filter OUTPUT -p tcp –dport 20:21 -j ACCEPT iptables -t filter INPUT -p tcp –dport 20:21 -j ACCEPT |
Voila notre configuration presque terminée ! Nous allons rendre ce fichier exécutable :
sudo chmod +x /etc/init.d/omgitshot
On l’ajoute aux scripts qui se lancent au démarrage :
sudo update-rc.d omgitshot defaults
On redémarre. Et nos nouvelles règles sont en place ! Pour vérifier, faites un:
sudo iptables -L
Remarque de Théo:
Merci à toi Velvetshadow, ton tuto est très bien fait. A part quelques notions et mise en pages, c’est le texte pur que tu m’a donné.
Alors qu’en pensez-vous de ce premier tuto ?
Articles Relatifs
28 Commentaires
Laisser un commentaire
Suivre Geek-Lab sur Facebook
Me suivre sur Twitter
En Pause http://t.co/wY1GWyyI
Light-Painting de Dinosaures http://t.co/g4Hu0o5W
Coca-Cola 8bits http://t.co/fy3ftZC
RT @mademoisellau: Entendu dans le bus : " Je n'était pas si bourré ! " " Mec, tu creusais mon jardin pour trouver Renée La taupe ! " ...
Afficher automatiquement les images dans Thunderbird http://goo.gl/fb/4wQPB
Sonic est obligé de se reconvertir http://bit.ly/pfxwuM
Vendredi c’est Mignon #26 http://goo.gl/fb/0Dc5H
J’ai publié 10 photos sur Facebook, dans l’album Animaux Mignons http://fb.me/zEAjOsJG

Hey
Merci pour la publication 

Si je dois faire quelques autres tutos simples pour mes études ou sur mon temps libres, je te les enverrais
Ah bah ce sera avec plaisir
)
Excellent tuto

Et pour renforcer un peu plus si l’on est parano, il suffit de rajouter une dose de « port knocking » en spécifiant des ports en TCP ou TDP et ça fait l’affaire
Salutations amicales
Merci à toi, c’est sympa… c’est ce genre de commentaire qui donne envie de continuer.
Intéressant, je vais voir ça. Merci
Très bon tuto
mais il y a une petit erreur c’est « sudo update-rc.d omgitshot defaults » qu’il faut mettre et non « sudo update.rc.d omgitshot defaults ».
Merci, je rectifie !
Au fait, pour ceux qui passent par ici, je viens d’apprendre après des mois de surfs qu’on peut lancer le serveur SSH sur deux ports différents.
Je m’explique :
Sur mon dédié, j’ai autorisé cache.ovh.net afin qu’il se connecte sur le port 22 de ma machine et il n’y a que cache.ovh.net qui peut se connecter sur ce port et toutes les autres IP ne le sont pas.
Puis dans la config du serveur SSH j’ai mit Port 2425 par exemple afin de me connecter dessus avec mon IP fixe.
Ce qui me fait deux accès sur un même serveur pour uniquement 2 IP et dropant toutes les autres.
J’espère que vous arriverez à comprendre un peu mon charabia
Salutations amicales
Merci pour l’astuce, ça devrait aider
Ah oui merci Jinfoa ^^ et bonne astuce ButterflyOfFire
Fail2ban est une bonne sécurité supplémentaire Grigric, donc +1
Je viens de découvrir ce site.Il est intéressant et complet, je repasserai avec plaisir
Je voulais juste signaler pour les lignes sur le parefeu :iptables -t filter -A INPUT -p tcp –dport 2424 -j ACCEPTAccepte les paquets qui rentrent sur le port 2424.iptables -t filter -A OUTPUT -p tcp –dport 2424 -j ACCEPTAccepte les paquets qui sortent à destination du port 2424.Je pense qu’il faudrait remplacer le dport en sport sur la dernière ligne pour autoriser les paquets à sortir à partir du port 2424.Bonne continuation !
super tes petits tutos !!!!
J’ai un petit soucis avec mon serveur !!!!Je ne peux plus me connecter dessus via mon navigateur quelqu’un a une idée.
Tu rentres la bonne IP ?
Tu as fais quoi depuis, entre le moment où ça marchait et là ?
Et bien une panne de courant !Par contre en local je peux me connecter mais plus d’accès internet sur mon serveur.
Panne de courant…je pense à la box qui à été réinitialisée. Remet l’IP du serveur dans ta box.
Déjà fait ! en plus ma box est sur un onduleur.Bon je suis passé par une reinstall sous unbuntu server 10.04, par contre il faut que je remette mes fichiers sur mon serveur. Avec un un chmod -r 777 ça ira.
Faut que je le fasse aussi… quand j’aurais le courage et le temps
et franchement le seul truc qui manque sur le site c’est un petit forum !!!!!!!!!!!
bon j’ai trouvé mon soucis: c’est à partir du moment que je fais la manip sur iptable après le redémarrage je ne peux plus connecter à mon serveur
Ouais, c’est vrai un forum serait bien. J’y pense t’inquiètes pas. Avec Iptables, tu as dû peut-être te mettre dans les IP « bannies ». Malheureusement, je connais très mal Iptables.
Donne le résultat de « iptables -L -vn » et on verra ce qu’on peut faire…
bon j’ai trouvé (en partie) j’ai modifié iptables en ignorant la ligne qui bloque tout le trafic; Pas top !!!Voilà ce que tu m’as demandé Guizmo:
Chain INPUT (policy ACCEPT 141 packets, 12310 bytes) pkts bytes target prot opt in out source destination 0 0 DROP icmp – * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 92 packets, 10375 bytes) pkts bytes target prot opt in out source destination
C’est super chiant à lire mais si je vois bien, tu laisses tout passer sauf les paquets icmp en entrée.Si c’est pour faire un firewall comme ça, tu peux le désactiver…Les policy sont à accept, donc tous les paquets qui ne matchent aucune ligne seront acceptés par défaut.Ce n’est pas la bonne politique de filtrage car tu ne peux pas penser à tous les paquets qu’il faudrait bloquer.Pour faire un truc propre, il faut mettre les policy à drop :
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
Et ensuite accepter uniquement les paquets dont on a besoin.Pour cela tu peux voir le mien : static.guillaumeg.eu/rat/opt/firewall/firewall-6.5 ou en trouver plein d’autre sur le web. Bon courage pour ton firewall, c’est une partie importante du serveur !
Je sais bien que mon firewall ne sert pas à grand chose puisque justement la ligne iptables -P input DROP j’ai du la commenter pour pouvoir accès à mon serveur.En fait j’ai fait comme dit dans le tuto j’ai fait un copier coller de la config et c’est que ça coince !!!!
Peut-être as-tu oublié les lignes autorisant le SSH ?
Je ne les vois pas dans ta config.
iptables -t filter -A INPUT -p tcp –dport 2424 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 2424 -j ACCEPT
encore moi !!!!!je viens de trouver ça en fouinant sur la toile: http://www.canonne.net/linux/iptables/index.php Si ça peut aider…………..