Documentos de Académico
Documentos de Profesional
Documentos de Cultura
IPTables-Shorewall MemoriaSDC PDF
IPTables-Shorewall MemoriaSDC PDF
Software de Comunicaciones
______________________________________________________________________________________
© Jdyb - Mayo 2013
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
Índice
1. Introducción! 4
2. Cortafuegos personal! 5
2.1. Estado inicial de IPTables! 5
4. Apartados opcionales! 53
4.1. Securizar servidor SSH contra ataques de fuerza bruta! 53
______________________________________________________________________________________
© Jdyb - Mayo 2013! 3
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
1. Introducción
! En esta práctica se va a tratar el manejo de net filter, llamado ahora IPTables. Es
un módulo incluido dentro de núcleo del sistema operativo. Esto implica que no vamos a
tener que instalarlo ni activarlo.
! No se tiene que activar porque ya viene activo por defecto pero hace el efecto de
no estar activo porque sus tablas de filtrado están todas ellas vacías por defecto y política
que llevan por defecto es ACCEPT.
Filtrado
Entrega
PREROUTING NO FORDWARD
local
SI SNAT
DNAT Manipulación
(Mangle)
Manipulación
POSTROUTING
(Mangle)
INPUT DNAT
Manipulación
(Mangle)
Manipulación
(Mangle) Filtrado
Filtrado OUTPUT
Procesado local
______________________________________________________________________________________
© Jdyb - Mayo 2013! 4
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
2. Cortafuegos personal
! En este apartado trataremos el primer escenario comentado anteriormente en el
cual usaremos IPTables como filtro de control para lo que entre o salga de nuestro equipo
local.
! Ahora comprobaremos el estado de IPTables, que veremos que tiene todas las
tablas de las cadenas de reglas vacías y con política por defecto ACCEPT que es como
se encuentra por defecto. Para visualizar el contenido de las tablas lo haremos con el
siguiente comando.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 5
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Mostraremos ahora las reglas de las tablas de NAT para todas las cadenas en las
que este presente y veremos que de nuevo no hay regla alguna. Fijándonos en el
diagrama de la introducción vemos que las tablas de NAT se encuentran en la cadena de
PREROUTING, POSTROUTING y OUTPUT.
! Finalmente mostramos las reglas de las tablas de manipulación o mangle, esta vez
la tabla estará presente en todas las cadenas de reglas. De nuevo no habrá reglas por
defecto y la política por defecto será ACCEPT.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 6
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Mostramos ahora el resultado de las reglas con los comandos de listado que vimos
anteriormente. Sigue sin haber reglas pero ahora la política por defecto en la tabla de
filtrado para las cadenas de OUTPUT e INPUT son de DROP.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 7
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
iptables
-‐t
filter
-‐A
(añadir)
OUTPUT
-‐p
(protocolo)
icmp
-‐d
(destino)
172.16.183.0/24
-‐j
ACCEPT
! Antes de aplicar las reglas veremos el efecto que se produce, la máquina no puede
hacer ping ni recibir ping de otra máquina.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 8
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Si se intenta ahora el ping se quedará parado porque podrá enviar pero no recibir
las respuestas.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 9
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Sin embargo comprobamos que no se pueden enviar pings a otra máquina que no
esté en la subred.
! Si se quiere que el tráfico web funcione habrá que habilitar una regla análoga en
sentido entrante que permita el tráfico TCP originado en el puerto 80.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 10
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Con esta regla pasará lo mismo que en anteriores ocasiones, no se deja salir el
tráfico con origen en el puerto 22 por lo que no podrá establecerse una conexión ssh
hacia la máquina.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 12
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 13
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! No hemos hablado anteriormente del orden de las reglas porque no era necesario,
eran todas las reglas de diferentes protocolos. Las reglas son evaluadas en orden, por lo
que si se ponen primero las más restrictivas no se conseguirá el efecto deseado.
! Con esta última regla se habilita el tráfico saliente TCP hacia la máquina anfitriona.
Pero veremos que la realidad es otra, no vamos a poder establecer una conexión SSH
desde la máquina anfitriona. Y eso es porque primero está la regla más restrictiva,
establecer una conexión SSH coincide con la primera regla y no se sigue evaluando. Por
tanto si se quiere que funcione se deben de aplicar primero las reglas más específicas.
! Probamos a establecer una conexión SSH desde otra máquina de la misma subred
y observaremos que no funciona, podrá aceptar la conexión porque tiene política
ACCEPT y la petición llegará pero no se podrá establecer porque la respuesta nunca
podrá salir.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 14
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Lo más adecuado para esto será aplicar reglas de NAT en la cadena de reglas
OUTPUT, que si nos fijamos en el diagrama será la que está en la salida del equipo local.
Y en ese momento cambiaremos la dirección de destino por la que nosotros deseemos.
Esta vez en las reglas si que tendremos que especificar la tabla de la regla puesto que no
va a ser la de filtrado sino la tabla de NAT.
iptables
-‐t
nat
-‐A
OUTPUT
-‐p
tcp
-‐-‐dport
80
-‐d
www.ceu.es
-‐j
DNAT
-‐-‐to-‐destination
173.194.34.216:80
______________________________________________________________________________________
© Jdyb - Mayo 2013! 15
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 16
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! NMap analiza las respuestas del objetivo ante patrones de ataque que envía, lo
que hace es enviar muchas peticiones de varios tipos, ya sean normales o mal formadas
(no empezando como una petición TCP normal que ha de empezar con SYN). Y ante el
patrón de respuesta a dichas peticiones puede saber el sistema operativo y otros datos en
base a una base de datos de patrones de respuesta.
! Con este ejercicio se pretendía que se mostrase como después de introducir una
regla con estado en IPTables se dejase de detectar el sistema operativo ya que se
rechazarían las peticiones TCP mal formadas, de manera que al no detectarse ni siquiera
sin filtro alguno, se puede decir que no se va a ver el resultado completo que se pretendía
______________________________________________________________________________________
© Jdyb - Mayo 2013! 17
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! IPTables clasifica los paquetes en varios estados posibles, para ello se basa en
analizar las conexiones TCP y también las conexiones producidas a la vez, por ejemplo
FTP tiene una conexión de control y otra de datos.
iptables -‐A INPUT -‐p tcp ! -‐-‐syn -‐m state -‐-‐state NEW -‐j DROP
______________________________________________________________________________________
© Jdyb - Mayo 2013! 18
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Lo primero borramos la tabla del ejercicio anterior y aplicamos la política DROP por
defecto en las cadenas de reglas INPUT y OUTPUT.
iptables
-‐A
INPUT
-‐p
icmp
-‐m
state
-‐-‐state
ESTABLISHED,RELATED
-‐j
ACCEPT
______________________________________________________________________________________
© Jdyb - Mayo 2013! 19
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Finalmente visto que funciona vamos a borrar las reglas y poner política por
defecto ACCEPT de una manera distinta a como lo hemos estado haciendo. En CentOS
se dispone de un script para realizar acciones con iptables como por ejemplo borrar las
reglas, exportarlas o restaurarlas.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 20
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Ahora si que podemos abrir una conexión SSH y veremos como las reglas se han
borrado y las políticas son ACCEPT.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 21
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! La primera de ellas que será la que normalmente hemos estado usando será la que
va a actuar como router. Lo primero que tendremos que hacer es añadir una segunda
interfaz física mediante las opciones de VMWare, la segunda interfaz que añadamos debe
de estar en modo Host-Only para que este una subred diferente.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 22
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 23
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! El siguiente paso será arrancar una segunda máquina virtual que se situe dentro de
la subred 172.16.183.0/24 que será nuestra red privada. Para ello esa máquina debe de
tener la configuración de red en modo NAT.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 24
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 25
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 26
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Ahora mismo debería poderse hacer un ping desde y hacia cada una de las
máquinas de la misma subred pero no podrá hacerse desde una máquina de una subred
hacia otra máquina de diferente subred ya que la máquina que actuará como router no
tiene habilitada la función de reenvío. Esta función deberá ser habilitada.
! Comprobamos ahora que podemos hacer ping con éxito en la red privada entre las
dos máquinas que hay en la misma que son la máquina virtual y la interfaz de la máquina
virtual que actuará como router.
! Realizaremos el mismo proceso dentro de la red pública comprobando que las dos
máquinas se puede hacer ping entre sí.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 27
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 28
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
Privada Pública
172.16.183.0/24 172.16.212.0/24
Router
VM Red Privada VM Red Pública
eth0: 172.16.183.100
eth0: 172.16.183.200 eth0: 172.16.212.131
eth1: 172.16.212.129
______________________________________________________________________________________
© Jdyb - Mayo 2013! 29
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 30
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! En nuestra distribución que es CentOS este mismo fichero existe, pero al reiniciar
el servicio de red no se habilita la variable de sistema correspondiente al reenvío de
paquetes /proc/sys/net/ipv4/ip_forward. Se puede visualizar el contenido de la variable
con un comando cat.
! La máquina de la red pública seguirá sin tener conexión con la red privada debido a
que no tiene puerta de enlace. De momento no la pondremos puesto que la manera
correcta de alcanzar este puesto será haciendo NAT, que como veremos se nos pedirá
próximamente en el enunciado.
! Por otra parte, aunque no configuremos este parámetro, cuando pasemos a los
siguientes apartado en los que se usa Shorewall veremos que funciona igualmente, pero
será porque en la configuración de shorewall hay un parámetro para ajustar esto, de
manera que cuando shorewall se active se activará el forwarding de paquetes. Aunque
después explicaremos los ficheros de configuración de shorewall, este parámetro lo
podemos encontrar en el fichero /etc/shorewall/shorewall.conf.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 31
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 32
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 33
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 34
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 35
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 36
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Ahora pasamos a aplicar las reglas con el script de shorewall. Observamos que ha
fallado y vamos al log del sistema para observar que es lo que ha ocurrido.
! Nos indica que el inicio de shorewall está deshabilitado y tenemos que habilitarlo
en el fichero de configuración general. Esta variable que se nos pide activar está puesta
como seguridad para evitar que shorewall sea activado accidentalmente antes de ser
configurado. Hay que tener en cuenta que un inicio accidental de shorewall en un sistema
administrado remotamente si las reglas no están configuradas correctamente te puede
dejar sin la conexión remota.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 37
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Se puede comprobar que la configuración que permite tráfico local hacia el servidor
del firewall se ha establecido correctamente porque no se ha perdido la conexión SSH
mediante la cual estamos administrando la máquina.
! Si que hay comunicación desde el interior de la red local hacia el exterior, haciendo
ping a la red pública.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 38
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 39
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 40
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
tráfico de la interfaz eth0 con tcpdump. Con el comando vamos a filtrar los que provengan
de la misma máquina para ver más clara la salida del comando.
! Observamos una petición Echo desde la dirección local a la dirección pública, tal
como habíamos hecho el ping.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 41
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Lo primero que se nos indica es que por defecto las salidas van a estar rechazadas
exceptuando una serie de servicios, por tanto lo primero que haremos será cambiar la
política por defecto a REJECT (más adecuado su uso en el interior ya que devuelve un
rechazo).
______________________________________________________________________________________
© Jdyb - Mayo 2013! 42
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Como digo, no este el uso normal del fichero de políticas, sino que se suele
denegar todo como indico a continuación y todas las comunicaciones que se quieran
permitir se indican mediante reglas en el fichero correspondiente. Al estilo de como se
hacía con las políticas de las tablas de iptables.
! Las peticiones que vengan de Internet al resto de las zonas de desprecian sin más,
mientras que las comunicaciones en el resto de las zonas de indica la denegación dando
información y evitando los timeout. De manera que es más elegante al comportarse de
manera diferente para tus usuarios que para el resto de Internet
! Observemos que ahora no es posible hacer un ping desde la red privada hacia el
exterior (después de haber reiniciado Shorewall). Se nos da un mensaje de error
proveniente del cortafuegos, y ello es debido a haber puesto como política por defecto
REJECT en vez de DROP, su hubiéramos puesto DROP no devolvería respuesta alguna,
simplemente tiraría los paquetes sin responder a ellos.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 43
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Una vez que la política ha sido cambiada nos dirigiremos al fichero de reglas en el
que especificaremos reglas específicas para los requisitos que el enunciado nos indicará.
El fichero que editaremos estará situado en el directorio /etc/shorewall/rules.
! Se nos pide que habilitemos la sida de una serie de servicios como por ejemplo
http, https, SMTP, etc... En el fichero de configuración vemos que se establece el origen y
destino y vemos que en el caso de los puerto podemos poner tanto el puerto específico
como el nombre del servicio.
! Añadimos también la posibilidad de usar ICMP hacia el exterior ya que es más fácil
hacer así las pruebas.
! Reiniciamos Shorewall para aplicar las reglas y pasamos a realizar las pruebas
pertinentes.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 44
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Para que esto sea posible las peticiones enviadas a la dirección pública de la red
privada (172.16.212.129) y al puerto 80 serán redirigidas a la dirección IP del servidor web
en el puerto 80. Esto recibe el nombre de port-forwarding.
! Lo primero que vamos a hacer para probar la configuración será eliminar la puerta
de enlace por defecto de la máquina pública ya que al haber implementado DNAT ya
puede alcanzar la red privada sin problemas (en las conexiones para las que haya DNAT).
______________________________________________________________________________________
© Jdyb - Mayo 2013! 46
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Se nos debe de mostrar una página web creada en un index.html sobre el servidor
web que se ha levantado en la máquina privada.
! Con esta prueba queda comprobado que la regla de DNAT está funcionando
correctamente.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 47
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! También se especifica que el acceso solo se permita desde una dirección de la red
pública concreta. Para realizar esta configuración acudiremos de nuevo al fichero de
reglas.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 48
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 49
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 50
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! En este caso se nos indica que todo el tráfico DNS saliente se debe redirigir a un
servidor DNS externo concreto. Por ejemplo, todas las peticiones DNS que se hagan
desde la red local van a ser redirigidas al DNS 8.8.8.8 que es el DNS de google.
! Esto lo haremos mediante DNAT, las peticiones que vengan desde la red privada al
puerto 53 UDP serán redirigidas a la IP 8.8.8.8 en el mismo puerto. No se incluye el
puerto 53 TCP porque las peticiones DNS no lo usan, solo se usa para sincronización
entre servidores DNS.
! Ahora con la nueva regla introducida después de reiniciar shorewall para aplicar las
reglas lo que veremos es que cualquier tráfico web originado en la subred privada nos
llevará a la dirección IP indicada.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 51
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 52
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
4. Apartados opcionales
4.1. Securizar servidor SSH contra ataques de fuerza bruta
! El enunciado nos pone bajo el supuesto de que tenemos un servidor ssh que está
siendo atacado con intento de obtener las contraseñas mediante fuerza bruta, para lo cual
se están registrando peticiones de acceso continuas al mismo.
! Para evitar esto se puede tratar de reducir el número de accesos por dirección IP.
Con el siguiente comando estaríamos reduciendo el número máximo de conexiones
paralelas al servidor por la dirección del cliente.
iptables
-‐A
INPUT
-‐p
tcp
-‐-‐syn
-‐-‐dport
22
-‐m
connlimit
-‐-‐connlimit-‐
above
3
-‐j
REJECT
iptables
-‐A
INPUT
-‐p
tcp
-‐-‐syn
-‐-‐dport
80
-‐m
connlimit
-‐-‐connlimit-‐
above
20
-‐-‐connlimit-‐mask
24
-‐j
DROP
iptables
-‐A
INPUT
-‐p
tcp
-‐-‐syn
-‐-‐dport
22
-‐m
state
-‐-‐state
NEW
-‐m
recent
-‐-‐set
iptables
-‐A
INPUT
-‐p
tcp
-‐-‐syn
-‐-‐dport
22
-‐m
state
-‐-‐state
NEW
-‐m
recent
-‐-‐update
-‐-‐seconds
60
-‐-‐hitcount
4
-‐j
DROP
______________________________________________________________________________________
© Jdyb - Mayo 2013! 53
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Hemos configurado los comandos de iptables que hemos indicado como se puede
mostrar en la siguiente captura.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 54
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
______________________________________________________________________________________
© Jdyb - Mayo 2013! 55
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
! Por otra parte la clase de tráfico 1:10 tiene un ratio de 100kbit, aunque puede usar
todo el ancho de banda de 1500kbit compartiéndolo con la clase 1:12.
! El tráfico UDP (protocolo 0x11 0xff de la cabecera IP) será puesto en la clase de
prioridad máxima 1:10, lo que será bueno para juegos en primera persona para asegurar
una latencia baja y que no se vea perjudicado por el tráfico de menor prioridad.
! Llegados a este punto se puede ver que se han creado dos canales de salida de
diferentes prioridades, sabiendo que el de mayor prioridad puede llegar a perjudicar al de
menor prioridad tal y como se desea. El problema es que tanto el tráfico de baja prioridad
como el de alta prioridad pueden ser perjudicados por flujos de gran ancho de banda,
causando que otros flujos de la misma prioridad se vean perjudicados por estos.
! Para poner solución al problema planteado se añaden dos colas SFQ (Stochastic
Fairness Queueing) a las clases de baja prioridad y alta prioridad para asegurar que los
flujos individuales de tráfico son identificados y cada uno de ellos cuenta con la misma
oportunidad de enviar sus datos de las respectivas clases. Esto debería evitar el problema
de inanición dentro de las mismas clases.
! SFQ es un algoritmo de la familia de Fair Queing, menos preciso que otros pero
por otra parte con menor necesidad de cálculo. Estas colas dividen por conversaciones o
flujos TCP, lo que hace que se cree un gran conjunto de colas FIFO, una por cada
conversación, dando la misma oportunidad a las conversaciones, lo que evita como se ha
comentado que se provoque inanición entre distintas conversaciones de la misma
prioridad.
______________________________________________________________________________________
© Jdyb - Mayo 2013! 56
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
modemif=eth4
tc qdisc add dev $modemif root handle 1: htb default 12
tc
class
add
dev
$modemif
parent
1:
classid
1:1
htb
rate
1500kbit
ceil
1500kbit
burst
10k
tc
class
add
dev
$modemif
parent
1:1
classid
1:10
htb
rate
700kbit
ceil
1500kbit
prio
1
burst
10k
tc
class
add
dev
$modemif
parent
1:1
classid
1:12
htb
rate
800kbit
ceil
800kbit
prio
2
tc
filter
add
dev
$modemif
protocol
ip
parent
1:0
prio
1
u32
match
ip
protocol
0x11
0xff
flowid
1:10
tc qdisc add dev $modemif parent 1:10 handle 20: sfq perturb 10
tc qdisc add dev $modemif parent 1:12 handle 30: sfq perturb 10
Configuración de IPTables
! En ese punto los paquetes pueden haber sido generados en la propia máquina
localmente o provenir de otra máquina y estar ahí para ser reenviados,
independientemente de que estén preparados para salir por la misma interfaz (eth4 en
este caso). Pasarán todos ellos por la cadena de mangle de esta etapa y será ahí donde
se clasifique el tráfico y se realicen otros ajustes.
! En las reglas de iptables que vamos a ver a continuación se puede ver que todo el
tráfico es ajustado con el flag de mínimo retardo "minimize-delay” (tráfico ssh interactivo
por ejemplo) en las clases de alta prioridad. También todo el tráfico HTTP, HTTPS, y DNS
TCP será clasificado como de alta prioridad. Recordando también que todo el tráfico UDP
será de alta prioridad, lo que incluirá todo el tráfico DNS UDP.
modemif=eth4
iptables
-‐t
mangle
-‐A
POSTROUTING
-‐o
$modemif
-‐p
tcp
-‐m
tos
-‐-‐tos
Minimize-‐Delay
-‐j
CLASSIFY
-‐-‐set-‐class
1:10
iptables
-‐t
mangle
-‐A
POSTROUTING
-‐o
$modemif
-‐p
tcp
-‐-‐dport
53
-‐j
CLASSIFY
-‐-‐set-‐class
1:10
______________________________________________________________________________________
© Jdyb - Mayo 2013! 57
!
Juan Díez- Yanguas Barber! Práctica 9
______________________________________________________________________________________
iptables
-‐t
mangle
-‐A
POSTROUTING
-‐o
$modemif
-‐p
tcp
-‐-‐dport
80
-‐j
CLASSIFY
-‐-‐set-‐class
1:10
iptables
-‐t
mangle
-‐A
POSTROUTING
-‐o
$modemif
-‐p
tcp
-‐-‐dport
443
-‐j
CLASSIFY
-‐-‐set-‐class
1:10
______________________________________________________________________________________
© Jdyb - Mayo 2013! 58
!