Strona 1 z 1
skryp w bashu do tcpdump
: 22 listopada 2010, 15:07
autor: Andros
Witam,
Chciałbym logować ruch w sieci lan za pomocą tcpdumpa żeby wszystko zapisywało się do plików tekstowych. Czyli np. ogólnie coś takiego:
Mam pytanie, jak napisać skrypt, który przykładowo codziennie o 12 w nocy będzie tworzył nowy plik z dzisiejszą datą, w którym będą zapisywane informacje z tcpdumpa? Dobrze by było oczywiście żeby nic nie było nadpisywane tylko codziennie nowy plik.
: 22 listopada 2010, 16:45
autor: lun
Oto co musisz zrobić:
1. Skrypt do robienia ctpdumpa
Kod: Zaznacz cały
#!/bin/sh
DATA=`date +%Y-%m-%d_%H:%M`
tcpdump > /lokalizacja/tcpdump.$DATA.log
2. Dodanie go do crontaba
Kod: Zaznacz cały
crontab -e
SHELL=/bin/sh
59 23 * * * /lokalizacja_skryptu/nazwa_skryptu.sh
Pisane na szybko więc może gdzieś być błąd :-)
: 22 listopada 2010, 19:09
autor: lessmian2
A nie prościej po prostu w cronie dać:
Kod: Zaznacz cały
59 23 * * * /usr/sbin/tcpdump -jakieś-opcje -w /gdzieśtam/tcpdump.`/bin/date +\%Y-\%m-\%d`.log
Nie przekonuje mnie pisanie skryptu zawierającego jedną linię (i shebang), a następnie dodanie go do crona - to już trzy linie
Zapisywanie przy pomocy
-w plik ma tą zaletę, że taki plik można potem analizować za pomocą graficznego
wiresharka czy znów
tcpdumpem. No chyba, że bardzo chcesz mieć czysty tekst w pliku do dalszej obróbki np. sedem.
: 23 listopada 2010, 09:22
autor: lun
Każdy ma swoje podejście do tematu. Ja np. wolę w cronie trzymać tylko linki do właściwych skryptów (choćby to miała być tylko jedna linijka). Moim zdaniem poprawia to trochę przejrzystość crontaba przy większej liczbie ustawionych zadań :-)
: 23 listopada 2010, 15:24
autor: Andros
Zrobilem tak jak kolega lun napisal, tworzy mi o 12 nowy plik ale te pliki sa puste. Oczywiscie korzystam w trakcie z przegladarki :/
#!/bin/sh
DATA ='date +%Y-%m-%d_%H:%M'
tcpdump -i eth0 dst port 80 \and tcp\[tcpflags\]\=tcp-syn >> /root/tcpdump_lan.$DATA.log
dodam ze jesli wkleje polecenie z bezposrednio w konsoli to na konsoli wyswietla wszytstko ok ale do pliku nie chce :/
co jest nie tak ?
: 23 listopada 2010, 16:36
autor: lun
Sprawdziłem sobie na przykładzie polecenia ping i takie proste przekierowanie działa.
Rozumiem, że wszystko uruchamiasz jako root lub na prawach roota?
Edycja:
A czy czasem w tej linijce:
masz apostrofy? Z tego co widzę tak (chyba, że pomyliłeś się przy pisaniu).
Zobacz różnicę między ' a `.
Spróbuj najpierw zrobić sobie przekierowanie czegoś najprostszego, czyli wydaj w konsoli polecenie:
a potem ping chociażby adresu Google. Sprawdź potem zawartość pliku. Jeśli wszystko jest w porządku, to dodaj to proste polecenie do skryptu i wykonaj skrypt. Jeśli dalej jest wszystko w porządku dodawaj kolejne opcje do tcpdumpa i sprawdzaj wyniki. Zrobisz sobie w ten sposób debugowanie i będziesz wiedział, w którym miejscu coś działa źle.
: 23 listopada 2010, 18:56
autor: grzesiek
lun pisze:Oto co musisz zrobić:
1. Skrypt do robienia ctpdumpa
Kod: Zaznacz cały
#!/bin/sh
DATA=`date +%Y-%m-%d_%H:%M`
tcpdump > /lokalizacja/tcpdump.$DATA.log
2. Dodanie go do crontaba
Kod: Zaznacz cały
crontab -e
SHELL=/bin/sh
59 23 * * * /lokalizacja_skryptu/nazwa_skryptu.sh
Pisane na szybko więc może gdzieś być błąd :-)
Ładnie, co dobę nowe wywołanie tcpdump ale gdzie jest kończona praca poprzedniej instancji?
Dziwne, żeby tcpdumpa do tego używać. Nie lepiej serwera proxy uruchomić?
: 25 listopada 2010, 12:32
autor: Andros
Testowałem troszkę i wiem w czym leży problem. Cron wykona mi podaną frazę z tcpdumpem ale nie uruchomi go w taki sposób aby pracował przez cały dzień.
Po prostu wykona polecenie:
ale tylko raz, tak jakby na jedną sekundę i zakończy pracę. Mnie chodzi oczywiście aby zapisywał logi przez cały dzień a następnego dnia tworzył nowy plik itd. Ma ktoś pomysł jak to rozwiązać? Może podrzuci ktoś rozwiązanie w jaki sposób mogę zrobić tak aby codziennie był tworzony jeden plik, w którym będzie zapisany cały ruch jaki przeszedł przez kartę seciową i trafił na port 80 (logowanie przeglądarki). Nie musi to być tcpdump może jakieś inne pomysły?
Proszę o pomoc.
Dodane:
Jakieś pomysły?
: 02 grudnia 2010, 12:47
autor: lun
Wpadł mi do głowy jeszcze pomysł z komendą nohup - ale nie testowałem.
: 03 grudnia 2010, 16:00
autor: Andros
lun, jak przeczytałem Twoją odpowiedz myślałem, że znalazłem rozwiązanie ale niestety sytuacja jest identyczna jak przy zwykłym wywołaniu bez nohup.
Próbowałem oczywiście też różnych kombinacji z ampersandem (&) i nadal nic.