Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: f0x0ff в Apr 05, 2005, 14:49



Титла: DHCP filtering problem
Публикувано от: f0x0ff в Apr 05, 2005, 14:49
Привет на всички ,
 Картинката е следната : имам DHCP сървър слушащ в даден мрежов сегмент , както и dhcp клиент в този сегмант.
Целта ми е да направя така че когато определен клиент (на който му зная mac адреса , примерно mac CC:CC:CC:CC:CC:CC)    
зададе към броадкаста DHCPDISCOVER заявка и съответно сървъра му върне DHCPOFFER - клиента (демек този от които идва DHCPDISCOVER) да филтрира DHCPOFFER-а.
Замисъла е по-този начин да мога да вида дали няма и друг DHCP сървър в сегмента.
До сега имах няколко идеи , които за съжаление не сработиха:
1-во) най-простото което ми дойде на ум - да сетна на една от двете машени грешен
мак адрес на другата - но това се оказа глупост
2-ро)  на клиент-а да забрана мак адреса на сървъра (което не успях да разгадая защо не сработи)

Така когато tcpdump-вам на клиента , пакета който получавам от сървъра е :

root@client:#tcpdump -n -vvv -e ether src AA:AA:AA:AA:AA:AA

14:24:27.035903 aa:aa:aa:aa:aa:aa > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 56: arp who-has 192.168.0.204 tell 192.168.0.1
14:24:27.111681 aa:aa:aa:aa:aa:aa > cc:cc:cc:cc:cc:cc, ethertype IPv4 (0x0800), length 352: IP (tos 0x10, ttl  16, id 0, offset 0, flags [none], length: 338) 192.168.0.1.67 > 192.168.0.204.68: BOOTP/DHCP, Reply, length: 310, xid:0x75001471, flags: [none] (0x0000)
          Your IP: 192.168.0.204
          Server IP: 192.168.0.1
          Client Ethernet Address: cc:cc:cc:cc:cc:cc [|bootp]
...
Като aa:aa:aa:aa:aa:aa - е мак адреса на сървъра , а сс:сс:сс:сс:сс:сс на клиент-а

Нещото което не разбирам е защо следното правило не сработва:
iptables -A INPUT -m mac --mac-source aa:aa:aa:aa:aa:aa -j DROP
Правилото се инсъртва без проблеми , няма нишо друго във firewall-а , default политиките са ACCEPT и даденото правило НЕ матчва нищо и пакета си минава
 0 0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           MAC aa:aa:aa:aa:aa:aa

Дайте малко акъл как да го направя това .. значи другия вариант е да забранявам на сървъра , той е със FreeBSD с pf  като firewall , който няма възможност да матчва по мак адрес (поне аз не успях да открия в документацията му) , друго за който се сещам е с ipfw2 пак на сървъра , там поне има възможност за матч по мак адрес , но пък трябва да прекомпилирам кърнъла за да пусна съпорт-а за ipfw2
3-то което ми идва на ум , е ако мога някак си в самия конфиг файл на dhcp сървъра да му кажа да не отговаря на заявки от даден мак адрес


Титла: DHCP filtering problem
Публикувано от: the_real_maniac в Apr 05, 2005, 15:50
0.Интересно, но защо ли си мисля* , че dhcp клиента (самата програма -> dhcp3 и т.н)  може да ти покаже съществуващите dhcp сървъри.

*  - може и да греша ;)

1.Когата има повече от 1 dhcp сървър в една мрежа и двата не са настроени, така че да работят заедно* то би трябвало да настъпят не малко каши - или не малко оплакваня към съотв. админ ,че "нямам мрежа" , "нямам интернет" и т.н , и т.н. ?

* - т.е да се съобразяват един с друг (това си е играчка на администратора).

2. Ами не е друго решение, на dhcp сървър-а да забраниш дадения mac адрес на клиента :?

Относно това правило - ами наистина си изглежда наред, но пробвай го в -t mangle -A PREROUTING веригата. (т.е още най-най- в началото да го спреш).


Виж и това, макар и да е много старо (2001):

Цитат

UBJECT  : Bug in Linux 2.4 / iptables MAC match module
SUMMARY  : MAC match module does not match small packets
EFFECTS  : Malicious users may bypass MAC-based DROP rules
           pcAnywhere does not function correctly if allowed by MAC address
SOLUTION : Apply the attached patch from Harald Welte, Netfilter core
           developer, or wait for the next release of the Linux kernel


http://www.netfilter.org/security/2001-09-26-mac.html

3.Виж дали въобще отчита нещо правилото

#iptables -t filter -L INPUT -v

Успех.


Титла: DHCP filtering problem
Публикувано от: VladSun в Apr 05, 2005, 18:07
Най-вече виж в резултатат от листа дали преди твоите правила няма правило, което да ACCEPT-ва заявките. Знам, че си написал, че няма ама все пак ...

Пробвай:

Примерен код

iptables -I INPUT -m mac --mac-source aa:aa:aa:aa:aa:aa -j DROP


ПС: Доста тъпо ще е, ако мак-мача прави разлика м/у малки и големи букви, ама знае ли се :) Пробвай :)


Титла: DHCP filtering problem
Публикувано от: в Apr 05, 2005, 18:18
Хмм , не става и в mangle веригата когато е  . Пак същия резултат.
М/у другото попадна на подобен проблем с тъпото умозаключение :
https://lists.netfilter.org/piperma....78.html
.....
dhcpd takes and puts packets by netlink sockets which bypass the whole
IP stack. So in short, you cannot filter the requests nor the response.
.....


Титла: DHCP filtering problem
Публикувано от: в Apr 06, 2005, 17:39
... И все пак може ли това което искам да стане да се направи в конфига на dhcp server-a (isc ползвам) ?


Титла: DHCP filtering problem
Публикувано от: zarhi в Apr 13, 2005, 08:31
Ако идеята ти е да търсиш неоторизирани DHCP сървъри в лан-а има 2 начина:

1. http://www.net.princeton.edu/software/dhcp_probe/ - аз не успях да го подкарам под линукс.

2. http://udhcp.busybox.net/ - клиента е така написан, че доста лесно може да се модифицира да покаже всички DHCP сървъри които отговорят и да не променя конфигурацията на лан картата. Аз бях добавил един exit(0); веднага след изпращането на DHCPDISCOVERY пакета. Пускаш 2 конзоли, в едната гледаш с tcpdump, в другата пускаш модифицирания клиент да изпрати DHCPDISCOVERY.

Има и 3-ти вариант но е за бозата. Потърси в google Dhcploc.exe.