iptables : bannir plage IP Le sujet est résolu

Demande d'aide : c'est ici.
Répondre
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Salut à tous,

J'ai en ce moment un bruteforce intempestif d'une même plage d'IP sur mon port SSH. Rien de bien grave, la connexion est limitée à la connexion par clef. Mais ça pourrit mes logs.
J'ai fail2ban en place, et il bannit environ 3 fois par jour des adresses dans la plage 91.224.160.0/23 (de 91.22.160.0 à 91.224.161.255).
J'ai voulu mettre une règle iptables pour bannir définitivement cette plage d'IP, mais je continue à recevoir du log de fail2ban, ce qui veut dire que le ban n'a pas fonctionné. Mes règles iptables :

Code : Tout sélectionner

# iptables-save 
# Generated by iptables-save v1.4.21 on Sun Sep 11 14:09:02 2016
*raw
:PREROUTING ACCEPT [65087994:63758154700]
:OUTPUT ACCEPT [43124982:60425089913]
COMMIT
# Completed on Sun Sep 11 14:09:02 2016
# Generated by iptables-save v1.4.21 on Sun Sep 11 14:09:02 2016
*mangle
:PREROUTING ACCEPT [65087994:63758154700]
:INPUT ACCEPT [38004687:41826422441]
:FORWARD ACCEPT [27081915:21931521798]
:OUTPUT ACCEPT [43124982:60425089913]
:POSTROUTING ACCEPT [70206897:82356611711]
COMMIT
# Completed on Sun Sep 11 14:09:02 2016
# Generated by iptables-save v1.4.21 on Sun Sep 11 14:09:02 2016
*nat
:PREROUTING ACCEPT [1861713:79830716]
:POSTROUTING ACCEPT [661614:66118845]
:OUTPUT ACCEPT [737787:71839884]
-A POSTROUTING -o venet0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
COMMIT
# Completed on Sun Sep 11 14:09:02 2016
# Generated by iptables-save v1.4.21 on Sun Sep 11 14:09:02 2016
*filter
:INPUT DROP [115:9570]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [9298:2058902]
:fail2ban-dovecot - [0:0]
:fail2ban-postfix - [0:0]
:fail2ban-sasl - [0:0]
:fail2ban-ssh - [0:0]
:fail2ban-ssh-ddos - [0:0]
-A INPUT -p tcp -m multiport --dports 25,465,587,143,220,993,110,995 -j fail2ban-dovecot
-A INPUT -p tcp -m multiport --dports 25,465,587 -j fail2ban-postfix
-A INPUT -p tcp -m multiport --dports 25,465,587,143,220,993,110,995 -j fail2ban-sasl
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh-ddos
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 25,465,143,220,993,110,995 -j fail2ban-sasl
-A INPUT -p tcp -m multiport --dports 25,465,143,220,993,110,995 -j fail2ban-dovecot
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh-ddos
-A INPUT -p tcp -m multiport --dports 25,465 -j fail2ban-postfix
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8123 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25565 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -s 91.224.160.0/23 -j DROP
-A FORWARD -i tun0 -j ACCEPT
-A FORWARD -o tun0 -j ACCEPT
-A fail2ban-dovecot -j RETURN
-A fail2ban-dovecot -j RETURN
-A fail2ban-postfix -j RETURN
-A fail2ban-postfix -j RETURN
-A fail2ban-sasl -j RETURN
-A fail2ban-sasl -j RETURN
-A fail2ban-ssh -j RETURN
-A fail2ban-ssh -j RETURN
-A fail2ban-ssh-ddos -j RETURN
-A fail2ban-ssh-ddos -j RETURN
COMMIT
# Completed on Sun Sep 11 14:09:02 2016
La ligne -A INPUT -s 91.224.160.0/23 -j DROP devrait (selon moi) bannir la plage d'IP indiquée. Mais je vois encore ceci dans mes logs :

Code : Tout sélectionner

