lunes, 6 de mayo de 2013

Ejercicios de Iptables. 4c

c.- Estudiar las opciones del tipo “mangle” y, en concreto las relacionadas con el tipo de servicio, TOS. La orientación de esta extensión es la alteración de paquetes de acuerdo con el servicio a prestar, priorizando el trafico proveniente de distintas partes. Por ejemplo, para minimizar los tiempos de espera: Minimize Delay. Es usada con las cadenas PREROUTING y POSTROUTING. Tratar, por ejemplo, de probar el correspondiente comando de iptables para minimizar la demora en el servicio telnet
La tabla mangle se puede usar para modificar paquetes, básicamente los objetivos con los que se puede usar son para modificar
  • TOS ( Type Of Service) y darle prioridad a unos paquetes frente a otros (dependemos de que los enrutadores externos a nuestra organización reconozcan estas marcas, que no suele ser lo habitual).
  • TTL podemos modificar el ttl para asignarles uno nosotros, con esto podemos ser más invisibles frente a utilidades como traceroute.
  • Mark: se suele usar para marcar los paquetes con valores específicos, estas marcas las podemos emplear después para realizar enrutamientos por determinados interfaces (empleando por ejemplo iproute) dependiendo de la marca, también podemos limitar anchos de banda y crear sistemas de balanceo de cargas mediante colas, basándonos en dichas marcas.

En cuanto al tipo de servicio TOS, podemos buscar coincidencias y emprender acciones según el TOS, sería algo como:
-m tos --tos {valor} -j OBJETIVO
lo realmente importante es que, además, también podemos modificar nosotros los bits de TOS de los paquetes para priorizar determinados servicios, en este caso emplearemos:
-j TOS --set-tos {valor}
tanto en un caso como en otro, los posibles valores que puede tomar los bits TOS son:
  • Normal- service 0x00 (valor de los bits de TOS por defecto) 0
  • Minimize-Cost 0x02 (coste mínimo) 2
  • Maximize-Reliability 0x04 (máxima fiabilidad) 4
  • Maximize-Throughput 0x08 (máximo rendimiento) 8
  • Minimize-Delay 0x10 (demora mínima) o también 16
Por ejemplo para minimizar la demora en el servicio telnet haríamos simplemente (los modificamos antes de la decisión de enrutamiento, por ello empleamos mangle en prerouting) de cualquiera de los tres siguientes modos (emplear sólo uno):
iptables -t mangle -A PREROUTING -p tcp --dport telnet -j TOS --set-tos 0x10
iptables -t mangle -A PREROUTING -p tcp --dport telnet -j TOS --set-tos 16
iptables -t mangle -A PREROUTING -p tcp --dport telnet -j TOS --set-tos Minimize-Delay

Inicio con netcat una escucha en el puerto 23
netcat -l -p 23
y me conecto a la misma desde otro equipo
grabamos en el fichero de logs las entradas y salidas de paquetes destinadas al puerto 23 (recordar que al hacer la modificación en PREROUTING, los paquetes ya deberán tener la marca de demora mínima en ambos) con:
iptables -A INPUT -p tcp --dport 23 -j LOG
iptables -A OUTPUT -p tcp --dport 23 -j LOG
como vemos en las estadísticas detalladadas de iptables vemos que está marcando los paquetes
 
cuestión que podemos comprobar revisando el fichero /var/log/syslog, dónde veremos que todos los paquetes que tengan como puerto de destino 23 tendrán TOS=0x10:


<< Anterior                                                                                                                Siguiente >>