Vous pouvez également installer ipset
et vous pourrez changer la liste des adresses IP sans perturber votre iptables
règles :
ipset -N AllowedSources ipmap --network 10.50.10.0/24
for i in $LIST_OF_ALLOWED_SOURCES; do ipset -A AllowedSources $i; done
iptables -A INPUT -m set --match-set AllowedSources src -p tcp --dport 12345 -j ACCEPT
Maintenant, si vous avez besoin d'ajouter une autre source autorisée :
ipset -A AllowedSources a.b.c.d
Ou bien, vous devez supprimer un hôte des sources autorisées :
ipset -D AllowedSources e.f.g.h
Vous pouvez sauvegarder vos jeux :
ipset --save > /etc/ipset.conf
Que vous pouvez restaurer pendant le démarrage, avant vous mettez en œuvre votre iptables
(sinon, iptables se plaindra !) :
ipset --restore < /etc/ipset.conf
Vous pouvez même créer un ensemble d'IP qui correspondra à l'IP source. y le port de destination, par exemple :
ipset -N AllowedAccess ipporthash --network 10.50.0.0/16
# These hosts may access port 12345
for i in $LIST_OF_ALLOWED_TO_12345; do ipset -A AllowedAccess $i,12345; done
# These hosts may access port 23456
for i in $LIST_OF_ALLOWED_TO_23456; do ipset -A AllowedAccess $i,23456; done
# These hosts may access port 34567
for i in $LIST_OF_ALLOWED_TO_34567; do ipset -A AllowedAccess $i,34567; done
# Now that the IP set has been created, we can use it in iptables
iptables -A INPUT -m set --match-set AllowedAccess src,dst -j ACCEPT
# Note that we use "src,dst", meaning that we want to match source IP, but
# destination port
# Also note, if you need to match against a single port, the ipmap method
# will be slightly faster.
En savoir plus ipset
: http://ipset.netfilter.org/
Si vous utilisez Ubuntu vous ne pouvez pas installer le ipset
à partir de son répertoire. Utilisez mon astuce : http://pepoluan.posterous.com/powertip-howto-install-ipset-on-ubuntu