Czy istnieje sposób, aby zalogować się do pliku wszystkich połączeń wychodzących, które tworzy proces? Wiem o netstat
tym, 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.
watch -n 2 netstat
międzyczasie możesz zrobić coś takiego , ale to nie jest właściwe rozwiązanie.Odpowiedzi:
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
auditctl
stronę podręcznika man lub ten samouczek lub inne przykłady na tej stronie . Wauditd
razie potrzeby zainstaluj pakiet dystrybucjiDzienniki znajdują się we
/var/log/audit/audit.log
wszystkich znanych mi dystrybucjach. Możesz je również przeszukiwać za pomocąausearch
.źródło
auditctl -d exit,always -S connect
less /var/log/audit/audit.log
Jeśli możesz zainstalować niestandardowe jądro, powinieneś spojrzeć na SystemTap . Istnieje wiele przykładów śledzenia aktywności w sieci.
źródło
W systemie Linux możesz
ip_conntrack
tego 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.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.
źródło
Chciałbym rozważyć użycie
tcpdump
interfejsu wychodzącego, patrząc naSYN
żądania wychodzące .Jeśli czujesz się naprawdę ryzykowny, możesz zrobić narzędzia takie jak:
strace
lubtruss
zgłosić wszystkieconnect
wywołania systemowe podczas śledzenia wykonania programu, ale jest to nieco bardziej niebezpieczne i ma wady w przypadku procesów wielowątkowych.źródło