Автор Тема: Arpwatch-db  (Прочетена 5787 пъти)

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Arpwatch-db
« Отговор #15 -: Apr 14, 2008, 23:44 »
Има един лаф за това как който не разбирал от юникс го преоткривал сам, само че не съм съгласен, предпочитам да преоткривам '<img'>
Активен

"Knowledge is power" - France is Bacon

tarator

  • Напреднали
  • *****
  • Публикации: 849
    • Профил
Arpwatch-db
« Отговор #16 -: Apr 15, 2008, 00:09 »
gateway,

> pid = waitpid((pid_t)0, &status, WNOHANG);

Няма да се погрижи за форкнатия процес в общия случай. Заради WNOHANG. Най-мързеливия начин е да обработваш SIGCHLD.

P.S. Сега прочетох кода и видях, че waitpid е в handler-a на SIGCHLD. Аз лични бих сложил -1 вместо 0 като първи аргумент.



Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

teleport

  • Напреднали
  • *****
  • Публикации: 134
    • Профил
Arpwatch-db
« Отговор #17 -: Apr 15, 2008, 09:29 »
Цитат
Проблемът идва оттам, че юзърспейския процес, дали чрез libpcap, дали чрез отваряне на някакъв по-специален raw сокет, успява да тормози достатъчно много процесора, занимавайки се със всеки пристигнал пакет.
Тука вече не съм съгласен. Кернела така или иначе се занимава със всеки пристигнал пакет, копирайки го няколко пъти в паметта eth0->arptables->iptables->routing->iptables->tc(htb)->eth1. libpcap вади копие на пакета който те интересува ( все пак се сетва филтър в кернела ) в един буфер. Не го ли вземеш навреме тоя пакет от userspace следващия го презаписва, няма буфериране на повече от 1 пакет в кернела.

Ето извадка от мой рутер:

# uptime
 08:35:45 up 59 days, 21:24,  1 user,  load average: 0.01, 0.01, 0.00

# sar -I 66 1 5 | grep Average
Average:           66  15533.89

# ps ax // само процесите които са натрупали cpu
  PID TTY      STAT   TIME COMMAND

 2033 ?        Ss     1:13 syslogd -m 0
 2075 ?        Ss     0:00 /usr/sbin/zebra -d -A 127.0.0.1 -f /etc/quagga/zebra.conf
 2170 ?        Ss     0:14 /usr/sbin/sshd
 6166 ?        Ss     2:03 /usr/sbin/ospfd -d -A 127.0.0.1 -f /etc/quagga/ospfd.conf
18633 ?        Sl     0:18 /usr/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a
18685 ?        Ssl   15:25 /usr/sbin/named -u named -c /etc/named.caching-nameserver.conf -t /var/named/chroot

27590 ?        Ss     0:00 /sbin/zdhcp -i eth1

Последното е демон който аз съм писал и слухти активно за dhcp сървъри е сегмента. Ползва libpcap и бълва dhcp заявки на всеки 10 сек. Вика с fork php скрипт, който вкарва инфото в mysql база, праща майл, прави лог и при определени случаи се конектва към управляеми switch-ове и филтрира проблемния потребител. За 2 месеца работа използваното cpu е 0:00, а това е рутер в сегмент с 2 class C мрежи, който кара 400+ Mbit, филтрира и шейпи.

Същия демон, само че с libpcap в promics mode пребива рутера в пикови моменти. Има прекалено много начини една мрежа да се изкара от "switched" режим, даже и без зложелателна умисъл. Разликата е дали лан картата хардуерно ще игорира трафика който не е за нея, или в кернела ще се изсипят 80000+ пакета/сек, 2/3 от които кернела така или иначе трябва да дропне, но все пак ще приеме и обработи.

Става въпрос за X7SBI с Core2Quad, 1Gb ram, Centos5 2.6.18-53.
« Последна редакция: Dec 01, 2008, 11:51 от neter »
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Arpwatch-db
« Отговор #18 -: Apr 15, 2008, 10:06 »
В случаят този трафик се рутира през твоята машина и да, в този случай има голямо значение колко трафик е предназначен за теб и колко не е '<img'>

Продължавам да твърдя обаче, че в случаят проблемът не е от promisc режима, а от факта, че pcap създава един RAW PF_PACKET сокет, на който постоянно има i/o и процесът, който го е отворил стои в runqueue-то през повечето време.

