Tabele arp – Blokowanie dostępu do Internetu na routerze linuksowym

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.

Dodaj komentarz