Пошук хоста по MAC-адресу

  1. Матеріал з Xgu.ru
  2. [ правити ] Таблиця MAC-адрес на комутаторі
  3. [ правити ] Виявлення нових хостів
  4. [ правити ] OID таблиці MAC-адрес в різних комутаторах

Матеріал з Xgu.ru

Дана сторінка знаходиться в розробці .
Ця сторінка ще не закінчена. Інформація, представлена ​​тут, може виявитися неповною або неправильною.

Якщо ви вважаєте, що її варто було б доопрацювати якомога швидше, будь ласка, скажіть про це .

Автор: Ігор Чубин
Короткий URL: Host_by_MAC

Пошук хоста по MAC адресу - завдання пошуку комутатора і порту, до якого підключений мережевий пристрій, MAC-адресу якого відомий. Рішення для керованих комутаторів описано нижче (не описано, а може бути буде описано коли-небудь, а зараз нижче просто його чернетки).

Необхідно за відомим MAC-адресу хоста ідентифікувати хост. Рішення завдання в лоб, тобто ведення бази даних MAC-адрес комп'ютерів мережі вручну, не завжди ефективно (MAC-адресу може бути змінений, може використовуватися гостьовий комп'ютер і т.д.) і досить громіздко, оскільки вимагає супроводу бази.

Для керованих комутаторів існує більш просте і елегантне рішення: дізнатися у самого комутатора до якого його порту підключений хост з відомим MAC-адресою.

Інше завдання, яка має безпосереднє відношення до цієї - роздача DHCP-сервером IP-адрес грунтуючись на номерах портів комутатора, до яких підключені хости.

Пошук порту комутатора: http://www.cisco.com/en/US/tech/tk648/tk362/technologies_tech_note09186a00801c9199.shtml

Можна знаходити хост навіть в тому випадку, якщо він змінив MAC-адреси мережевої карти. Пошук порту комутатора

Після того як MAC-адресу пристрою, який виконав підміну відомий, необхідно знайти, мережевої карти якого комп'ютера він належить.

Якщо база даних MAC-адрес мережевих карт не ведеться, найпростіший спосіб знайти мережеву карту - опитати комутатор. У тому випадку, якщо існує база даних MAC-адрес мережевих карт, з інформацією про те, до якого порту комутатора вони підключені, можна спробувати знайти мережеву карту з її допомогою. Однак, MAC-адресу пристрою можу бути підмінений, і тоді пошук по базі даних не увінчається успіхом. У цьому випадку також може допомогти опитування комутатора.

[ правити ] Таблиця MAC-адрес на комутаторі

Точніше, вони надають дві таблиці відповідності: таблицю відповідності MAC-адрес певному числу-ідентифікатором і таблицю відповідності портів комутатора цього ж числа-ідентифікатором. Після того як обидві таблиці відомі, досить їх зіставити, і визначити, якого порту відповідає який MAC-адресу.

власне таблиці відповідності

Може бути й таке, що ні один MAC-адреса не відповідає порту, навіть якщо до порту і підключений комп'ютер - це може статися в тому випадку, якщо комп'ютер давно не відправляв пакети, і інформація про нього вже видалена з пам'яті комутатора. З цієї ж причини, що описується метод може не знайти комп'ютер з певним адресою.

Може бути і навпаки - одному порту відповідає безліч адрес. Така ситуація можлива в тому випадку, коли до порту підключений не один комп'ютер, а безліч - через інший комутатор або хаб.

Якщо комутатор не один, і всі вони керовані, то можна опитати всі комутатори, і визначити точно, який порт якого комутатора знаходиться найближче до шуканої мережевої карти.

[ правити ] Виявлення нових хостів

У закритих мережах, де нові мережеві пристрої з'являються рідко, може мати сенс завдання автоматичного виявлення нових хостів в мережі. Як тільки в мережі з'явився пристрій з невідомим MAC-адресою, адміністратору відправляється сповіщення, що містить максимум інформації про пристрій.

