Mostrando entradas con la etiqueta mikrotik. Mostrar todas las entradas
Mostrando entradas con la etiqueta mikrotik. Mostrar todas las entradas

miércoles, 12 de septiembre de 2018

Mikrotik, queue tree basado en L7

En entradas anteriores compartí distintas formas de regular el tráfico a traves de queue simple y queue tree.
Ahora, experimentando con un nuevo router, el ccr 1009 (creedence) encontré este script para la versión 6 de ROS basado en Layer 7.

Como se puede observar, definir las reglas de layer 7 es a primera vista algo sencillo, sin embargo hay que comprobar luego que estas funcionen de acuerdo a nuestras necesidades.
Por el momento yo dejé el script tal como lo programó el autor y estoy monitoreando el tráfico observando la actividad en cada una de las ramas del queue tree.
Solo faltaría agregar una rama más que le dé baja prioridad al resto del tráfico desconocido.

El tráfico considerado es el siguiente:


VoIP
VPN
Tráfico de juegos (red xbox, red PS Wii, WoW, LoL, etc.)
Transmisión de video (netflix, youtube, etc.)
Navegación Http (conexiones de menos de 5 MB)
Protocolos de administración (ssh, telnet, etc.)
Servicios de administración (DNS, ICMP, etc.)
Todo lo que sobra se considera basura y lucha por lo que queda.



Agregamos dos clases nuevas de queue:
 /queue type
add kind=pfifo name=streaming-video-in pfifo-limit=500
add kind=pcq name=games-in-pcq pcq-classifier=dst-address \
    pcq-dst-address6-mask=64 pcq-rate=100k pcq-src-address6-mask=64 \
    pcq-total-limit=750000KiB
 creamos los filtros regex según nuestras necesidades:
/ip firewall layer7-protocol
add name=speedtest-servers regexp="^.*(get|GET).+speedtest.*\$"
add name=torrent-wwws regexp="^.*(get|GET).+(torrent|thepiratebay|isohunt|ente\
    rtane|demonoid|btjunkie|mininova|flixflux|vertor|h33t|zoozle|bitnova|bitso\
    up|meganova|fulldls|btbot|fenopy|gpirate|commonbits).*\$"
add name=torrent-dns regexp="^.+(torrent|thepiratebay|isohunt|entertane|demono\
    id|btjunkie|mininova|flixflux|vertor|h33t|zoozle|bitnova|bitsoup|meganova|\
    fulldls|btbot|fenopy|gpirate|commonbits).*\$"
add name=netflix regexp="^.*(get|GET).+(netflix).*\$"
add name=mp4 regexp="^.*(get|GET).+\\.mp4.*\$"
add name=swf regexp="^.*(get|GET).+\\.swf.*\$"
add name=flv regexp="^.*(get|GET).+\\.flv.*\$"
add name=video regexp="^.*(get|GET).+(\\.flv|\\.mp4|netflix|\\.swf).*\$"
Creamos las listas de direcciones de la salida a Internet y la red interna:
 /ip firewall address-list
add address=192.168.0.0/16 list=internal-nets
add address=138.121.228.0/24 list=external-nets
add address=192.168.254.90 comment="cliente 1" list=customer-servers
 creamos las reglas del firewall para marcar el tráfico conocido:
/ip firewall mangle
add action=mark-packet chain=prerouting comment=\
    "internal-traffic packet mark" dst-address-list=internal-nets \
    new-packet-mark=internal-traffic passthrough=no src-address-list=\
    internal-nets
add action=mark-packet chain=prerouting comment=\
    "customer-servers-out packet mark" new-packet-mark=customer-servers-out \
    passthrough=no src-address-list=customer-servers
add action=mark-packet chain=prerouting comment=\
    "customer-servers-in packet mark" dst-address-list=customer-servers \
    new-packet-mark=customer-servers-in passthrough=no
add action=mark-packet chain=prerouting comment="admin-in packet mark DNS" \
    in-interface=!ISP new-packet-mark=admin-in passthrough=no protocol=udp \
    src-port=53
add action=mark-packet chain=prerouting comment="admin-in packet mark snmp" \
    dst-port=161 in-interface=ISP new-packet-mark=admin-in passthrough=no \
    protocol=udp
add action=mark-connection chain=prerouting comment=\
    "Remote Protocols admin connection mark" new-connection-mark=admin port=\
    20,21,22,23,3389,8291 protocol=tcp
add action=mark-connection chain=prerouting comment=\
    "icmp connection mark as admin" new-connection-mark=admin protocol=icmp \
    src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="admin-in packet mark" \
    connection-mark=admin in-interface=ISP new-packet-mark=admin-in \
    passthrough=no
add action=mark-packet chain=prerouting comment="admin-out packet mark" \
    connection-mark=admin new-packet-mark=admin-out passthrough=no
add action=mark-connection chain=prerouting comment=\
    "streaming video connection mark" dst-port=80 layer7-protocol=video \
    new-connection-mark=streaming-video protocol=tcp src-address-list=\
    internal-nets
add action=mark-packet chain=prerouting comment=\
    "streaming video in packet mark" connection-mark=streaming-video \
    in-interface=ISP new-packet-mark=streaming-video-in passthrough=no
add action=mark-packet chain=prerouting comment=\
    "streaming video out packet mark" connection-mark=streaming-video \
    new-packet-mark=streaming-video-out passthrough=no
