Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Y@kuz@

bloquer des ip variables avec iptables par un sh

Messages recommandés

#!/bin/bash

# Create special BLACKLST chain
/sbin/iptables -t filter -N BLACKLST
/sbin/iptables -t filter -F BLACKLST

# Create the logdrop chain to log & drop a packet
/sbin/iptables -t filter -N BLACKLST_LOGDROP
/sbin/iptables -t filter -F BLACKLST_LOGDROP

### !!! Rule log one per minute !!! ######
/sbin/iptables -t filter -A BLACKLST_LOGDROP -m limit --limit 1/min -j LOG --log-prefix "BLACKLST"
######## !!! ZEBULON POWA !!! #######

/sbin/iptables -t filter -A BLACKLST_LOGDROP -j DROP

# Jump to the special BLACKLST chain at the end of the INPUT chain (commented out)
#/sbin/iptables -t nat -A INPUT -j BLACKLST

# List of ip ranges to ban
/sbin/iptables -t filter -I INPUT 1 -s 4.18.55.144/29 -j BLACKLST_LOGDROP
/sbin/iptables -t filter -I INPUT 1 -s 4.19.90.0/25 -j BLACKLST_LOGDROP
/sbin/iptables -t filter -I INPUT 1 -s 4.21.179.32/27 -j BLACKLST_LOGDROP
/sbin/iptables -t filter -I INPUT 1 -s 4.23.0.0/16 -j BLACKLST_LOGDROP
/sbin/iptables -t filter -I INPUT 1 -s 4.36.109.0/24 -j BLACKLST_LOGDROP
/sbin/iptables -t filter -I INPUT 1 -s 4.42.208.16/29 -j BLACKLST_LOGDROP

 

=> comme cà pour le -m limit --limit 1/min -j LOG ?

 

**************

Merci à vous deux pour vos conseils avertis :P , j'ai pas encore essayé la table mangle, j'ai laissé tourner cette nuit pour voir avec le sh lancé.Je vais bosser , je regarderai cà cette nuit où demain.

 

edit dernière minute ; je pourrai drop sans log , ca serai encore plus simple et léger ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à tous,

je voulais faire la limit du log quand je suis tombé sur ca dans le man =>

 

--limit taux

Taux maximum de correspondance : par un nombre, avec un

suffixe optionnel `/second', `/minute', `/hour', ou `/day' ; la

valeur par défaut est 3/hour.

 

je dois comprendre que si j'ai rien spécifiè c'est 3/hour, où si je passe l'argument dans le shell" --limit" sans options définies ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour, au sujet de mangle, => for i in `cat /path/to/blacklist , je dois créer un fichier contenant les ranges d'ip

sous quel format ?

séparé par des points virgules où ligne par ligne => 208.225.90.0/24; 212.225.90.0/24

 

* quelles sont vraiment les différences entre la table mangle qui mark les paquets et les drop et la table filter ?

 

ca impliquera pas plus de traffic de marquer les paquets ?

 

- pour l'instant je me content d'en log un par heure et de drop.

 

Désolé , vous savez bien que je débute.

Partager ce message


Lien à poster
Partager sur d’autres sites

ligne par ligne, ça fonctionne

 

la table mangle permet de modifier les en-têtes des paquets et de les regrouper en vue de QoS ou d'une gestion avancée des règles. Elle s'occupe de tous les hooks de filtrage (PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING) et est consultée en deuxième par netfilter (après conntrack).

 

=> http://www.greywolf.ht.st/iptables/node12.html

http://christian.caleca.free.fr/netfilter/et_le_reste.htm

 

Une fois toutes les opérations de suivi et de modification de paquets réalisées, entre en scène la table filter qui s'occupe de INPUT (pour la machine bastion), FORWARD (pour les paquets natés) et OUTPUT (en provenance de la machine bastion)

 

la table filter accepte plusieurs cibles:

un REJECT qui renvoie un TCP RST pour dire que le port est fermé

un DROP qui ne renvoie rien => port caché

 

la cible LOG est spéciale car le paquet continue son chemin dans les règles de filtrage jusqu'à une règle finale s'y appliquant ou la politique par défaut de la chaine et est envoyé à syslog.

Si tu logges tout ce que tu droppe, il y aura des accès disques fréquents et à terme des performances machines détériorées si elle sert à d'autres choses <= d'où l'idée de logger les paquets avec une limite temporelle. Evidemment, si tu ne logges rienet droppe tout, y'aura pas d'accès disque mais tu n'auras pas de trace. A toi de voir.

 

Je t'ai conseillé de marquer les paquets dans mangle afin d'établir une seule règle dans filter pour les envoyer dans ta chaine spéciale blacklist => Chaque paquet est évalué de la règle 1 jusqu'à la règle n jusqu'à une décision finale; le fait d'avoir mille lignes de règle de filtrage s'appliquant à chaque IP de ton fichier en début de la chaine FILTER implique que les paquets autorisés doivent les passer avant de rencontrer une règle les concernant, d'où peut-être un certain temps de latence observés dans tes connexions.

 