Програма arpwatch веде власну базу даних MAC-адрес, і вона самостійно може виявляти появу нових комп'ютерів. Однак, в тому випадку, якщо в мережі працює кілька систем arpwatch одночасно, кожна з них буде заново виявляти хост з новим MAC-адресою, навіть якщо інші системи його вже виявили раніше.

про централізовану БД

Далі адміністратор вирішує, що робити з цим пристроєм. У тому випадку, якщо пристрій з'явився в мережі законно, адміністратор може підтвердити його поява, що запобіжить поява нових повідомлень, при повторному виявленні пристрою іншими інсталяціями arpwatch.

Очевидно, метод буде працювати і в тому випадку, якщо пристрій просто змінило MAC-адресу на новий, відсутній в мережі раніше.

/ usr / local / bin / syslog-ng-arpwatch <sh />

  1. ! / Bin / sh

PATH = $ PATH: / usr / local / bin

while read line do mac = "$ (echo $ line | grep 'changed ethernet address' | awk '{print $ 10}')" [-z "$ mac"] && continue (echo POSSIBLY ARP-SPOOFING FROM :; mac2port | grep "$ mac") | logger -t arp-spoofing done


Скрипт, який автоматично вимикає порт комутатора:

#! / Bin / sh PATH = $ PATH: / usr / local / bin shutport () {INT = $ 1; SWITCH = 192.168.15.99; PASSWORD = procurve; (Sleep 5; echo $ {PASSWORD}; sleep 1; echo; sleep 1; echo conf; sleep 1; echo int $ INT disable; sleep 1; echo end; sleep 1; echo exit; sleep 1; echo exit; sleep 1 ; echo y) | socat - EXEC: "ssh $ {SWITCH}", setsid, pty, ctty} main () {while read line do mac = "$ (echo $ line | egrep 'changed ethernet address | reused old ethernet address' | awk '{ print $ 10} ') "[-z" $ mac "] && continue port_line =" $ (mac2port | grep "$ mac") "port = $ (echo $ port_line | sed" s /.*->// ") echo POSSIBLY ARP-SPOOFING FROM: $ port_line | logger -t arp-spoofing shutport $ port done} main

<Perl />

  1. ! / Usr / bin / perl

our $ community = "public"; our $ switch = "192.168.15.100";

open (SNMP, "snmpwalk -On -OQ -v2c -c $ community $ switch .1.3.6.1.2.1.17.4.3.1.1 |")

or die "Can not run snmpwalk";

while (<SNMP>) {

chomp; s @ .1.3.6.1.2.1.17.4.3.1.1 @@; my ($ oid, $ mac) = split / = \ s * /; $ _ = $ Mac; s @ "@@ g; s @ \ s * $ @@; s @ @: @ g; s @ (.) @ \ l \ 1 @ g; s @ ^ 0 @@; s @: 0 @: @ g; $ mac_table {$ _} = $ oid;

} Close (SNMP);

open (SNMP, "snmpwalk -On -OQ -v2c -c $ community $ switch .1.3.6.1.2.1.17.4.3.1.2 |")

or die "Can not run snmpwalk";

while (<SNMP>) {

chomp; s @ .1.3.6.1.2.1.17.4.3.1.2 @@; my ($ oid, $ port) = split / = /; $ Ports_table {$ oid} = $ port;

} Close (SNMP);


for $ oid (keys% mac_table) {

print "$ oid ->". $ ports_table {$ mac_table {$ oid}}. "\ n";

}

[ правити ] OID таблиці MAC-адрес в різних комутаторах

У інших комутаторів MAC-адреси зберігаються в інших місцях дерева OID.

Для комутаторів Asotel:

.1.3.6.1.4.1.655.5.5.1.4.1.1.1.2 .1.3.6.1.4.1.655.5.21.1.4.1.1.1.2