add action=mark-connection chain=prerouting comment=\
    "http traffic connection mark" dst-port=80,443 new-connection-mark=http \
    protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "http traffic connection mark" connection-bytes=5000000-4294967295 \
    dst-port=80,443 new-connection-mark=http-download protocol=tcp \
    src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="http in packet mark" \
    connection-mark=http in-interface=ISP new-packet-mark=http-in \
    passthrough=no
add action=mark-packet chain=prerouting comment="http out packet mark" \
    connection-mark=http new-packet-mark=http-out passthrough=no
add action=mark-connection chain=prerouting comment=\
    "wow connetion mark as gaming" dst-port=\
    1119,3724,6112-6114,4000,6881-6999 new-connection-mark=games protocol=tcp \
    src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "eve online connetion mark as gaming" dst-address=87.237.38.200 \
    new-connection-mark=games src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "starcraft 2 connetion mark as gaming" dst-port=1119 new-connection-mark=\
    games protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "heros of newerth connetion mark as gaming" dst-port=11031,11235-11335 \
    new-connection-mark=games protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "steam connetion mark as gaming" dst-port=27014-27050 \
    new-connection-mark=games protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "xbox live connetion mark as gaming" dst-port=3074 new-connection-mark=\
    games protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "ps3 online connetion mark as gaming" dst-port=5223 new-connection-mark=\
    games protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "wii online connetion mark as gaming" dst-port=28910,29900,29901,29920 \
    new-connection-mark=games protocol=tcp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment=\
    "games packet mark forever-saken-game" dst-address-list=external-nets \
    new-packet-mark=games-in passthrough=no src-address-list=\
    forever-saken-game
add action=mark-packet chain=prerouting comment="games packet mark wow" \
    dst-address-list=external-nets new-packet-mark=games-in passthrough=no \
    protocol=udp src-port=53,3724
add action=mark-packet chain=prerouting comment=\
    "games packet mark starcraft2" dst-address-list=external-nets \
    new-packet-mark=games-in passthrough=no protocol=udp src-port=1119,6113
add action=mark-packet chain=prerouting comment="games packet mark HoN" \
    dst-address-list=external-nets new-packet-mark=games-in passthrough=no \
    protocol=udp src-port=11031,11235-11335
add action=mark-packet chain=prerouting comment="games packet mark steam in" \
    dst-address-list=external-nets new-packet-mark=games-in passthrough=no \
    port=4380,28960,27000-27030 protocol=udp
add action=mark-packet chain=prerouting comment="games packet mark steam out" \
    dst-port=53,1500,3005,3101,3478,4379-4380,4380,28960,27000-27030,28960 \
    new-packet-mark=games-out passthrough=no protocol=udp src-address-list=\
    internal-nets
add action=mark-packet chain=prerouting comment="games packet mark xbox live" \
    dst-address-list=external-nets new-packet-mark=games-in passthrough=no \
    protocol=udp src-port=88,3074,3544,4500
add action=mark-packet chain=prerouting comment=\
    "games packet mark ps3 online" dst-address-list=external-nets \
    new-packet-mark=games-in passthrough=no protocol=udp src-port=\
    3478,3479,3658
add action=mark-packet chain=prerouting comment="games packet mark in" \
    connection-mark=games dst-address-list=external-nets new-packet-mark=\
    games-in passthrough=no
add action=mark-packet chain=prerouting comment="games packet mark out" \
    connection-mark=games new-packet-mark=games-out passthrough=no
add action=mark-packet chain=prerouting comment=\
    "voip-in packet mark teamspeak" dst-address-list=external-nets \
    new-packet-mark=voip-in passthrough=no protocol=udp src-port=9987
add action=mark-packet chain=prerouting comment=\
    "voip-out packet mark teamspeak" dst-port=9987 new-packet-mark=voip-out \
    passthrough=no protocol=udp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment=\
    "voip-out packet mark teamspeak" dst-address-list=external-nets \
    new-packet-mark=voip-in passthrough=no protocol=udp src-port=9987
add action=mark-packet chain=prerouting comment=\
    "voip-in packet mark ventrilo" dst-address-list=external-nets \
    new-packet-mark=voip-in passthrough=no protocol=udp src-port=3784
add action=mark-packet chain=prerouting comment=\
    "voip-out packet mark ventrilo" dst-port=3784 new-packet-mark=voip-out \
    passthrough=no protocol=udp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment=\
    "voip-in packet mark ventrilo" dst-address-list=external-nets \
    new-packet-mark=voip-in passthrough=no protocol=tcp src-port=3784
add action=mark-packet chain=prerouting comment=\
    "voip-out packet mark ventrilo" dst-port=3784 new-packet-mark=voip-out \
    passthrough=no protocol=tcp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="voip-in packet mark SIP" \
    dst-address-list=internal-nets new-packet-mark=voip-in passthrough=no \
    port=5060 protocol=tcp
add action=mark-packet chain=prerouting comment="voip-out packet mark SIP" \
    new-packet-mark=voip-out passthrough=no port=5060 protocol=tcp \
    src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="voip-in packet mark udp SIP" \
    dst-address-list=internal-nets new-packet-mark=voip-in passthrough=no \
    port=5004,5060 protocol=udp
add action=mark-packet chain=prerouting comment=\
    "voip-out packet mark udp SIP" new-packet-mark=voip-out passthrough=no \
    port=5004,5060 protocol=udp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="voip-in packet mark RTP" \
    dst-address-list=internal-nets new-packet-mark=voip-in packet-size=\
    100-400 passthrough=no port=16348-32768 protocol=udp