Предполагам че голямото натоварване се отразява също чрез висок system (kernel) usage, но въпреки това (предполагам), ако пуснеш top, няма да видиш голяма разлика в hardware IRQ/softirq натоварването. Т.е load-а не идва от повечето прекъсвания поради повече приети от драйвера пакети, а идва оттам че има много сокет операции.

П.С и друго: пробвал ли си се да вкараш интерфейсa в promisc режим, но без да пускаш pcap-ските неща? Тогава дали се смазва от работа машината?



Активен

"Knowledge is power" - France is Bacon

teleport

  • Напреднали
  • *****
  • Публикации: 134
    • Профил
Arpwatch-db
« Отговор #19 -: Apr 15, 2008, 11:04 »
Пробвал съм... и съм виждал как пристигат над 120 хиляди пакета/сек. В такива случаи нищо вече не помага, нито napi, нито какъвто и да било tunning на e1000 картите.

В моя случай napi е пуснат и прекъсванията са ограничени до 20000 на лан карта.

// sorry че стана много offtopic



Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Arpwatch-db
« Отговор #20 -: Apr 15, 2008, 11:35 »
Добре де, защо има толкова повече трафик? Не мога да си го обясня това '<img'>
Активен

"Knowledge is power" - France is Bacon

teleport

  • Напреднали
  • *****
  • Публикации: 134
    • Профил
Arpwatch-db
« Отговор #21 -: Apr 15, 2008, 11:52 »
Излизане на етернет сегмента от "switch" режим. На евтините switch-ове пише 1k/2k mac table. И повечето хора си мислят "аз имам 500 юзера в сегмента, всичко е наред"... Само дето не е така. 2k означава че switch-а има 2 килобайта рам за мак адреси. 1 мак адрес + информацията на кой порт е видян последно + кога е видян последно са поне 8 байта. При 2к таблица това са 256 mac-а. И при превишаване на активните в сегмента мак адреси, целия сегмент на влиза в един идиотски "hub" режим, при който всеки почва да получава на моменти трафик, непредназначен за него... Съответно рутера, който е вързан на gbit в сегмента и е на разстояние макс 2 switch-a от всеки краен потребител го отнася най-много.

В нормален режим лан картата хардуерно игнорира всички пакети които не са за нея, не са broadcast или multicast ( поне e1000 го прави). В promisc всичко се подава на кернела. Съответно system на 100% на ядрото обработващо прекъсването на лан картата. Почват дропове на пакети, трафика рязко пада, рутера се съвзема, трафика скача пак и т.н.
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Arpwatch-db
« Отговор #22 -: Apr 15, 2008, 12:14 »
500 хоста...в един етернет сегмент?!?  ':huh:'

Сигурно  ARP трафика е зловещ при това положение '<img'>
Активен

"Knowledge is power" - France is Bacon

teleport

  • Напреднали
  • *****
  • Публикации: 134
    • Профил
Arpwatch-db
« Отговор #23 -: Apr 15, 2008, 16:43 »
1.5 до 2kbytes/sec броадкасти и мултикасти. Това на машина която не генерира локален трафик и е в promisc режим. Скочи ли над 5kbytes/sec дига аларма и съответно се реагира.
Активен

h7d8

  • Напреднали
  • *****
  • Публикации: 197
  • Distribution: Debian;Ubuntu
  • Window Manager: Gnome
    • Профил
Re: Arpwatch-db
« Отговор #24 -: Dec 31, 2008, 01:01 »
edmon ,как реши проблема с ненужните съобщения ,които се извличат и записват в хтмл-а.
----
Dec 31 02:20:19 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 30 22:20:01 cyberlan /USR/SBIN/CRON[11205]: (root) CMD (arpwatch2html.pl -col=tmi -sort=time -out=/var/www/arpwatch.htm)
----
Искам да премахна  "arpwatch: execl: /usr/sbin/sendmail: No such file or directory" т.е да не се мъчи винаги да прати мейл.И от там всичко само за "arpwatch:" да се логва в отделен файл не в съслог (мисля ,че ще мога да го закрепя ,но все пак споменавам).
Преди време го подкарах ,но резултата беше една грозна гледка.Всичко нахварлено..В момента преглеждам из интернет дали някой не е написал нещо по темата. ;)
« Последна редакция: Dec 31, 2008, 04:11 от h7d8 »
Активен

ANTIADMIN

  • Напреднали
  • *****
  • Публикации: 660
  • Distribution: Windows XP Pro latest updates
  • ANTIADMIN
    • Профил
