Accès restreint sur certain ports dans le temps

Bijour à tous

Ben voilà … pour des raisons de sécurité évidente, il est souvent utile de bloquer l’accès sur certains ports depuis l’extérieur, et parfois on se rend compte qu’il faut tout de même laisser un accès sur ces services depuis l’extérieur (genre un TP qui nécessite une base de données … Oracle pour ne pas le citer), et bien sûr, on a pas envie de laisser l’accès ouvert en continu, d’autant plus que si les personnes ont une ip dynamique faire une liste des ip et sous-réseau autorisés risque d’être long, donc la solution (j’avoue que j’ai pas cherché si des logiciels faisaient ça) :

Faire 2 scripts :
– l’un qui reset les règles du firewall en tâche cron une fois par jour qui contiendrait quelques chose du genre :

#!/bin/bash
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#les ports dont on veut bloquer l'acces par défaut ici le port 1337 allez savoir pourquoi 😉
iptables -A INPUT -p tcp --dport 1337 -j DROP

-l’autre qui autorise les ip contenu dans un fichier (en taches cron toutes les 5 minutes) du genre :

#!/bin/sh
IP_FILE="/var/www/ip.txt"
if [ -f $IP_FILE ]
then
        for i in `cat $IP_FILE`
        do
        #t=`echo $i|tr "-" " "`
        if [ -n $i ]
        then
                t="iptables -I INPUT 1 -p tcp -s $i --dport 1337 -j ACCEPT"
                #echo $t
                $t
        fi
        done
        rm $IP_FILE
fi

et hop, faut juste faire un script PHP qui rajoute les IPs (voir les ports, mais faudra modifier le script d’ajout des IP) dans le fichier txt pointé par le fichier txt du genre :

 $f=fopen("ip.txt","a+");
fwrite($f,$_SERVER['REMOTE_ADDR']."\n");
fclose($f);

Bien sûr, il faudra mettre une authentification dessus … sinon, c’est la porte ouverte à tout et n’importe quoi. Et voilà, vous pouvez dormir sur vos deux oreilles maintenant 😉

A noter que si vous le faites pour votre serveur SSH, faudrait pas que votre script plante, sinon, vous perdez tous les accès à votre serveur, mais ça peut permettre de pas mal réduire les tentatives de brute force, puisque par défaut personne ne pourra ce connecter dessus, il faudra juste passer par votre page web pour autoriser votre IP a y accéder et hop …

En espérant que ça puisse être utile 😉 Bon week-end.