add action=mark-packet chain=prerouting comment="voip-out packet mark RTP" \
    new-packet-mark=voip-in packet-size=100-400 passthrough=no port=\
    16348-32768 protocol=udp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="vpn-in packet mark GRE" \
    in-interface=ISP new-packet-mark=vpn-in passthrough=no protocol=gre
add action=mark-packet chain=prerouting comment="vpn-out packet mark GRE" \
    new-packet-mark=vpn-out passthrough=no protocol=gre
add action=mark-packet chain=prerouting comment="vpn-in packet mark ESP" \
    in-interface=ISP new-packet-mark=vpn-in passthrough=no protocol=ipsec-esp
add action=mark-packet chain=prerouting comment="vpn-out packet mark ESP" \
    new-packet-mark=vpn-out passthrough=no protocol=ipsec-esp
add action=mark-packet chain=prerouting comment=\
    "vpn-in packet mark VPN UDP ports" in-interface=ISP new-packet-mark=\
    vpn-in passthrough=no protocol=udp src-port=500,1701,4500
add action=mark-packet chain=prerouting comment=\
    "vpn-out packet mark VPN UDP ports" new-packet-mark=vpn-out passthrough=\
    no protocol=udp src-port=500,1701,4500
add action=mark-packet chain=prerouting comment="vpn-in packet mark PPTP" \
    in-interface=ISP new-packet-mark=vpn-in passthrough=no protocol=tcp \
    src-port=1723
add action=mark-packet chain=prerouting comment="vpn-out packet mark PPTP" \
    new-packet-mark=vpn-out passthrough=no protocol=tcp src-port=1723
add action=mark-packet chain=prerouting comment="all in" in-interface=ISP \
    new-packet-mark=in passthrough=no
add action=mark-packet chain=prerouting comment="all out" new-packet-mark=out \
    passthrough=no
 Finalmente creamos el queue tree:
/queue tree
add max-limit=10M name=in parent=global
add max-limit=10M name=out parent=global
add limit-at=3M max-limit=10M name=http-in packet-mark=http-in parent=in \
    priority=4 queue=default
add limit-at=4M max-limit=10M name=streaming-In packet-mark=\
    streaming-video-in parent=in priority=3 queue=streaming-video-in
add limit-at=500k max-limit=10M name=gaming-in packet-mark=games-in parent=in \
    priority=2 queue=games-in-pcq
add max-limit=10M name=download-in packet-mark=in parent=in queue=default
add max-limit=10M name=upload-out packet-mark=out parent=out queue=default
add limit-at=500k max-limit=10M name=gaming-out packet-mark=games-out parent=\
    out priority=2 queue=default
add limit-at=3M max-limit=10M name=http-out packet-mark=http-out parent=out \
    priority=4 queue=default
add limit-at=4M max-limit=10M name=streaming-Out packet-mark=\
    streaming-video-out parent=out priority=3 queue=default
add limit-at=1M max-limit=10M name=Clientes-In packet-mark=\
    customer-servers-in parent=in priority=1 queue=default
add limit-at=1M max-limit=10M name=Clientes-Out packet-mark=\
    customer-servers-out parent=out priority=1 queue=default
add limit-at=500k max-limit=10M name=voip-in packet-mark=voip-in parent=in \
    priority=1 queue=default
add limit-at=500k max-limit=10M name=vpn-in packet-mark=vpn-in parent=in \
    priority=2 queue=default
add limit-at=500k max-limit=10M name=voip-out packet-mark=voip-out parent=out \
    priority=1 queue=default
add limit-at=500k max-limit=10M name=vpn-out packet-mark=vpn-out parent=out \
    priority=2 queue=default
add limit-at=500k max-limit=10M name=admin-in packet-mark=admin-in parent=in \
    priority=1 queue=default
add limit-at=500k max-limit=10M name=admin-out packet-mark=admin-out parent=\
    out priority=1 queue=default

Aqui se puede observar un exceso en el trafico marcado como descargas:

 alarma en el tráfico http:

Tráfico total:

Fuente: http://gregsowell.com/?p=4665

jueves, 7 de abril de 2016

Mikrotik Address list Limitar ancho de banda por archivos

Mikrotik dispone de la facilidad de crear listas de direcciones para manejar pool de direcciones IP.

Vamos a mejorar el script creado en esta entrada: http://jaskolowski.com.ar/2012/09/mikrotik-limitar-ancho-de-banda-por.html
generamos una nueva lista para evitar que los servidores de email caigan en la clase de bajo ancho de banda.
Para ello creamos la lista download y la lista Emails

# apr/06/2016 12:58:21 by RouterOS 5.20
# software id = W5EY-LHT9
#
/ip firewall filter
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.mpeg disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.mpg disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.dat disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.exe disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.msi disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.gz disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.bin disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.mp3 disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.zip disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.swf disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.deb disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24 \
    src-address-list=download
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.iso disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.avi disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.rm disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.bz2 disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.z disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.dropbox disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.psf disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=.vpx disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=15m chain=forward content=sphoto disabled=no \
    dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24
add action=add-src-to-address-list address-list=Emails address-list-timeout=\
    0s chain=forward comment="Email :: mail.google.com" disabled=no \
    src-address=172.217.28.37
add action=add-src-to-address-list address-list=Emails address-list-timeout=\
    0s chain=forward comment="Email :: hotmail.com" disabled=no src-address=\
    156.56.172.28
add action=add-src-to-address-list address-list=Emails address-list-timeout=\
    0s chain=forward comment="Email :: hotmail.com" disabled=no src-address=\
    65.55.77.28