Re: Arpwatch-db
« Отговор #25 -: Dec 31, 2008, 02:58 »
Излизане на етернет сегмента от "switch" режим. На евтините switch-ове пише 1k/2k mac table. И повечето хора си мислят "аз имам 500 юзера в сегмента, всичко е наред"... Само дето не е така. 2k означава че switch-а има 2 килобайта рам за мак адреси. 1 мак адрес + информацията на кой порт е видян последно + кога е видян последно са поне 8 байта. При 2к таблица това са 256 mac-а. И при превишаване на активните в сегмента мак адреси, целия сегмент на влиза в един идиотски "hub" режим, при който всеки почва да получава на моменти трафик, непредназначен за него... Съответно рутера, който е вързан на gbit в сегмента и е на разстояние макс 2 switch-a от всеки краен потребител го отнася най-много.

В нормален режим лан картата хардуерно игнорира всички пакети които не са за нея, не са broadcast или multicast ( поне e1000 го прави). В promisc всичко се подава на кернела. Съответно system на 100% на ядрото обработващо прекъсването на лан картата. Почват дропове на пакети, трафика рязко пада, рутера се съвзема, трафика скача пак и т.н.
И аз се бутам тука между шамарите, но това вече не е така. Новите switch-ове не дават да напълниш таблицата и няма как да го накараш да мине в "хъб" режим. А ако може, много лесно се намира от кой порт и съответно мак е пращал шегаджията. Пропускаш, че новите switch-ове си оставят резервно място и постоянно трият преди да достигнат края и съотвено да се препълнят. Не съм го смятал, не съм го тествал, не ми се яде бой, не съм системен администратор, но така съм чел. Това са стари работи отпреди 10 години. ;D
Това за което може да си прав е къв switch на колко хоста се слага и се препълва наведнъж, но пак ще ги трие и ще има проблеми, т.е. ще се разбере, че нещо не е наред и не работи, но не съм го смятал както казах. Тогава е виновен тоя дето е избрал switcha.
« Последна редакция: Dec 31, 2008, 03:00 от por4e2 »
Активен

h7d8

  • Напреднали
  • *****
  • Публикации: 197
  • Distribution: Debian;Ubuntu
  • Window Manager: Gnome
    • Профил
Re: Arpwatch-db
« Отговор #26 -: Dec 31, 2008, 04:28 »
Става дума за това ,което за мен е доста досадно.Незнам дали винаги се случва така ,че се опитвам да го подкарам по това време ,но уви :o .
пс: Буха всичко в съслог.лог и затова излизат някои от тези съобщения.Добре ще е да пише в собствен лог (арплог) примерно.Надявам се на някой ,който е закрепил положението.  [_]3

