Reglas de iptables

Miguel Oyarzo admin en aim.cl
Sab Mayo 20 21:44:52 CLT 2006


At 16:32 20-05-2006, Germán Poó Caamaño wrote:
>On Sat, 2006-05-20 at 13:43 -0500, Valentín González E. wrote:
>>   En un linux router-firewall tengo varias reglas hechas para varias
>> máquinas:
>> 
>> -A INPUT -s 172.18.92.144 -p tcp -m tcp --dport 22 -j ACCEPT
>> -A INPUT -s 172.18.92.144 -p tcp -m tcp --dport 3128 -j ACCEPT
>> -A INPUT -s 172.18.92.165 -p tcp -m tcp --dport 3128 -j ACCEPT
>> -A INPUT -s 172.18.9.200 -p tcp -m tcp --dport 3128 -j ACCEPT
>> -A INPUT -s 172.18.9.201 -p tcp -m tcp --dport 3128 -j ACCEPT
>> -A INPUT -s 172.18.92.60 -p tcp -m tcp --dport 3128 -j ACCEPT
>> -A INPUT -s 172.18.92.16 -p tcp -m tcp --dport 3128 -j ACCEPT
>> -A INPUT -s 172.18.92.20 -i eth1 -j ACCEPT
>> -A INPUT -s 172.18.64.23 -i eth1 -j ACCEPT
>> -A INPUT -s 172.18.3.26 -i eth1 -j ACCEPT
>> 
>> 
>>   Mi pregunta es si estas reglas no se pueden resumir en menos líneas. 
>> Por ejemplo que todas las direcciones ip sean leídas desde un archivo de
>> texto (máquinas.txt por ejemplo)o algo por el estilo, y que al momento
>> de llamar el script sea algo como:
>> 
>> #iptables -A INPUT -s "maquinas.txt" ........,
>
>En bash:
>
>for i in $(cat maquinas.txt)
>do
>        iptables -A INPUT -s $i ...
>done
>
>> o que los puertos de destino (en este caso) se resuman algo así:
>> 
>> #iptables -A INPUT "maquinas.txt" -p tcp -m tcp --dport "puertos.txt" .....,
>
>for i in $(cat maquinas.txt)
>do
>        for j in $(cat puertos.txt)
>        do
>                iptables -A INPUT -s $i -p tcp ... --dport $j
>        done
>done
>
>Aunque podría ser mejor utilizar algún programa que te permita 
>manejar de mejor manera tus reglas, como fwbuilder u otro.
>Germán Poó-Caamaño


O en una sola linea de comando para un mismo puerto ;-)

cat maquinas.txt | awk ' { print "iptables -A INPUT -s " $0 " -p tcp -m tcp --dport 3128 -j ACCEPT" }' 


Saludos,
Miguel Oyarzo
Austro Internet S.A.
Punta Arenas







Más información sobre la lista de distribución Linux