Iptables

Miguel Oyarzo O. admin en aim.cl
Lun Abr 27 11:40:28 CLT 2009


Juan Andres Ramirez escribió:
> 2009/4/27 Miguel Oyarzo O. <admin en aim.cl>:
>> Juan Andres Ramirez escribió:
>>> Hola listeros:
>>>     Veamos algo mal tengo en el orden de las reglas iptables porque
>>> al tratar de bloquear una ip publica no pasa nada:
>>>
>>> ## ESTABLECEMOS POLITICA POR DEFECTO
>>> iptables -P INPUT ACCEPT
>>> iptables -P OUTPUT ACCEPT
>>> iptables -P FORWARD ACCEPT
>>>
>>> #DEJAMOS LIBRES LAS CONECCIONES LOCALES
>>> iptables -A INPUT -i lo -j ACCEPT
>>>
>>> #TENEMOS ACCESO A LA RED DESDE LA INTERFACE bond0
>>> iptables -A INPUT -s 192.168.100.0/24 -i bond0 -j ACCEPT
>>> #ACCESO A WEB
>>> iptables -A FORWARD -s 192.168.100.0/24 -i bond0 -p tcp --dport 80 -j
>>> ACCEPT
>>> # ACCESOS A HTTPS
>>> iptables -A FORWARD -s 192.168.100.0/24 -i bond0 -p tcp --dport 443 -j
>>> ACCEPT
>>>
>>> # Aceptamos que consulten los DNS
>>> iptables -A FORWARD -s 192.168.100.0/24 -i bond0 -p tcp --dport 53 -j
>>> ACCEPT
>>> iptables -A FORWARD -s 192.168.100.0/24 -i bond0 -p udp --dport 53 -j
>>> ACCEPT
>> Todas las lineas FORWARD ACCEPT hasta aqui son inutiles dado que tu politica
>> FORWARD es ACCEPT
>>
>>  > #CERRAMOS EL RESTO DE LOS PUERTOS
>>> iptables -A FORWARD -s 192.168.100.0/24 -i bond0 -j DROP
>> No deberia existir esta linea
>>
>>> Esto no esta funcionando...no bloquea la ip que le especifico,
>>>
>>> #Bloqueo a direccion ip cualquiera
>>> iptables -A FORWARD -s 200.29.182.140 -j REJECT
>> Deberias pensar en -d 200.29.182.140 REJECT mejor,
>> pero como antes estas autorizando toda la red para usar WEB (http, https y
>> dns), esta linea no tiene efecto alguno en esas puertas.
>>
>>
>>> Probe tambien con:
>>> iptables -A FORWARD -s 200.29.182.140 -p TCP --dport 80 -j REJECT
>> Esta malo, estas confundiendo el sentido de los paquetes.
>> -s quiere decir SOURCE (que venie de). Debes usar -d (con destino a)
>>
>>> Ahora si cambio la linea : iptables -A FORWARD -s 192.168.100.0/24 -i
>>> bond0 -p tcp --dport 80 -j ACCEPT  por REJECT, efectivamente bloquea
>>> la navegacion por web.
>>> Cualquier tips lo agradeceria.
>> Cierra tu politica forward y abre lo que requieras. Al final del script
>> debes poner una regla para los paquetes relativos, sino no funcionará al
>> cerrar la potica.
>>
>> Sugerencia:
>> Deberias reescribir el script respetando el orden de precedencias de
>> iptables. Tu ejemplo es ilogico y producira efectos inesperados.
>> (con la mitad de las lineas lograras lo que deseas)
>>
> 
> Ok, clarisimo, lo voy a reescribir otra vez, ahora bien tome otro
> manual, dice que la primera regla que aplico :
> iptables -A FORWARD -s 192.168.100.0/24 -i bond0 -p tcp --dport 80 -j ACCEPT
> 
> le da web a toda mi red interna, y omitiria otra regla para bloquear
> en este puerto,  entonces como lo hago para bloquear algunas
> direcciones web????, no quiero bloquear el puerto 80 completamente,
> asi que si aplico esa regla y luego debajo de esta anoto:


Piensa en precedencia.. es fundamental (el script se lee de arriba hacia 
abajo y ese orden es la precedencoa).
Por lo tanto cualquier caso perticular de bloqueo debe *antes* que ese 
FORWARD que muestras mas arriba,

En todo caso bloquer una sitio WEB usando la IP es malisima idea, puesto 
que muchas IPs sirven hosting virtuales que posiblemente no quieres 
bloquear-.

> iptables -A FORWARD -d 200.29.182.140  -p TCP --dport 80 -j REJECT
> 
> o si aplico:
> 
> iptables -A FORWARD -d 200.29.182.140 -j REJECT

Misma idea..... esta regla la agregas antes que tu linea ACCEPT y 
cualquiera de los 2 ejemploos bloqueará conexiones WEB a ese IP (la 
segunda es definitiva eso si, nada tcp, udp, icmp llegará hasta ese host).

> no va a funcionar porque la primera regla que anote fue aceptar
> conecciones al 80 a toda la red.

Si, ahora la estas razonando como corresponde -> Precedencia
Acabas de dar tu primer paso paso como programador de firewall, suerte!



> Gracias.
>> Saludos,
>>
>> =====================================
>> Miguel A. Oyarzo O.
>> Ingeniería en Redes y Comunicaciones
>> Linux User: # 483188 - counter.li.org
>> Austro Internet S.A. & INALAMBRICA S.A.
>> Teléfono: [+05661] 710030
>> Punta Arenas - Chile
>> =====================================


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