Код:
Recent history
Dec 30 22:20:01 cyberlan /USR/SBIN/CRON[11205]: (root) CMD (arpwatch2html.pl -col=tmi -sort=time -out=/var/www/arpwatch.htm)
Dec 30 23:20:01 cyberlan /USR/SBIN/CRON[11424]: (root) CMD (arpwatch2html.pl -col=tmi -sort=time -out=/var/www/arpwatch.htm)
Dec 31 00:20:01 cyberlan /USR/SBIN/CRON[11590]: (root) CMD (arpwatch2html.pl -col=tmi -sort=time -out=/var/www/arpwatch.htm)
Dec 31 00:46:30 cyberlan arpwatch: Running as uid=102 gid=105
Dec 31 00:46:30 cyberlan arpwatch: listening on eth0
Dec 31 01:20:01 cyberlan /USR/SBIN/CRON[11813]: (root) CMD (arpwatch2html.pl -col=tmi -sort=time -out=/var/www/arpwatch.htm)
Dec 31 02:03:41 cyberlan arpwatch: Running as uid=102 gid=105
Dec 31 02:03:41 cyberlan arpwatch: listening on eth0
Dec 31 02:03:46 cyberlan arpwatch: new station 192.168.1.2 0:13:d4:4a:79:38 eth0
Dec 31 02:03:46 cyberlan arpwatch: new station 192.168.1.1 0:1e:4c:45:f7:c3 eth0
Dec 31 02:03:46 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 31 02:03:46 cyberlan arpwatch: reaper: pid 11946, exit status 1
Dec 31 02:03:46 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 31 02:03:46 cyberlan arpwatch: reaper: pid 11947, exit status 1
Dec 31 02:04:09 cyberlan arpwatch: Running as uid=102 gid=105
Dec 31 02:04:09 cyberlan arpwatch: listening on eth1
Dec 31 02:04:25 cyberlan arpwatch: new station 192.168.2.7 0:1b:fc:16:ad:4c eth1
Dec 31 02:04:25 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 31 02:04:25 cyberlan arpwatch: reaper: pid 11964, exit status 1
Dec 31 02:04:27 cyberlan arpwatch: new station 192.168.2.100 0:19:66:39:3e:98 eth1
Dec 31 02:04:27 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 31 02:04:27 cyberlan arpwatch: reaper: pid 11965, exit status 1
Dec 31 02:04:27 cyberlan arpwatch: new station 192.168.2.5 0:14:78:c6:f1:2c eth1
Dec 31 02:04:27 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 31 02:04:27 cyberlan arpwatch: reaper: pid 11966, exit status 1
Dec 31 02:04:27 cyberlan arpwatch: new station 192.168.2.8 0:14:78:ec:6f:58 eth1
Dec 31 02:04:28 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 31 02:04:28 cyberlan arpwatch: reaper: pid 11967, exit status 1
Dec 31 02:04:34 cyberlan arpwatch: new station 192.168.2.1 4c:0:10:60:30:f5 eth1
Dec 31 02:04:34 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 31 02:04:34 cyberlan arpwatch: reaper: pid 11968, exit status 1
Dec 31 02:04:34 cyberlan arpwatch: new station 192.168.2.99 0:1d:d9:64:77:1d eth1
Dec 31 02:04:35 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 31 02:04:35 cyberlan arpwatch: reaper: pid 11969, exit status 1
Dec 31 02:04:41 cyberlan arpwatch: new station 192.168.2.102 0:e0:4c:4:23:30 eth1
Dec 31 02:04:41 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 31 02:04:41 cyberlan arpwatch: reaper: pid 11970, exit status 1
Dec 31 02:04:42 cyberlan arpwatch: new station 192.168.2.101 0:3:d:38:b8:d0 eth1
Dec 31 02:04:42 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
Dec 31 02:04:42 cyberlan arpwatch: reaper: pid 11971, exit status 1
Dec 31 02:05:10 cyberlan arpwatch: new station 192.168.2.111 0:f:ea:5e:e9:79 eth1
Dec 31 02:05:10 cyberlan arpwatch: execl: /usr/sbin/sendmail: No such file or directory
 
Активен

zeridon

  • Killmode enabled
  • Administrator
  • Напреднали
  • *****
  • Публикации: 1398
  • Distribution: Debian/Ubuntu
  • Window Manager: console/Gnome
  • BOfH
    • Профил
    • WWW
Re: Arpwatch-db
« Отговор #27 -: Dec 31, 2008, 10:47 »
инсталирай някакъв mailx примерно и сложи един правилен alias kъм /dev/null за да не ти замине диска или просто редактирай файлчето дето е дадено в първия пост и коментирай exec-a
Активен

Внмимавай имам клещи за кабел
http://www.netsecad.com/
http://theregister.co.uk/odds/bofh/

h7d8

  • Напреднали
  • *****
  • Публикации: 197
  • Distribution: Debian;Ubuntu
  • Window Manager: Gnome
    • Профил
Re: Arpwatch-db
« Отговор #28 -: Dec 31, 2008, 16:35 »
инсталирай някакъв mailx примерно и сложи един правилен alias kъм /dev/null за да не ти замине диска или просто редактирай файлчето дето е дадено в първия пост и коментирай exec-a

Прерових файловете ,но не намерих ред в който да коментирам exec.В /etc/init.d/arpwatch има редове ,обаче мисля не са свързани с това( след коментиране показва това при рестарт на дем. "Starting Ethernet/FDDI station monitor daemon: (chown arpwatch /var/lib/arpwatch/eth1.dat) start-stop-daemon: --start needs --exec or --startas
" ).То се опитва да праща мейл винаги ,когато засече..т.е то се вижда в лога. :) Принципно командата -м е да праща репорт ,но не е въведена никъде както в дефолт конфа така и в моя.
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
arpwatch
Хардуерни и софтуерни проблеми
VladSun 8 2698 Последна публикация May 18, 2005, 10:46
от kolio_kolev
arpwatch
Настройка на програми
h7d8 4 1900 Последна публикация Dec 01, 2008, 11:38
от VladSun