Ограничить доступ к серверу - привязка IP к MAC адресу

Что делать, если Ваш сервер является шлюзом в локальной сети, а Вы хотите ограничить доступ к этому шлюзу или просто ограничить доступ к серверу. То есть разрешить только своим.

Указанный метод позволяет просто не пустить на сервер пользователей сети, которых нет в списке static.arp (ip+mac)

Но ip машине никто не сможет запретить присвоить, ведь сервер не эмулирует, что ip занята. Поэтому "захватчик ip" сможет видеть другие компы, создаст трудности реальному владельцу ip (если захватит чужую ip, а не свободную). Но дальше сервера (шлюз), никуда пробиться не сможет (точнее он даже сервера увидеть не сможет).

Привязка IP к MAC адресу.

1. Создать файл-список привязки IP к MAC (например /etc/ethers.local)

Вот пример строк из этого файла:

192.168.0.23 00:0c:6e:3f:cd:e5 #arm23
192.168.0.48 00:0d:88:82:da:a2 #arm48

2. Написать скрипт с таким содержанием: (например /etc/static.arp):

#!/bin/sh
# обнуляем всю таблицу arp
arp -ad > null
# к каждому компу в локальной сети привязываем несуществующий (нулевой)                
# MAC адрес
I=1
while [ $I -le 254 ]
do
arp -s 192.168.0.${I} 0:0:0:0:0:0
I=`expr $I + 1`
done
#  к реально существующему компу в сети из базы данных в файле
# /etc/ethers.local  привязываем
#  правильный MAC адрес
arp -f   /etc/ethers.local

3. Сделать этот файлик исполняемым, если не запускается то, выполните команду

ip neigh show

если выполнил, и получил ответ типа

192.168.0.16 dev eth0 lladdr 00:0d:87:3b:76:1f STALE
192.168.0.111 dev eth0 lladdr 00:1a:92:b4:d4:a4 REACHABLE
192.168.0.56 dev eth0 lladdr 00:17:31:da:60:a5 STALE
192.168.0.252 dev eth0 lladdr 00:18:19:f2:e9:c1 DELAY
192.168.0.120 dev eth0 lladdr 00:1d:60:f8:7a:01 STALE
192.168.0.6 dev eth0 lladdr 00:13:77:93:77:42 REACHABLE
192.168.0.112 dev eth0 lladdr 00:13:8f:b5:1d:89 STALE

то это плохо

открыть терминал, и выполнить /etc/static.arp

[root@local /]# /etc/static.arp
-bash: /etc/static.arp: /bin/sh^M: плохой интерпретатор: Нет такого файла или каталога
[root@local /]#

Судя по "^M", в вашем скрипте разделители строк, принятые в Виндовс, CR+LF. В *никс же принято использовать LF.

Это можно исправить командой

sed -i 's/\r//' /etc/static.arp

4. Прописать в файл /etc/rc.local такую строчку:

/etc/static.arp

Конечно желательно, чтобы привязки имен пользовательских хостов к ip-адресам были прописаны в файле /etc/hosts и это ускорит их поиск. Сервер не будет рассылать широковещательные запросы о локальных MAC адресах, т. к. все они статически жестко привязаны к ip-адресам. 

1. Не рассылаются широковещательные запросы, что экономит трафик и время на ответ сервера
2. Не позволяет пользователю менять свой ip-адрес, т. к. сервер все равно пакет будет отправлять на жестко привязанный MAC адрес.