2016-09-11 06:32:30,195 fail2ban.actions[1387]: WARNING [ssh] Ban 91.224.161.103
Où est mon erreur ?

Merci d'avance pour votre aide.
Duna
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Coucou @Dunatotatos ...

Primo, à moins que je ne me trompe, mais tu n'as aucune règle concernant le REJET ou le DROP à-propos de cette plage, du moins directement.
Et, si jamais tu en fais une, il faut qu'elle soit lue avant les règles fail2ban, et là, tu vas avoir du mal puisque dès que tu vas recharger, soit par un restart, soit par arrêt, démarrer, failban va réécrire ses règles avant toutes les autres.
Donc, de fait, ce sont les règles fail2ban qui vont "réagir" les premières ;)
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Merci pour ta réponse :)
PengouinPdt a écrit :Primo, à moins que je ne me trompe, mais tu n'as aucune règle concernant le REJET ou le DROP à-propos de cette plage, du moins directement.
En l'occurrence, si, la dernière des INPUT :

Code : Tout sélectionner

-A INPUT -s 91.224.160.0/23 -j DROP
Par contre, tu expliques pourquoi elle ne fonctionne pas. Ce n'est pas grave si elle est effacée au prochain reboot. Je ne recharge ni ne redémarre très souvent (juste à chaque MAJ du noyau), et ça me permet de nettoyer ce genre de configuration temporaire.
J'ai écrit ça pour insérer cette règle en premier :

Code : Tout sélectionner

# iptables -I INPUT 1 -s 91.224.160.0/23 -j DROP
Reste à voir si fail2ban réagit encore.

Merci !
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Ahhh, oui ...

Par contre, ton segment réseau n'est pas 23, mais 24 ;-)
Soit : 91.224.160.0/24
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

PengouinPdt a écrit :Soit : 91.224.160.0/24
Non, je veux inclure les IP de 91.224.160.0 à 91.224.161.255. Comme le dernier bit de 160 à 161 change, ça fait bien 23. Sauf erreur tout à fait possible de ma part.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Euhhh, là, j'ai un doute ...
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
jim
Membre
Membre
Messages : 31
Inscription : 01 mai 2016, 10:53
Status : Hors-ligne

hum, je mettrais plutôt ainsi:

Code : Tout sélectionner

iptables -I INPUT  -m iprange --src-range 91.224.160.0-91.224.161.255 -j DROP
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Si si, j'ai vérifié ma plage, et elle fonctionne. Au passage, j'en profite pour faire découvrir l'outil ipcalc à ceux qui ne connaissent pas.

Code : Tout sélectionner

$ ipcalc 91.224.160.0/23
Address:   91.224.160.0         01011011.11100000.1010000 0.00000000
Netmask:   255.255.254.0 = 23   11111111.11111111.1111111 0.00000000
Wildcard:  0.0.1.255            00000000.00000000.0000000 1.11111111
=>
Network:   91.224.160.0/23      01011011.11100000.1010000 0.00000000
HostMin:   91.224.160.1         01011011.11100000.1010000 0.00000001
HostMax:   91.224.161.254       01011011.11100000.1010000 1.11111110
Broadcast: 91.224.161.255       01011011.11100000.1010000 1.11111111
Hosts/Net: 510                   Class A
Et la configuration de iptables avec la règle voulue en premier semble fonctionner. fail2ban bannit encore des IPs, mais plus dans la plage indiquée.

Merci pour votre aide :)
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

C'est toi qu'on remercie pour ces rappels intéressants :p
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
jim
Membre
Membre
Messages : 31
Inscription : 01 mai 2016, 10:53
Status : Hors-ligne

alors si je comprend bien, c'est fail2ban qui s'était décalqué
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

non, fail2ban n'est coupable en rien ... son mode opératoire veut qu'il soit le premier à filtrer ... ensuite, il passe le relais à iptables ...
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
jim
Membre
Membre
Messages : 31
Inscription : 01 mai 2016, 10:53
Status : Hors-ligne