add action=add-src-to-address-list address-list=Emails address-list-timeout=\
    0s chain=forward comment="Email :: hotmail.com" disabled=no src-address=\
    65.55.85.12
add action=add-src-to-address-list address-list=Emails address-list-timeout=\
    0s chain=forward comment="Email :: hotmail.com" disabled=no src-address=\
    157.55.152.112
add action=add-src-to-address-list address-list=Emails address-list-timeout=\
    0s chain=forward comment="Email :: live.com" disabled=no src-address=\
    65.55.206.154
add action=add-src-to-address-list address-list=Emails address-list-timeout=\
    0s chain=forward comment="Email :: mail.google.com" disabled=no \
    src-address=172.217.28.5
add action=add-src-to-address-list address-list=Emails address-list-timeout=\
    0s chain=forward comment="Email :: crub.uncoma.edu.ar" disabled=no \
    src-address=170.210.81.23
add action=add-src-to-address-list address-list=Emails address-list-timeout=\
    0s chain=forward comment="Email :: uncoma.edu.ar" disabled=no \
    src-address=170.210.81.106

 Creamos una entrada en nuestro queue tree

# apr/07/2016 11:01:42 by RouterOS 5.20
# software id = W5EY-LHT9
#
/queue tree
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=download-files packet-mark=download-packet parent=\
    3QoS_down_Web priority=8 queue=default



jueves, 16 de octubre de 2014

Mikrotik - Filtros de protección

A continuación dejo una liste de filtro para el firewall de protección contra ataques conocidos

/ip firewall filter

add action=drop chain=input comment="FIltra ICMP Redirect" disabled=no \
    icmp-options=5:0-255 protocol=icmp
add action=drop chain=input comment="Bloquear Ataques FTP" disabled=no \
    dst-port=21 protocol=tcp src-address-list=ftp_blacklist
add action=accept chain=output content="530 Login incorrect" disabled=no \
    dst-limit=1/1m,9,dst-address/1m protocol=tcp
add action=add-dst-to-address-list address-list=ftp_blacklist \
    address-list-timeout=3h chain=output content="530 Login incorrect" \
    disabled=no protocol=tcp
add action=drop chain=input comment="Proteccion VSC contra ataques via SSH" \
    disabled=no dst-port=22 protocol=tcp src-address-list=ssh_blacklist
add action=add-src-to-address-list address-list=ssh_blacklist \
    address-list-timeout=1w3d chain=input connection-state=new disabled=no \
    dst-port=22 protocol=tcp src-address-list=ssh_stage3
add action=add-src-to-address-list address-list=ssh_stage3 \
    address-list-timeout=1m chain=input connection-state=new disabled=no \
    dst-port=22 protocol=tcp src-address-list=ssh_stage2
add action=add-src-to-address-list address-list=ssh_stage2 \
    address-list-timeout=1m chain=input connection-state=new disabled=no \
    dst-port=22 protocol=tcp src-address-list=ssh_stage1
add action=add-src-to-address-list address-list=ssh_stage1 \
    address-list-timeout=1m chain=input connection-state=new disabled=no \
    dst-port=22 protocol=tcp
add action=add-src-to-address-list address-list="port scanners" \
    address-list-timeout=2w chain=input comment=\
    "Lista de Escaners de Puertos" disabled=no protocol=tcp psd=21,3s,3,1
add action=add-src-to-address-list address-list="port scanners" \
    address-list-timeout=2w chain=input comment="NMAP FIN Stealth scan" \
    disabled=no protocol=tcp tcp-flags=fin,!syn,!rst,!psh,!ack,!urg
add action=add-src-to-address-list address-list="port scanners" \
    address-list-timeout=2w chain=input comment="SYN/FIN scan" disabled=no \
    protocol=tcp tcp-flags=fin,syn
add action=add-src-to-address-list address-list="port scanners" \
    address-list-timeout=2w chain=input comment="SYN/RST scan" disabled=no \
    protocol=tcp tcp-flags=syn,rst
add action=add-src-to-address-list address-list="port scanners" \
    address-list-timeout=2w chain=input comment="FIN/PSH/URG scan" disabled=\
    no protocol=tcp tcp-flags=fin,psh,urg,!syn,!rst,!ack
add action=add-src-to-address-list address-list="port scanners" \
    address-list-timeout=2w chain=input comment="ALL/ALL scan" disabled=no \
    protocol=tcp tcp-flags=fin,syn,rst,psh,ack,urg
add action=add-src-to-address-list address-list="port scanners" \
    address-list-timeout=2w chain=input comment="NMAP NULL scan" disabled=no \
    protocol=tcp tcp-flags=!fin,!syn,!rst,!psh,!ack,!urg
add action=drop chain=input comment="Drop Escaners de Red" disabled=no \
    src-address-list="port scanners"

Fuente:
http://wiki.mikrotik.com/wiki/Bruteforce_login_prevention

sábado, 16 de febrero de 2013

Mikrotik - Balanceo de carga a dos conexiones WAN con QoS Queue Tree


Mikrotik en un sistema operativo de router que puede ser instalado en una PC o comprar directamente un routerboad con el ROS instalado. El software esta en permanente actualización por lo que a partir de la versión 3.2 realizar un balanceo de carga entre dos o más conexiones a internet es mas sencillo con la opción PC
PCC (Per Connection Classifier) es el método por el cual se divide en porcentajes las conexiones de los usuarios al router asignando el mismo a las distintas conexiones wan disponibles. Asi, al tener dos conexiones a internet irá el 50% a cada una.
en la siguiente guía vamos a balancear dos conexiones de 2MB y 6Mb respectivamente por lo que para que el equilibrio sea más equitativo a la de mayor ancho de banda le asignaremos un 66% de las conexiones y a la otra el restante 33%.
Para el efecto consideramos que el router esta en producción por lo que en esta guía no se desarrolla la configuración inicial.

