In breve , la risposta è no , di solito non puoi bloccare in base all'indirizzo MAC. E se potessi, sarebbe inutile. Per capire perché, devi sapere una o due cose su come funziona Internet.
La comunicazione tra dispositivi è comunemente effettuata tramite il protocollo Ethernet (wiki) , e nonostante la fonte e la destinazione siano identificate da IP, la comunicazione effettiva è fatta per MAC. Immagina la seguente rete:
Seilclientvuoleinviareunpacchettoalserver,controllaprimaseilserversitrovanellastessasottorete.No,ilserverhaunIP10.xeilclientunIP192.168.x.Ilclientquindiloinviaalsuorouter,R1,nellasperanzachesaràingradodiinoltrarloalladestinazione.Ilpacchettocontiene:
SourceIP:192.168.1.100(belongsto:Client)DestinationIP:10.1.1.1(belongsto:Server)SourceMAC:01:01:01:02:02:02(belongsto:Client)DestinationMAC:02:01:01:02:02:02(belongsto:R1)
QuindiR1
ècome"Oh, l'IP è da qualche parte su Internet". Cambia l'IP di origine nell'IP pubblico (in modo che il server possa inviare un pacchetto) e lo inoltra a R2. Il pacchetto ora contiene:
Source IP: 172.16.1.1 (public IP from R1)
Destination IP: 10.1.1.1 (belongs to: Server)
Source MAC: 02:01:01:02:02:02 (belongs to: R1)
Destination MAC: 03:01:01:02:02:02 (belongs to: R2)
Come puoi vedere, l'IP di destinazione non cambia, ma gli indirizzi MAC cambiano ogni volta che vengono inoltrati (da un router) in base al router a cui è inoltrato e da quale router proviene.
Andando avanti, R2
non manometterà nessuno degli IP come R1
fatto perché non è un router NAT (come la maggior parte dei consumatori). R2
semplicemente inoltrerà il pacchetto.
Alla fine, il server sarà in grado di vedere l'indirizzo MAC da R3. Affinché la comunicazione funzioni, è sufficiente conoscere oltre l'IP originale da R1
. (Quando un pacchetto di risposta ritorna a R1
, altre cose si assicurano che il pacchetto raggiunga il client.) Se vuoi sapere perché non tutte le comunicazioni sono semplicemente basate su MAC, dai un'occhiata a questa domanda su serverfault .
Un'eccezione a questo è quando il client si trova all'interno della stessa LAN del server. Come ho già detto, il client confronta prima la sottorete IP di se stessa e la destinazione. Se è lo stesso (ad esempio 192.168.1.101 e 192.168.1.44, quando in una sottorete / 24), la comunicazione è basata sull'indirizzo MAC. Il client trasmetterà un messaggio sulla LAN, chiedendo che il MAC appartenga all'IP del server e quindi lo invii a quel MAC. Il pacchetto conterrà ancora l'IP di destinazione, ma non vi è alcun router tra i due. (Potrebbe esserci, ma funzionerà come switch o hub, non come router.) Ma probabilmente non è lo scenario che avevate in mente.
Se si riuscisse a determinare il MAC, sarebbe una violazione della privacy piuttosto ampia. Dal momento che il tuo indirizzo MAC ti identifica in modo univoco in tutto il mondo, le reti pubblicitarie non avrebbero problemi a rintracciarti, anche senza cookie di tracciamento o altri metodi.
Il blocco di un utente malintenzionato tramite MAC equivale a bloccarlo per cookie perché è controllato dal client. Attualmente non è quasi mai cambiato perché non c'è quasi mai un motivo per farlo, ma se si riuscisse a determinare e bloccare un aggressore tramite MAC, potrebbe semplicemente cambiarlo. Gli indirizzi IP devono essere riconosciuti globalmente per poter essere instradati, ma un MAC non ha questo problema.
Inoltre, un utente malintenzionato potrebbe bloccare i client di cui conosce il MAC spoofing quell'indirizzo MAC e quindi attivare il blocco. Chiunque utilizzi realmente quell'indirizzo MAC sarebbe proibito utilizzare il servizio.
Conclusione: se fosse possibile sarebbe piuttosto inefficace e introducendo una vulnerabilità DoS, ma dal momento che non è possibile fare in modo che il client invii il MAC insieme alle intestazioni HTTP o qualcosa del genere, non è solo possibile all'esterno della stessa LAN.