PengouinPdt a écrit :non, fail2ban n'est coupable en rien ... son mode opératoire veut qu'il soit le premier à filtrer ... ensuite, il passe le relais à iptables ...
non plus, iptables n'attend jamais le relais de fail2ban pour filtrer à son tour, dès l'instant que les règles iptables sont en place ils les appliquent telles-que. Le mode opératoire de fail2ban est de lire les erreurs d'authentification dans le fichier log, 3 erreurs et fail2ban rajoute une règle Drop de l'ip en question en l'indiquant à iptables (ainsi que /etc/hosts.deny) . Pour résumer, fail2ban utilise iptables pour bannir, mais en aucun cas il est le premier à filtrer, c'est iptables seul qui s'occupe de la table netfilter.
Lolo
Membre
Membre
Messages : 32
Inscription : 10 juil. 2016, 01:24
Status : Hors-ligne

Bonne nuit.
Dunatotatos a écrit :Et la configuration de iptables avec la règle voulue en premier semble fonctionner.
Ça devait probablement laissé passer les IP par ici auparavant :

Code : Tout sélectionner

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Avatar de l’utilisateur
BelZéButh
Contributeur
Contributeur
Messages : 454
Inscription : 22 avr. 2016, 08:39
Localisation : Ch'timi
Status : Hors-ligne

Code : Tout sélectionner

[16:36:57]:~$ aptitude show ipset
[...]
Description : administration tool for kernel IP sets
 IP sets are a framework inside the Linux 2.4.x and 2.6.x kernel which can be administered by the ipset(8) utility. Depending on the type, currently an IP set may store IP addresses,
 (TCP/UDP) port numbers or IP addresses with MAC addresses in a  way which ensures lightning speed when matching an entry against a set. 
 If you want to 
 * store multiple IP addresses or port numbers and match against the entire collection using a single iptables rule. 
 * dynamically update iptables rules against IP addresses or ports without performance penalty. 
 * express complex IP address and ports based rulesets with a single iptables rule and benefit from the speed of IP sets. 
then IP sets may be the proper tool for you.
Site : http://ipset.netfilter.org/
Étiquettes: implemented-in::c, role::program
[16:37:14]:~$
La première loi du libre et de tout hacker, au sens noble, le partage de la connaissance !
Site de réinformation ... http://www.panamza.com
Avatar de l’utilisateur
CTparental
Membre
Membre
Messages : 38
Inscription : 14 sept. 2016, 21:29
Contact :
Status : Hors-ligne

Dunatotatos a écrit :....

Code : Tout sélectionner

# iptables-save 
# Generated by iptables-save v1.4.21 on Sun Sep 11 14:09:02 2016
.....
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh-ddos
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
.....
-A INPUT -s 91.224.160.0/23 -j DROP
.....

Où est mon erreur ?

Merci d'avance pour votre aide.
Duna
je pence qu'il faudrait remplacer

Code : Tout sélectionner

-A INPUT -s 91.224.160.0/23 -j DROP
par

Code : Tout sélectionner

-I INPUT -s 91.224.160.0/23 -j DROP
cela rendrai ta règle prioritaire par rapport a celles de fail2ban.
AMD A6-6400K
Radeon HD 7750/8740 / R7 250E 1GDDR5
8G ram DDR3
Debian Sid Xfce lightdm
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

CTparental a écrit :

Code : Tout sélectionner

-I INPUT -s 91.224.160.0/23 -j DROP
Parfait !
C'est un truc comme ça que je cherchais. Pour ceux qui voudraient en savoir plus :

Code : Tout sélectionner

       -I, --insert chain [rulenum] rule-specification
              Insert one or more rules in the selected chain as the given rule
              number.  So, if the rule number is 1,  the  rule  or  rules  are
              inserted  at the head of the chain.  This is also the default if
              no rule number is specified.
Merci :)
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

cela rendrai ta règle prioritaire par rapport a celles de fail2ban.
Jusqu'à ce que tu redémarres fail2ban ;-)
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Répondre