Balancear las conexiones de internet disponibles consta de cuatro procedimientos:
Configurar los gateway
Marcar el trafico
Asignar porcentajes a las conexiones (PCC)
Enrutar las conexiones

ingresamos nuestros gateway:
/ip route
add gateway=pppoe-out1 distance=1
add gateway=192.168.1.1 check-gateway=ping distance=2

Marcamos el tráfico para que todo lo que entra por una WAN salga por esa misma WAN:
/ip firewall mangle
add chain=prerouting in-interface=pppoe-out1 connection-state=new new-connection-mark=pppoe-out1_conn action=mark-connection passthrough=yes
add chain=prerouting in-interface=eth1-Arnet connection-state=new new-connection-mark=eth1_conn action=mark-connection passthrough=yes
add chain=output connection-mark=pppoe-out1_conn new-routing-mark=to_pppoe-out1 action=mark-routing passthrough=yes
add chain=output connection-mark=eth1_conn new-routing-mark=to_eth1-Arnet action=mark-routing passthrough=yes
Configuramos PCC, como dijimos 2/3 para una y el resto para la otra:
primero marcamos las conexiones:
/ip firewall mangle
add chain=prerouting in-interface=eth3-LAN connection-state=new dst-address-type=!local per-connection-classifier=both-addresses:3/0 action=mark-connection new-connection-mark=pppoe-out1_conn passthrough=yes
add chain=prerouting in-interface=eth3-LAN connection-state=new dst-address-type=!local per-connection-classifier=both-addresses:3/1 action=mark-connection new-connection-mark=eth1_conn passthrough=yes
add chain=prerouting in-interface=eth3-LAN connection-state=new dst-address-type=!local per-connection-classifier=both-addresses:3/2 action=mark-connection new-connection-mark=eth1_conn passthrough=yes
Luego marcamos las rutas:
/ip firewall mangle
add chain=prerouting in-interface=eth3-LAN connection-mark=pppoe-out1_conn action=mark-routing new-routing-mark=to_pppoe-out1 passthrough=yes
add chain=prerouting in-interface=eth3-LAN connection-mark=eth1_conn action=mark-routing new-routing-mark=to_eth1-Arnet passthrough=yes

Finalmente utilizamos esas marcas de ruta para enviarlas a cada conexion:
/ip route
add gateway=pppoe-out1 routing-mark=to_pppoe-out1
add gateway=192.168.1.1 routing-mark=to_eth1-Arnet check-gateway=ping

Observamos las marcas de conexiones y rutas en el mangle del firewall y el balanceo que se produce en connections:


Finalmente vamos a diseñar un nuevo queue tree para que actue con nuestro balanceo de carga:
marcamos los paquetes:
A diferencia de los QoS que comentamos en otros post, aqui solo marcaremos los paquetes, sin considerar las conexiones
/ip firewall mangle
add action=mark-packet chain=prerouting comment="Lista de Archivos" disabled=\
no in-interface=!eth3-LAN new-packet-mark=download-packet passthrough=no \
protocol=tcp src-address-list=download
add action=mark-packet chain=prerouting comment="ICMP (ping)" disabled=no \
new-packet-mark=interactivo passthrough=no protocol=icmp
add action=mark-packet chain=prerouting comment=DNS disabled=no \
new-packet-mark=interactivo passthrough=no protocol=tcp src-port=53
add action=mark-packet chain=postrouting disabled=no dst-port=53 \
new-packet-mark=dns_out passthrough=no protocol=tcp
add action=mark-packet chain=prerouting disabled=no new-packet-mark=\
interactivo passthrough=no protocol=udp src-port=53
add action=mark-packet chain=postrouting disabled=no dst-port=53 \
new-packet-mark=dns_out_udp passthrough=no protocol=udp
add action=mark-packet chain=prerouting comment="http Conexion" \
connection-bytes=0-500000 disabled=no new-packet-mark=http_in \
passthrough=no protocol=tcp src-port=80
add action=mark-packet chain=postrouting connection-bytes=0-500000 disabled=\
no dst-port=80 new-packet-mark=http_out passthrough=no protocol=tcp
add action=mark-packet chain=prerouting comment="http Descargas" \
connection-bytes=500000-2000000 disabled=no new-packet-mark=http_dwn \
passthrough=no protocol=tcp src-port=80
add action=mark-packet chain=prerouting comment="https conexion" \
connection-bytes=0-500000 disabled=no new-packet-mark=https_in \
passthrough=no protocol=tcp src-port=443
add action=mark-packet chain=postrouting connection-bytes=0-500000 disabled=\
no dst-port=443 new-packet-mark=https_out passthrough=no protocol=tcp
add action=mark-packet chain=prerouting comment="https Descargas" \
connection-bytes=500000-2000000 disabled=no new-packet-mark=https_dwn \
passthrough=no protocol=tcp src-port=443
add action=mark-packet chain=prerouting comment="Otras conexiones" disabled=\
no new-packet-mark=Otras_in passthrough=no
add action=mark-packet chain=postrouting disabled=no new-packet-mark=\
Otras_out passthrough=no
add action=mark-packet chain=prerouting comment="SIP and RTP" disabled=no \
dscp=46 new-packet-mark=interactivo passthrough=no
add action=mark-packet chain=prerouting comment="SIP and RTP control" \
disabled=no dscp=26 new-packet-mark=interactivo passthrough=no
add action=mark-packet chain=prerouting comment=ospf disabled=no dscp=48 \
new-packet-mark=interactivo passthrough=no protocol=ospf