Le marquage de paquet te permet de résumer tout ça en une seule ligne dans filter <= ça n'encombre pas ta table de filtrage.

Modifié par Greywolf

Partager ce message


Lien à poster
Partager sur d’autres sites

merci Greywolf, ca devient plus clair expliqué comme ca , je vais donc refaire une liste ligne par ligne des ip

et essayer mangle comme décrit dans ton script qui a aussi l'avantage d'être petit.

 

ce format serait il compris dans blacklist =>

 

0.0.0.0-2.255.255.255 , 000 , Invalid IPv4

 

5.0.0.0-5.255.255.255 , 000 , Invalid IPv4

 

7.0.0.0-7.255.255.255 , 000 , Invalid IPv4

 

23.0.0.0-23.255.255.255 , 000 , Invalid IPv4

 

24.32.0.0-24.32.255.255 , 000 , Invalid IPv4

 

24.35.128.0-24.35.255.255 , 000 , Invalid IPv4

 

24.36.64.0-24.36.255.255 , 000 , Invalid IPv4

 

24.37.64.0-24.37.255.255 , 000 , Invalid IPv4

 

24.38.16.0-24.38.255.255 , 000 , Invalid IPv4

 

24.39.128.0-24.39.255.255 , 000 , Invalid IPv4

 

24.40.80.0-24.40.255.255 , 000 , Invalid IPv4

 

24.41.96.0-24.41.255.255 , 000 , Invalid IPv4

 

24.56.112.0-24.56.127.255 , 000 , Invalid IPv4

Modifié par Y@kuz@

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai essayé mangle et ca plante sur la syntaxe du script:

 

# Create special BLACKLST chain

/sbin/iptables -t filter -N BLACKLST

/sbin/iptables -t filter -F BLACKLST

 

# Create the logdrop chain to log & drop a packet

/sbin/iptables -t filter -N BLACKLST_LOGDROP

/sbin/iptables -t filter -F BLACKLST_LOGDROP

/sbin/iptables -t filter -A BLACKLST_LOGDROP -m limit --limit -j LOG --log-prefix "BLACKLST"

/sbin/iptables -t filter -A BLACKLST_LOGDROP -j DROP

 

# Jump to the special BLACKLST chain at the end of the INPUT chain (commented out)

#/sbin/iptables -t nat -A INPUT -j BLACKLST

 

for i in `cat /home/mon_user/blacklist`

{

# List of ip ranges to mark

/sbin/iptables -t mangle -I PREROUTING 1 -s $i -MARK --set-mark blacklst

}

 

#Ajout du filtrage dans INPUT

/sbin/iptables -t filter -I INPUT 1 -m mark --mark blacklst -j BLACKLST_LOGDROP

 

je le lance et ca me dit ==> iptables v1.2.7a: Unknown arg `--set-mark'

Try `iptables -h' or 'iptables --help' for more information.

iptables v1.2.7a: Bad MARK value `blacklst'

Try `iptables -h' or 'iptables --help' for more information.

 

* quand je fais un man iptables car iptables --help est pas du tout complet :

 

MARK

Ceci est utilisé pour activer la valeur de marquage netfilter associée

au paquet. Cela est valide uniquement avec la table mangle

 

--set-mark mark

 

mark

Ce module établi la correspondance du champ des marquages netfilter

associé é un paquet (celui ci peut étre positionné en utilisant la

cible MARK décrite ci dessous).

 

--mark valeur[/masque]

ètablit la correspondance avec la valeur de marquage de type

non-signé fournie (si un masque est spécifié, un ET logique est

effectué avec le masque avant la comparaison).

 

--------------------------------------------------------

 

tu vois ce qui va pas ?

Partager ce message


Lien à poster
Partager sur d’autres sites

/sbin/iptables -t mangle -I PREROUTING 1 -s $i -j MARK --set-mark blacklst

 

doit manquer le -j je pense. (MARK est une cible de la table mangle => -j MARK)

//mea culpa, c'est de ma faute j'avais pas vérifié mon script donné en page 1

 

pour le listing ci-dessus j'ai des doutes;

ce serait mieux en

xxx.yyy.www.zzz

xxx.yyy.www.zzz/mm

etc...

Modifié par Greywolf

Partager ce message


Lien à poster
Partager sur d’autres sites

pour la liste "blacklist"

 

j'ai mis ligne par ligne :

 

4.18.55.144/29

4.19.90.0/25

4.21.179.32/27

4.23.0.0/16

4.36.109.0/24

4.42.208.16/29

4.42.244.160/28

4.42.244.192/27

4.43.96.0/24

4.43.108.0/24

4.43.124.192/26

4.67.43.0/24

12.1.224.96/28

12.35.253.176/29

12.37.128.32/28

12.37.128.128/25

12.38.31.216/29

12.45.230.96/27

12.45.231.0/29

 

### etc ... ####

 

je vais essayer de corriger la syntaxe, merci encore Greywolf, t'as pas a t'excuser, c'est moi le boulet dans l'affaire

edit : la même erreur...

Modifié par Y@kuz@

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×
×
  • Créer...