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