Comment créer une liste d'IP-to-DROP à prendre en compte par Iptables

Bonjour,

Configuration de mon YunoHost

Matériel: x64 vps (Debian 9 Stretch)
Accès Internet: in a datacenter
YunoHost version: 3.1
As tu modifié ton yunohost avec des configuration spécifiques ou bien utilise tu uniquement la web administration et/ou la ligne de commande yunohost ? modifié
Si modifié, comment: Changement du port d’écoute SSH et installation de Logwatch

Description de mon problème

Suite à l’installation de j’ai remarqué que beaucoup d’IP non-désirées (Russe, Chinoise, Bulgare, Brésilienne, etc.) essayent de se connecter au serveur YunoHost, tout comme des tentatives d’utilisation en mode proxy.

Question

Est-il possible de créer et de modifier à la main une liste d’IP qu’Iptables pourrait DROP ?
De la même manière, est-il possible de créer une liste pour y placer des URL de reverse-DNS afin qu’Iptables puissent également les DROP ?

ppr

Bonjour,

Finalement, j’ai trouvé un script chez le <Chef de l’Internet> https://korben.info/comment-bloquer-certaines-ip-sur-votre-serveur.html
J’ai donc créé un fichier ip_block.ips dans /home et dans lequel j’ai copié-coller quelques IP de mes Logwatch :

nano /home/ip_block.ips
# copier (Ctrl+c depuis le webmail) puis coller (Ctrl+Shift+v en Terminal) les IP de Logwatch ou celles que l'on souhaite "dropper" (une IP par ligne)
# Ctrl+o pour enregistrer et Ctrl+x pour fermer

Ensuite, j’ai copié-collé le script crée dans /etc/init.d/ en l’adaptant avec le bon chemin vers le fichier ip_block.ips (/home/ip_block.ips) listant les IP à “dropper” et en commentant la ligne du log, avant de le rendre exécutable le script exécutable, le lancer et enfin voir s’il avait bien été pris en compte par Iptables :

nano /etc/init.d/ip_block
# copier (Ctrl+c depuis le web) puis coller (Ctrl+Shift+v en Terminal) le script et l'adapter aux noms et chemins des fichiers
# Ctrl+o pour enregistrer et Ctrl+x pour fermer
chmod +x /etc/init.d/ip_block
sh /etc/init.d/ip_block
iptables -L

ppr

1 Like

Bonjour,

J’ai cette mauvaise impression que le script ne se lance pas automatiquement au reboot de la machine…
Après un reboot, je vérifie avec un iptables -L, et seulement quelques règles définies (je suppose) par Yunohost apparaissent.

Bonjour,

Effectivement, ça ne se lance pas (toujours ?) automatiquement au redémarrage.
Il faut lancer manuellement sh /etc/init.d/ip_block.

Peut-être faudrait-il voir s’il est possible de créer une nouvelle fonctionnalité, du même genre que les IP autorisées à accéder à la Webadmin, qui permettrait de créer une liste des “IP-to-drop” ; avec la possibilité d’ajouter/modifier/supprimer une IP manuellement, voire une plage d’IP (123.45.67.* et pourquoi pas par pays, et s’il est possible d’initialiser cette liste à partir d’un fichier csv ou tableau.

Mais là c’est tout autre chose : développement, intégration … et ça dépasse toutes mes maigres compétences.

A priori pour l’heure il faudrait juste trouver un moyen de placer la commande au bon endroit afin de s’assurer que ce script se lance bien à chaque redémarrage.

ppr

Bonjour,

Vous pouvez aussi faire de votre script un service, je n’ai pas moi-même mis en place ce service. C’est une piste pour résoudre votre problème de lancement au redémarrage.

Vous pouvez créer un service ip_block, à adapter au nom du script et son chemin.

touch /lib/systemd/system/ip_block.service && nano /lib/systemd/system/ip_block.service

Avec comme contenu :

[Unit]
Description=IP_Block
Requires=network-online.target
After=network-online.target
 
[Service]
User=root
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/ip_block start
ExecStop=/etc/init.d/ip_block stop
 
[Install]
WantedBy=multi-user.target

Rechargement de systemd après avoir créé le service avec cette commande :

systemctl daemon-reload

Activation et lancement du service en une seule commande avec :

systemctl enable --now ip_block.service

Vérification de l’état du service avec un :

systemctl status ip_block.service
1 Like