Разделы новостей
Последние новости:
Железо
Софт
Интернет
Наука и техника
Электронная коммерция

Разделы статей



Как бороться со сменой IP адресов клиентами локальной сети?

Keywords: arp mac ethernet ifconfig freebsd limit security From: Alexander V. Naumochkin Newsgroups: http://www.unixfaq.ru Date: Mon, 17 May 2004 18:21:07 +0000 (UTC) Subject: Как бороться со сменой IP адресов клиентами локальной сети

Оригинал: http://www.unixfaq.ru/index.pl?req=qs&id=169








Разместить статью на этом сайте





Как бороться со сменой IP адресов клиентами локальной сети?

Оглавление

  • Статический ARP
  • Статический ARP + NOARP
  • Port Security
  • Туннелирование
  • Самописная аутентификация
  • 802.1x Подобная проблема как правило возникает в локальной сети с платным доступом к интернет, где траффик считается по IP адресам.

    Все приведенные ниже способы так или иначе используют аппаратный адрес сетевой карты MAC - Media Access Control. Во время работы машины в локальной сети в ее памяти хранятся пары MACIP, которые обновляются динамически. Если в памяти нет записи для какого-то IP адреса, то посылается широковещательный запрос и машина имеющая этот IP отвечает.

    Способ 1 (наиболее примитивный) - на все IP адреса MAC прописывается статически с помощью команды arp(8). На не никем занятые адреса прописывается MAC 0:0:0:0:0:0. Это можно делать приблизительно таким скриптом:

    #!/bin/sh
    mynet="192.168.0.";
    n=1
    while ( [ n -lt 255 ]; ); do
     arp -S $mynet$n 0:0:0:0:0:0
     n=$(expr $n \+ 1);
    done
    arp -f /etc/ethers
    
    Здесь соответственно в переменной mynet задается защищаемая подсеть, в файле /etc/ethers лежат "правильные" пары IPMAC.

    Однако все современные сетевые карты позволяют легко перепрограммировать MAC адрес. Во всяком случае под FreeBSD, Linux и тп это делается очень легко. Под различными Windows это возможно не всегда, в зависимости от драйвера сетевухи. Поэтому ничего не стоит прописать себе MAC 0:0:0:0:0:0 и спокойно работать с несуществующего IP. Значит данный способ защитит от всяких "умников", которые знают как мастдае меняется IP адрес. А от смены MAC это не спасет.

    Способ 2: можно сделать так что бы arp lookup вообще не работал, и записи в таблицу можно было вносить исключительно с помощью arp(8). Тогда не придется присваивать нули всем пустым адресам. Делается это так:

    Добавляем флаг -arp на интерфейс:

     ifconfig fxp0 -arp
    
    и в файле /etc/rc.conf:
     ifconfig_fxp0="inet 192.168.1.1 netmask 255.255.255.0 -arp"
    
    Создаем файл, в котором прописываем соответствия ip и MAC-адресов (например, /etc/ether.local) такого вида:
     192.168.1.2 00:80:23:5F:65:8C
     192.168.2.3 00:5C:67:9A:55:5B
     . . .
    
    Очищаем arp-кэш и загружаем статическую таблицу:
     
     arp -ad
     arp -f /etc/ether.local
    
    и добавляем последнюю команду в /etc/rc.local

    Теперь на этом интерфейсе arp не работает вообще. То есть не только не принимаются обновления в arp-кэш, но и не отсылаются ответы на запросы arp who-has. А это значит, что и на клиентских машинах необходима статическая запись соответствия ip и MAC-адресов маршрутизатора. На Windows-машинах это делается записью вида:

     arp -s 192.168.1.1 00-79-36-FC-09-0F
    
    В старых версиях FreeBSD поддержки флага -arp для интерфесов не было. Ниже приведен патч к ядру FreeBSD который это делает(возможно подобные патчи существуют и для других ОС).
    --- if_ether.c.stdThu Sep 10 18:22:48 1998
    +++ if_ether.cFri Sep 11 16:53:22 1998
    @@ -482,6 +482,7 @@
     itaddr = myaddr;
     goto reply;
     }
    +/*VV*/if (!(ac->ac_if.if_flags & IFF_NOARP)) {
     la = arplookup(isaddr.s_addr, itaddr.s_addr == myaddr.s_addr, 0);
     if (la && (rt = la->la_rt) && (sdl = SDL(rt->rt_gateway))) {
     if (sdl->sdl_alen &&
    @@ -501,6 +502,7 @@
     la->la_hold = 0;
     }
     }
    +/*VV*/}
     reply:
     if (op != ARPOP_REQUEST) {
     m_freem(m);
    
    В этом patchе блокируется только обновление arp-кэша, ответы на запросы не блокируются, поэтому статические записи на клиентских машинах не требуются. В версиях FreeBSD старше чем 4.9-RELEASE патч не требуется, такая функциональность есть out of box. Просто нужно сконфигурировать интерфейс с флагом staticarp.

    Однако если какой-то пользователь выключит свой компьютер, то "хакер" может включить свой и установить его MAC. К сожалению против этого дешевыми способами защититься нельзя.

    Способ 3: (дорогой и надежный) Port Security. Необходимо приобрести свитч, который позволяет сделать привязку MAC к конкретному физическому порту в свитче. А на роутере в свою очередь делается статическая привзяка IP к MAC, как описано в способе 1.Обмануть такую защиту практически невозможно. Однако стоят такие свитчи немало.Один из недостатков данного способа - клиенты будут удивляться, почему не работает интернет после смены сетевой карты.

    Способ 4: (В последнее время все более и более популярный) Туннелирование. Для туннелирования в ethernet существует протокол PPPoE. Пример настройки можно посмотреть здесь Cетевая часть->PPP (http://www.unixfaq.ru/index.pl?id=79). Альтернативные протоколы туннелирования PPTP и L2TP требует предварительной выдачи клиенту какого-то IP адреса, поверх которого уже будет ходить реальный.

    Способ 5: авторизация пользователей по паролю. При корректной реализации (криптованные пересылки) способ почти такой же непробиваемый, как и "умный" коммутатор. На машинке с firewallом ставится сервер и база login:password, у юзеров - соответствующий клиент. Перед началом работы пользователь запускает эту программу, сообщает серверу свои login/password, сервер прописывает в firewallе разрешающее правило. Юзер работает. Клиентская софтинка у юзера регулярно извещает сервер "Я тут, я жив!". Когда юзер делает logoff или вырубает машину (сервер не получает keep-alive от клиента) - правило в firewallе сносится.

    Пример реализации есть на http://nag.ru.

    Способ 6: (идеальный и не достижимый) - 802.1x. Протокол придуманный специально для авторизации в Ethernet. Основная идея состоит в том, что все защищенные порты на свитче находятся в "отключенном" состоянии, в котором они принимают только аутентификационные пакеты. По получении такого пакеты свитч проверяет его подлинность и включает порт. По окончании работы клиента порт снова "отключается". К сожалению свитч поддерживающий этот протокол стоит ~ $350, и поддержка 802.1x операционными системами оставляет желать лучшего.

    P.S. Имеет также смысл взглянуть на следующий софт - arpwatch (http://www.Awfulhak.org/arpwatch/), который позволяет мониторить смену MAC адресов клиентами.

    Создано: Alexander V. Naumochkin

    Последнее обновление: Gleb Smirnoff

    Статья взята с сайта OpenNet.



    www.linuxcenter.ru

    Строим сеть грамотно 24-03-2008
    Мини-HOWTO: Корневой NFS 24-03-2008 Строим сеть грамотно
    Мини-HOWTO: Корневой NFSAndreas Kostyrkaandreas@ag.or.at Перевод: Станислав Рогин, ASPLinux АннотацияВ этом документе дается объяснение того, как настроить "бездисковую" рабочуюстанцию на Linux, корневая файловая система которой подключена через NFS.Новую версия этого Мини-Howto можно найти по адресуftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root или на любом егозеркале РЯДО...


    LINUX PLIP MINI-HOWTO 24-03-2008 Строим сеть грамотно
    LINUX PLIP MINI-HOWTOAndrea Controzzicontrozz@cli.di.unipi.it Перевод: Денис Дементьев, ASPLinux АннотацияИспользование информации этого HOWTO позволит вам настроить и использовать протокол параллельного интерфейса (Parallel Line Interface Protocol).СодержаниеВступление: что такое PLIP, и для чего он нужен?Аппаратное обе...


    Использование бездисковых Linux-станций с загрузкой по сети 24-03-2008 Строим сеть грамотно
    Использование бездисковых Linux-станций с загрузкой по сетиВпервые опубликованно в журнале "Системный администратор" N11/2004Постановка задачиРабота сотрудника отдела автоматизации – это постоянная борьба спроблемами и решение задач, которые попеременно подкидываютпользователи, разработчики эксплуатируемого программного обеспечения ируководство организации. И если два первых направления работы – этопросто «борьба за живучесть кора...


    Опыт внедрения OpenVPN 24-03-2008 Строим сеть грамотно
    Опыт внедрения OpenVPNПочему OpenVPN?На ключевое слово vpn Google откликнулся 17 000 000 ссылок. Это приятно удивило. Немного сузив поиск наткнулся на сайтopenvpn.sourceforge.net. Вводная статья обещала простоту инсталяции и конфигурирования,а главное,- возможность созданиятунеля для большинства наиболее распрастранённых операционных систем, включая Linux,SUN Solaris,*BSD, Mac OS X, w2k, w2k3.Это то что мне нужно... Внешний...
  •  

     
    Copyright by www.scripts.net.ua.
    Rambler's Top100 Рейтинг@Mail.ru