Bloccare Skype con ASA
Un collega mi ha chiesto un favore di configurare un firewall per lasciar passare tutto tranne skype, msn, yahoo, icq e quant'altro. Doppio panico, anzi triplo.1. Ne ho sempre parlato e sono certo che "in linea di principio" si puo fare, ma mi capita sempre piu raramente di applicarmi e configurare, provare, fare troubleshooting. Mi capita raramente di "fare", insomma. La prendo come un'opportunitá per mettermi alla prova con me stesso.
2. Non ho "un firewall". Ebbene si, non e' che dato che lavoro in cisco ho l'ufficio pieno di router, switch, firewall, IPS, e quant'altro ed appoggio la tazza di caffe' su un Catalyst 6500 che mi fa anche da stufa. No. Ho solo un PIX501, ma non fa quelle cose con le quali penso di approcciare il problema. Per fortuna un collega mi ha prestato un ASA5505 (ah, grazie, eh!)
3. Ho poco tempo per farlo, diciamo un paio d'orette, perche ho una montagna di cose da fare e so gia che Skype non e' un'applicazione preconfigurata in ASA. La prendo con filosofia ed aggiungo all'opportunitá precedente.
Bene, a parte un momento di tribolazione sull'aggiornamento dell'immagine del software (mi serve la versione 8.0) perche sul modello che ho usato, in rom monitor occorre specificare anche la porta ethernet, oltre a server, address e filename, non me la sono sbrigata proprio in cinque minuti, ad ogni modo ho scoperto:
- AOL e ICQ appena homesso l'inspection sull'http hanno smesso di andare, bene.
- MSN, Yahoo sono facili da bloccare, basta 'dire' al firewall di non lasciarli passare ed e' fatta.
- Skype e' proprio bastardo ! :-)
Per skype bisogna fare una configurazione abbastanza restrittiva. Ovviamente niente https, perche skype ci si infila dentro ed il firewall non riesce ad ispezionare con l'approfondimento che mi serve. Quindi ho lasciato passare solo DNS, http, pop3, smtp, imap4, ma malgrado la protocol compliance inspection skype si collega ugualmente. E scopro presto perche, leggendo questo documento. Perche l'handshaking di login e' fatto in http regolare, cito:
The Appendix shows the message dump of HTTP 1.1 GET
requests that a SC sent to skype.com and the responses it received,
when it was started by the user.
When SC was started for the first time after installation, it sent a
HTTP 1.1 GET request containing the keyword installed to
skype.com. This request was not sent in subsequent Skype runs.
The request is shown below:
GET /ui/0/97/en/installed HTTP/1.1
User-Agent: Skype™ Beta 0.97
Host: ui.skype.com
Cache-Control: no-cache
The 200 OK response SC received for this GET request:
HTTP/1.1 200 OK
Date: Tue, 20 Apr 2004 04:51:39 GMT
Server: Apache/2.0.47 (Debian GNU/Linux) PHP/4.3.5 mod_ssl/2.0.47 OpenSSL/0.9.7b
X-Powered-By: PHP/4.3.5
Cache-control: no-cache, must revalidate
Pragma: no-cache
Expires: 0
Content-Length: 0
Content-Type: text/html; charset=utf-8
Content-Language: en
Allora, se nella richiesta c'e' scritto User-Agent: Skype™ Beta 0.97, Host: ui.skype.com, io ci provo. metto sull'http una regular expression per la parola 'skype' case insensitive, quindi regex skype "[Ss][Kk][Yy][Pp][Ee]"
Bingo, skype *non* fa piú login.
Etichette: cisco

2 Comments:
Bella idea Marco! Sono implementazioni sempre più richieste.
Toh, chi si vede (o meglio, toh, chi mi legge). Ma ciao.
Posta un commento
<< Home