Finalmente configuramos el Queue Tree:
con un parent max limit de 80% en Download_all y Upload_all
/queue tree
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=1768k name=Download-All packet-mark="" parent=global-in \
priority=1
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=400k name=Upload-All packet-mark="" parent=global-out priority=\
1
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=yes limit-at=0 \
max-limit=0 name=Descargas packet-mark=download-packet parent=global-in \
priority=8 queue=PCQ_download
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=descargas packet-mark=download-packet parent=\
Download-All priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=www-descargas packet-mark=http_dwn parent=Download-All \
priority=6 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=www-conexion packet-mark=http_in parent=Download-All \
priority=4 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=https-conexion packet-mark=https_in parent=Download-All \
priority=3 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=https-descargas packet-mark=https_dwn parent=\
Download-All priority=6 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=otras packet-mark=Otras_in parent=Download-All priority=\
7 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name="icmp (ping) Up" packet-mark=icmp parent=Upload-All \
priority=1 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=dns-Up packet-mark=dns_out parent=Upload-All priority=2 \
queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=dns_udp-Up packet-mark=dns_out_udp parent=Upload-All \
priority=2 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=www-conexion-Up packet-mark=http_out parent=Upload-All \
priority=4 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=https-Up packet-mark=https_out parent=Upload-All \
priority=4 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=yes limit-at=0 \
max-limit=0 name=otras-up packet-mark=Otras_out parent=Upload-All \
priority=7 queue=PCQ_upload
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=Interactivos packet-mark=interactivo parent=Download-All \
priority=1 queue=default

Vemos cómo quedaron el mangle del firewall y el queue tree:


Fuentes:
http://forum.mikrotik.com/

viernes, 8 de febrero de 2013

ThunderCache 3.1.2 en CentOS 6.3



ThunderCache es un proxy cache para contenidos dinámicos de Internet que trabaja de parent para squid. Los desarrolladores del software sugieren instalarlo en distribuciones debian o ubuntu, por lo que esta guía les será de utilidad a aquellos que trabajen con CentOS o derivados de Red Hat.

Para el efecto asumiremos que ya esta en producción el servidor centos con squid 3.1
actualizamos el sistema
yum update

instalamos las librerías de desarrollo necesarias:
yum install -y libcurl4-gnutls-devel libmysqlclient-devel libmysqlclient15-devel libmysqlclient16-devel
Instalaremos la versión 3.1 del thunder para luego actualizar a 3.1.2 con el script que creó JOEMG, siendo esta una versión modificada del proxy con nuevos plugins y las herramientas para diseñar los propios también.
Como ya dije, el script esta programado para distribuciones debian alike asi que extraemos lo relevante para el CentOS.
Creamos un directorio de trabajo:
mkdir /var/tmp/thunder312
cd /var/tmp/thunder312

descargamos esta serie de archivos:
wget http://joemg.host56.com/tc31/thunder31.tar.gz
wget http://www.joemg.host56.com/tc312/x32/thunder.tar.gz
wget http://www.joemg.host56.com/tc31/libmysqlclient.so.15
wget http://www.joemg.host56.com/tc31/libmysqlclient.so.15.0.0
wget http://www.joemg.host56.com/clean/32bits/clean.zip
wget http://www.joemg.host56.com/tc31/killcpumax.sh
wget http://www.joemg.host56.com/tc31/thunderotate.sh
wget http://www.joemg.host56.com/tc31/pluginmaker.zip
wget http://joemg.host56.com/plugins32/plugins.zip
wget http://joemg.host56.com/tc31/thunder.sql
wget http://joemg.host56.com/tr/thunder.zip
wget http://joemg.host56.com/tr/thunderp.sql
wget http://joemg.host56.com/tc31/upload.cgi
instalamos la versión 3.1 de thunder:
tar -xzvf /tmp/thunder31.tar.gz -C /
Creamos los directorios de trabajo y asignamos permisos:
mkdir /var/log/thunder
mkdir /var/tmp/thunder
mkdir /var/run/thunder
mkdir /thunder
chmod a+rwx /var/log/thunder
chmod a+rwx /var/tmp/thunder
chmod a+rwx /var/run/thunder
chmod a+x /etc/init.d/thunder
touch /etc/thunder/whitelist
touch /etc/thunder/blacklist
chown -R apache /thunder/
chmod -R 777 /thunder/
umask 000 /thunder/
echo “extension=pdo.so” >> /etc/php.ini
echo “vm.swappiness=10″ >> /etc/sysctl.conf

creamos la base de datos para thunder y el modulo administrativo:
mysql -p
mysql> create database thunder;
mysql> grant all privileges on thunder.* to thunder@localhost identified by ‘thunder2012′;
mysql> create database clientes;
mysql> grant all privileges on clientes.* to thunder@localhost identified by ‘thunder2012′;
mysql> flush privileges;

Llenamos esas bases de datos:
mysql -u root -p thunder < thunder.sql
mysql -u root -p clientes < thunderp.sql

Actualizamos a la version thunder 3.1.2:
rm -rf /usr/local/sbin/thunder
tar -xzvf thunder.tar.gz
mv thunder /usr/local/sbin/

