¿Hay alguna manera fácil de averiguar todas las IP que usa Facebook, Myspace, Snapchat, etc.?
Usando Facebook como ejemplo ... Controlamos su ancho de banda a una pequeña fracción de nuestro total directamente en nuestro ASA (porque otro grupo de la compañía posee el proxy web).
Normalmente busco el ASN de la empresa (Facebook es 32934), luego voy http://as.robtex.com/as32934.html#bgp
y encuentro sus prefijos.
A partir de esa lista, construyo un grupo de objetos ASA de Cisco, que puedo usar para clasificar el tráfico ... Esto es lo que estoy usando ahora ... Facebook se limita a una pequeña cantidad de ancho de banda ... Funciona muy bien.
De vez en cuando, tendrá que regresar y verificar la información AS de robtex para ver si han agregado o eliminado prefijos. Por lo general, trato de tomar el bloque agregado más grande que tienen, incluso si solo anuncian bloques más pequeños de ese agregado más grande.
object-group AS32934_Facebook
network-object 31.13.24.0 255.255.248.0
network-object 31.13.64.0 255.255.192.0
network-object 66.220.144.0 255.255.240.0
network-object 69.63.176.0 255.255.240.0
network-object 69.171.224.0 255.255.224.0
network-object 74.119.76.0 255.255.252.0
network-object 103.4.96.0 255.255.252.0
network-object 173.252.64.0 255.255.192.0
network-object 204.15.20.0 255.255.252.0
El código de Python que uso para generar la lista es trivial ...
from ipaddr import IPv4Network, CollapseAddrList
fb_nets = list()
with open('facebook_nets.txt') as fh:
for line in fh:
net = IPv4Network(line.strip())
fb_nets.append(net)
print "object-group AS32934_Facebook"
for net in sorted(CollapseAddrList(fb_nets)):
print " network-object %s %s" % (net.network, net.netmask)
El código asume que coloca todos sus prefijos en un archivo de texto llamado "facebook_nets.txt", con un prefijo por línea ...
(py26_dfl)[mpenning@Bucksnort ~]$ head facebook_nets.txt
31.13.24.0/21
31.13.64.0/18
31.13.64.0/19
31.13.64.0/24
31.13.65.0/24
31.13.66.0/24
31.13.67.0/24
31.13.68.0/24
31.13.69.0/24
31.13.70.0/24
(py26_dfl)[mpenning@Bucksnort ~]$
En realidad, mi script raspa automáticamente la información cada semana, pero esta es una versión simplificada.