Port knocking pour ssh
Un article de Casys (Canadian Sysadmins).
Auteur: Thomas Boutry
Sommaire |
Description
Le port ssh est constament attacké par des robots qui essaye des user/mot de passe avec des dictionnaires. Nous aimerions tous blocké la connection ssh avec une règle de firewall cependant il n'est pas toujours possible de le faire surtout si vous avez une adresse ip dynamique à votre domicile. Dans la présente documentation nous utiliserons du port knocking, la technique est simple comme lorsque nous cognons a une porte une commande sera executé. La solution présente peut être une solution pratique , ceci est un exemple simple je vous invite a regardé de manière plus approfondie pour la séquence de connection.
Situation actuelle
Une serveur GNU/linux qui offre un service http/https.
Avec les règles de firewall suivante :
iptables -P INPUT DROP iptables -I INPUT -p tcp --dport 80 -j ACCEPT iptables -I INPUT -p tcp --dport 443 -j ACCEPT iptables -I INPUT -p tcp --dport 22 -j ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
ATTENTION: ceci est un exemple de firewall très simple ne pas le prendre pour du cash.
Modification du setup
L'objectif est de ne plus avoir l'ouverture du port 22 pour toutes les adresses ip du monde !!!! Cependant pour être sur de toujours pouvoir vous connectez au serveur même si le système de port knocking devriendrais non-fonctionnelle je vous invite fortement à ajouté une ip fixe par laquelle vous pourrez toujours accéder au serveur. donc voici le résultat :
iptables -P INPUT DROP iptables -I INPUT -p tcp --dport 80 -j ACCEPT iptables -I INPUT -p tcp --dport 443 -j ACCEPT iptables -I INPUT -s Ip.Du.Srv.Du.Bureau -p tcp --dport 22 -j ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
Maintenant nous allons faire le setup pour que le port 22 s'ouvre automatiquement quand nos cognons à la porte.
Installation & Configuration de knockd
- Installation de la librairie pcap qui est la même utilisé par tcpdump pour lire les connections sur la carte réseaux.
yum install libpcap-devel.i386
- Téléchargement du logiciel
cd /root/apps/ wget http://www.zeroflux.org/proj/knock/files/knock-0.5.tar.gz tar -zxvf knock-0.5.tar.gz
- Compilation & installation
cd knock-0.5 configure --prefix=/usr/local/knock make make install
- Réalisation de la configuration
ci -u /etc/knockd.conf co -l /etc/knockd.conf vi /etc/knockd.conf
FICHIER:
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 8030,2020,8020
seq_timeout = 5
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 8020,2021,8030
seq_timeout = 5
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT
tcpflags = syn
- Commit
ci -u /etc/knockd.conf
Démarrage du service :
/usr/local/knock/sbin/knockd &
Activation au démarrage :
rcsdiff /etc/rc.local co -l /etc/rc.local vi /etc/rc.local
AJOUT:
/usr/local/knock/sbin/knockd &
ATTENTION : ceci n'est pas très propre je vous invite a réalisé un script de démarrage situé dans /etc/inetd/knockd.
malheureusement je n'ai pas pris le temps de le faire .
Test du setup
- D'une addresse ip non-authorisé
ssh 192.168.2.38
Vous devriez avoir un TimeOut.
- Avec le port knocking
telnet 192.168.2.38 8030 || telnet 192.168.2.38 2020 || telnet 192.168.2.38 8020 ssh 192.168.2.38 <pre> Vous devriez être en mesure de vous connectez. ''' ATTENTION ''' il est important de faire la séquence de fermeture sinon la règle iptables sera toujours active . Donc: <pre> telnet 192.168.2.38 8020 || telnet 192.168.2.38 2021 || telnet 192.168.2.38 8030
Refaire un test:
ssh 192.168.2.38
Vous devriez avoir un TimeOut.
