Wstęp teoretyczny
W celu określenia jacy użytkownicy (w sensie adresów IP) mogą dostać się do serwera lub innej usługi (np. do Internetu) można wykorzystać statyczne tabele arp. Protokół arp służy do określenia jaki adres fizyczny ma karta sieciowa (tzw.MAC adres) o określonym adresie IP. Wpisując na sztywno takie pary do tabeli arp można stworzyć sytuacje, że gdy ktoś zmieni swój adres IP pakiety nie trafią do określonego urządzenia fizycznego (karty sieciowej) czyli ten ktoś nie będzie mógł skorzystać z usługi.
Zabawy tablicą
Do przeglądania i modyfikowania tablic arp służy polecenie o tej samej nazwie czyli arp. Tablice możemy przejrzeć wydając polecenie arp -a.
[root@ziutus root]# arp -a ? (10.0.0.1) at 00:50:DA:C6:8D:64 [ether] on eth0 ? (10.0.0.2) at 00:60:97:77:47:9B [ether] on eth0
Usunięcie wpisu dotyczącego pewnego hosta dokonamy przy pomocy polecenia apr -d adres_IP
[root@ziutus root]# arp -d 10.0.0.1 [root@ziutus root]# arp -a ? (10.0.0.1) at on eth0 ? (10.0.0.2) at 00:60:97:77:47:9B [ether] on eth0
Oznaczenie informuje nas właśnie iż adres został usunięty ręcznie lub nie jest znany. Możemy go jednak dodać łatwo:
[root@ziutus root]# arp -a ? (10.0.0.1) at on eth0 ? (10.0.0.2) at 00:60:97:77:47:9B [ether] on eth0 [root@ziutus root]# arp -s 10.0.0.1 00:50:DA:C6:8D:64 [root@ziutus root]# arp -a ? (10.0.0.1) at 00:50:DA:C6:8D:64 [ether] PERM on eth0 ? (10.0.0.2) at 00:60:97:77:47:9B [ether] on eth0
Oznaczenie PERM informuje że adres został wprowadzony ręcznie i nie ulegnie zmianie (jest permanentny).
Statyczna tablica arp pobierana z pliku
Wprowadzanie takich danych ręcznie jest bardzo niewygodne (szczególnie po restarcie komputera) więc należałoby to jakoś zautomatyzować. Można by stworzyć skrypt korzystających z powyższych poleceń ale lepiej skorzystać z opcji -f polecenia arp, które pozwala zczytać dane z pliku (domyślnie /etc/hosts). Format pliku to adres komputera IP oraz MAC adres (bez dwukropka) oddzielone wszystko białym znakiem np.
10.0.0.100 000CF1AD9530 10.0.0.45 0060087121D0 10.0.0.42 000475AB6626 10.0.0.110 00051C1B8484 10.0.0.39 0050DA75969D 10.0.0.116 0008C7EA1AC6 10.0.0.22 0050DA6B13D9
Uzupełniając statyczną tablicę ARP do wszystkich adresów z lokalnej sieci (jeżeli nie jest wykorzystywany określony adres wpisujemy wymyślony adres karty sieciowej) możemy osiągnąć efekt iż nikt poza komputerami z ściśle określonymi adresami IP nie jest w stanie skorzystać z usług danego hosta.