Editamos /etc/squid/squid.conf y le agregamos:
#———————————————————————-
#Redireccionamiento Thunder – REGEx
#———————————————————————-
acl thunder_lst url_regex -i \”/etc/thunder/thunder.lst\”
cache deny thunder_lst
cache_peer 127.0.0.1 parent 8080 0 proxy-only no-digest
dead_peer_timeout 2 seconds
cache_peer_access 127.0.0.1 allow thunder_lst
cache_peer_access 127.0.0.1 deny all
#———————————————————————-
Editamos /etc/thunder/thunder.conf y cambiamos las lineas para que se muestren asi:
# Configuracion de MySQL
MYSQL_HOST localhost
MYSQL_USER thunder
MYSQL_PASS thunder2012
MYSQL_DB thunder
Instalamos las herramientas de thunder:
unzip clean.zip
cp clean /etc/thunder/
chmod 555 /etc/thunder/clean
cp killcpumax.sh /etc/thunder/killcpumax.sh
cp thunderotate.sh /etc/thunder/thunderotate.sh
unzip pluginmaker.zip
mv pluginmaker /etc/thunder/

cambiamos el contenido de /etc/thunder/thunder.lst por este:
74\.125\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
http.*\.2shared.com\.com.*(\.exe|\.iso|\.torrent|\.zip|\.rar|\.pdf|\.doc|\.tar|\.mp3|\.mp4|\.avi|\.wmv)
http.*\.4shared\.com.*(\.exe|\.iso|\.torrent|\.zip|\.rar|\.pdf|\.doc|\.tar|\.mp3|\.mp4|\.avi|\.wmv)
http.*\.photobucket\.com
########################################==========A==========###############
http.*\.avast\.com.*(\.def|\.vpu|\.vpaa|\.stamp|\.vpx)
http.*adobe\.com/.*(\.cab|\.aup|\.exe|\.msi|\.upd|\.msp)
http.*\.avira-update\.com.*(\.idx|\.gz|\.exe)
http.*\.avg\.com.*(\.exe|\.bin)
http.*\.axeso5\.com.*(\.zip|\.cdt|\.cmp|\.exe)
########################################==========B==========###############
http.*\.blogspot\.com.*(\.mp4|\.flv|\.swf|\.jpg)
########################################==========C==========###############
http.*\.cnet\.com.*(\.exe|\.rar|\.zip|\.iso)
http.*\.baycdn\.com.*(\.exe|\.iso|\.flv|\.zip|\.rar|\.pdf|\.doc|\.tar|\.mp3|\.mp4|\.avi|\.wmv|.7z)
http.*\.cramit\.in.*\.mp4
########################################==========D==========###############
http.*\.depositfiles\.com.*(\.exe|\.iso|\.torrent|\.zip|\.rar|\.pdf|\.doc|\.tar|\.mp3|\.mp4|\.avi|\.wmv|.7z)
http.*\.dailymotion\.com.*(\.flv|\.on2|\.h264|\.mp4)
########################################==========E==========###############
http.*\.eset\.com.*(\.nup|\.ver|\.exe|\.msi)
http.*\.eluniverso\.com.*\.jpg
http.*\.ewinet\.com.*\.jpg
########################################==========F==========###############
http.*\.fulltono\.com.*(\.mp3|\.ftm|\.sdk)
http.*\.fbcdn\.net.*(\.mp4|\.jpg)
http.*\.filefactory.com.*(\.exe|\.iso|\.torrent|\.zip|\.rar|\.pdf|\.doc|\.tar|\.mp3|\.mp4|\.avi|\.wmv)
http.*\.filehippo\.com.*(\.zip|\.rar|\.exe|\.iso)
http.*flashvideo\.globo\.com.*(\.mp4|\.flv)
http.*\.fileserve\.com.*(\.exe|\.iso|\.torrent|\.zip|\.rar|\.pdf|\.doc|\.tar|\.mp3|\.mp4|\.avi|\.wmv)
http.*\.filebox\.com.*\.mp4
########################################==========G==========###############
http.*\.google\.com.*(\.kmz|\.exe|\.msi|\.kmz|\.msp|\.cab)
http.*\.goear\.com.*\.mp3
########################################==========H==========###############
http.*\.hotfile.com*
http.*\.hardsextube\.com.*(\.flv|\.wmv)
http.*\.hsyns\.net.*\.jpg
http.*\.hwcdn\.net*
########################################==========K==========###############
http.*\.juegosjuegos\.com.*(\.swf|\.jpg|\.png)
########################################==========L==========#######################################################==========M==========###############
http.*\.mlstatic\.com.*\.jpg
http.*\.mbamupdates\.com.*\.ref
http.*\.mccont\.com.*(\.flv|\.mp4)
http.*\.macromedia\.com.*\.z
http.*\.mcafee\.com.*(\.exe|\.xdb|\.msi|\.zip|)
#http.*\.mediafire\.com.*(\.exe|\.iso|\.torrent|\.zip|\.rar|\.pdf|\.doc|\.tar|\.mp3|\.mp4|\.avi|\.wmv)
http.*(\.myspacecdn\.com|\.footprint\.com).*(\.flv|\.mp4)
http.*(\.movistar\.com\.pe|\.telconet\.net).*\.jpg
########################################==========N==========###############
http.*\.nai.com.*(\.zip|\.tar|\.exe|\.gem)
http.*\.netlogstatic\.com.*(\.flv|\.mp4)
http.*\.noticias24\.com
http.*\.nflxvideo\.net*
########################################==========O==========###############
########################################==========P==========###############
http.*\.pandonetworks\.com.*(\.nzp|\.lst)
http.*\.phncdn\.com.*(\.flv|\.mp4)
http.*\.pornhub\.com.*\.flv
http.*\.pornotube\.com.*(\.flv|\.mp4)
http.*\.porntube\.com.*(\.m4v|\.flv|\.mp4)
http.*\.pop6\.com.*(\.flv)
########################################==========R==========###############
http.*\.redtubefiles\.com.*(\.flv|\.mp4)
#http.*\.rapidshare\.com.*(\.exe|\.iso|\.torrent|\.zip|\.rar|\.pdf|\ .doc|\.tar|\.mp3|\.mp4|\.avi|\.wmv)
########################################==========S==========###############
http.*\.sendspace\.com.*(\.exe|\.iso|\.torrent|\.zip|\.rar|\.pdf|\.doc|\.tar|\.mp3|\.mp4|\.avi|\.wmv)
http.*\.symantecliveupdate\.com.*(\.zip|\.exe|\.m26)
http.*\.sourceforge\.net.*(\.zip|\.rar|\.exe|\.iso)
http.*\.softonic\.com.*(\.zip|\.rar|\.exe|\.iso)
http.*\.stream\.aol\.com.*(\.mp4|\.flv)
http.*\.softnyx\.com.*(\.xfs|\.rar|\.exe|\.iso)
http.*\.staticflickr\.com.*\.jpg
########################################==========T==========###############
http.*\.terra\.com.*\.mp4
http.*\.tube8\.com.*(\.flv|\.mp4)
http.*\.tagstat\.com.*\.jpg
http.*\.tudiscoverykids\.com.*(\.flv|\.mp4|\.mp3|\.jpg|\.png|\.mp4|\.f3d|\.swf)
http.*\.tricom\.net.*\.jpg
########################################==========U==========###############
http.*\.uptodown\.net.*(\.zip|\.rar|\.exe|\.iso)
http.*\.uptodown\.com.*(\.zip|\.rar|\.exe|\.iso)
http.*\.ubuntu\.com.*(\.deb|\.tar|\.gz)
########################################==========V==========###############
http.*\.viddler\.com.*\.flv
http.*(\.video\.msn\.com|\.video\.latan\.msn\.com).*(\.flv|\.mp4)
http.*\.vimeo.com.*(\.flv|\.on2|\.h264|\.mp4)
http.*\.videocaserox\.com.*\.flv
########################################==========W==========###############
#http.*(\.windowsupdate\.com|\.microsoft\.com).*(\.cab|\.exe|\.iso|\.zip|\.psf|\.msu)
http.*\.microsoft\.com.*(\.cab|\.exe|\.iso|\.zip|\.psf|\.msu|\.msi|\.msp|\.dsft)
http.*\.windowsupdate\.com.*(\.cab|\.exe|\.iso|\.zip|\.psf|\.msu|\.msi|\.msp|\.dsft)
http.*\.wikimedia\.org.*(\.jpg|\.png)
########################################==========X==========###############
http.*\.xtube\.com.*\.flv
http.*\.xvideos\.com.*\.flv
########################################==========Y==========###############
http.*\.youtube\.com.*videoplayback
http.*\.youporn\.com.*(\.flv|\.mp4)
http.*\.youjizz\.com.*(\.flv|\.mp4)
http.*\.ytimg\.com.*\.jpg
http.*\.yimg\.com.*(\.jpg|\.swf)
########################################==========Z==========###############
http.*.\ziddu\.com.*(\.exe|\.iso|\.rar|\.zip|)

