Autoriser l'accès au serveur Web uniquement via CloudFlare (iptables)


Cloudflare est une excellente chose pour protéger les sites contre différents escrocs informatiques - les pirates. Cependant, s'ils reconnaissent néanmoins en quelque sorte l'IP d'origine du serveur web sur lequel se trouve le site, ils vont au moins essayer de l'attaquer par IP, en contournant le proxy. Vous pouvez bloquer les redirections, envoyer 444 réinitialisations NGINX lorsque vous essayez d'accéder à des domaines inexistants, mais le plus ironique de la situation est la suivante: ouvrez le trafic http / https vers le serveur uniquement pour les adresses IP de notre proxy de sécurité.

Soit dit en passant, cette méthode peut également rendre partiellement inutiles toutes sortes de sites comme crimeflare.org . Eh bien, le «détective» a découvert que le domaine était autrefois accessible par une telle IP - vérifier s'il est toujours là en essayant de se connecter à IP: 443 ou IP: 80 sera inutile.
Et si vous fermez tous les ports du serveur, désactivez ICMP et autorisez uniquement l'accès via IPMI / VNC, personne ne saura qu'il y a quoi que ce soit sur notre IP.

Faisons-le dans iptables.

CloudFlare possède un grand nombre d'adresses, mais elles sont toutes compressées en un petit nombre de sous-réseaux. Anticipant une telle demande, les gars ont publié un article indiquant où vous pouvez trouver leurs sous-réseaux actuels et même quoi écrire dans iptables. Un problème est qu'il est censé être fait manuellement, ce qui est plutôt gênant et peu fiable: l'adressage dans CloudFlare peut changer au fil du temps, et un jour, il peut arriver que le proxy situé aux nouvelles adresses ne soit pas autorisé sur votre serveur. En conséquence, les clients dont les sessions passeront par ces nouvelles adresses ne pourront pas accéder à votre site.

Heureusement, le problème est automatisé. Donc:

1. Nous interdisons tout trafic HTTP / HTTPS dans iptables:

iptables -I INPUT 1 -p tcp -m multiport --dports http,https -j DROP 

2. Placez quelque part, par exemple, via /root/cloudflare-update.sh le script cloudflare-update.sh avec le contenu suivant:

 #!/bin/bash while read ip ; do iptables -D INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT ; done <<< "$(curl https://www.cloudflare.com/ips-v4)" while read ip ; do iptables -I INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT ; done <<< "$(curl https://www.cloudflare.com/ips-v4)" iptables-save > /etc/iptables/rules.v4 

Autrement dit, nous supprimons toutes les entrées existantes ajoutées précédemment, réajoutons tout ce qui se trouve dans la liste d'adresses CloudFlare. De cette façon, nous évitons les règles en double. À la fin - économisez.

3. Nous rendons le script exécutable:

 chmod +x /root/cloudflare-update.sh 

4. Dans les couronnes (par exemple, à la fin du fichier / etc / crontab), nous ajoutons la tâche de mise à jour des adresses toutes les 12 heures:

 0 */12 * * * root /root/cloudflare-update.sh &> /dev/null 

C’est tout! Vous pouvez désormais accéder aux ports 80 et 443 de votre serveur uniquement via un proxy, car à tout moment, seules les adresses appartenant au proxy sont autorisées sur le serveur.

Source: https://habr.com/ru/post/fr414837/


All Articles