Rejestrowanie połączeń wychodzących, gdy się zdarzają

23

Czy istnieje sposób, aby zalogować się do pliku wszystkich połączeń wychodzących, które tworzy proces? Wiem o netstattym, ale wydaje się, że jest to raczej migawka z jakiegoś punktu w czasie, a nie coś, co uruchamia i rejestruje informacje przez pewien okres.

Potrzebuję tylko adresu IP lub nazwy hosta, portu i procesu nawiązywania połączenia.

Bogaty
źródło
1
W watch -n 2 netstatmiędzyczasie możesz zrobić coś takiego , ale to nie jest właściwe rozwiązanie.
Ulrich Schwarz
1
[Wątek] [1] powinien odpowiedzieć na twoje pytanie [1]: superuser.com/questions/34782/...
Alien Life Form
Zobacz także Jak dowiedzieć się, który plik jest obecnie zapisywany przez proces dostępu do plików
Gilles „SO - przestań być zły”

Odpowiedzi:

15

W systemie Linux można skonfigurować podsystem kontroli, aby rejestrował każdą próbę nawiązania połączenia sieciowego. Aby uzyskać informacje na temat podsystemu kontroli, przeczytaj auditctlstronę podręcznika man lub ten samouczek lub inne przykłady na tej stronie . W auditdrazie potrzeby zainstaluj pakiet dystrybucji

auditctl -A exit,always -S connect

Dzienniki znajdują się we /var/log/audit/audit.logwszystkich znanych mi dystrybucjach. Możesz je również przeszukiwać za pomocą ausearch.

Gilles „SO- przestań być zły”
źródło
3
Musiałem określić, który proces tworzy połączenie wychodzące. Zrobiło to natychmiast. Aby uniknąć zalania kłód, usuń regułę później:auditctl -d exit,always -S connect
Michael Hampton
Jak mogę sprawdzić dzienniki?
luckydonald
@luckydonaldless /var/log/audit/audit.log
Gilles 'SO- przestań być zły'
5

Jeśli możesz zainstalować niestandardowe jądro, powinieneś spojrzeć na SystemTap . Istnieje wiele przykładów śledzenia aktywności w sieci.

Lars Kotthoff
źródło
3

W systemie Linux możesz ip_conntracktego dokonać. Jest to moduł śledzenia połączeń, zwykle używany do monitorowania połączeń pod kątem dziwnie zachowujących się protokołów (takich jak FTP) zarządzanych przez zaporę ogniową / NAT.

modprobe ip_conntrack
cat /proc/net/ip_conntrack

Możesz grepować pseudoplik, aby zobaczyć ustanowione połączenia, a następnie grep źródłowy adres IP, aby zobaczyć, kiedy pochodzi on z twojego urządzenia.

Sean C.
źródło
Pytanie niekoniecznie musi dotyczyć Linuxa.
Karlson
0

Chciałbym rozważyć użycie tcpdumpinterfejsu wychodzącego, patrząc na SYNżądania wychodzące .

Jeśli czujesz się naprawdę ryzykowny, możesz zrobić narzędzia takie jak: stracelub trusszgłosić wszystkie connectwywołania systemowe podczas śledzenia wykonania programu, ale jest to nieco bardziej niebezpieczne i ma wady w przypadku procesów wielowątkowych.

Karlson
źródło