Actualizamos los plugins:
rm -rf /etc/thunder/plugins/
unzip plugins.zip
mv plugins /etc/thunder/
chmod 555 /etc/thunder/plugins/*
chmod 555 /etc/thunder/memoria.sh
chmod 555 /etc/thunder/clean
chmod 555 /etc/thunder/thunderotate.sh
chmod 555 /etc/thunder/killcpumax.sh
instalamos el modulo web:
unzip thunder.zip
mv thunder /var/www/html/
chmod 555 /var/www/html/thunder/*
chmod 555 /var/www/html/thunder/mail/*
Editamos estos archivos para cambiar usuario y contraseña de la DB:
/var/www/html/thunder/report.php
/var/www/html/thunder/Cpay.php
/var/www/html/thunder/Cent.php
/var/www/html/thunder/Cent.php
/var/www/html/thunder/conexion.php
/var/www/html/thunder/system.php
/var/www/html/thunder/edit/editsq.php
/var/www/html/thunder/edit/editip.php
/var/www/html/thunder/edit/edit.php
/var/www/html/thunder/edit/editdns.php
/var/www/html/thunder/edit/editmk.php
/var/www/html/thunder/edit/editus.php
Iniciamos los servicios:
/etc/init.d/thunder start
/etc/init.d/squid restart

Y ya podemos ver cómo esta funcionando thundercache junto a squid en nuestro servidor CentOS 6.3 entrado a:
http:/ip.del.servidor/thunder

usuario:admin password:admin Esto podrá cambiarse más adelante desde esta misma interface

Screenshots:

Fuentes:
http://www.alterserv.com/foros/index.php?topic=3.0
http://www.alterserv.com/foros/index.php?topic=9.0
http://www.alterserv.com/foros/index.php?topic=11.0
http://foro-mikrotik.com/thundercache-7-1-final-licencia-de-pago-y-free-ads-detalles/