Juan Andres Ramirez escribió:
2009/4/27 Miguel Oyarzo O. <ad...@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
=====================================

Responder a