Rejestruj połączenia z programem

9

Poza tym do używania iptables do rejestrowania połączeń przychodzących.

Czy istnieje sposób na rejestrowanie ustanowionych połączeń przychodzących do usługi, do której nie masz źródła (załóżmy, że usługa nie rejestruje takich rzeczy samodzielnie)? Chcę zebrać pewne informacje na podstawie tego, kto się łączy, aby móc powiedzieć, o jakich porach dnia usługa jest najczęściej używana, gdzie na świecie jest główna baza użytkowników itp.

Wiem, że mogę użyć netstati po prostu podłączyć go do skryptu cron, ale może to nie być dokładne, ponieważ skrypt może działać tylko tak często, jak minutę.

Oto, co myślę teraz:

  • Napisz program, który stale odpytuje netstat, szukając nawiązanych połączeń, które nie pojawiły się w poprzedniej ankiecie. Ten pomysł wydaje się jednak stratą czasu na procesor, ponieważ może nie być nowego połączenia.
  • Napisz program opakowujący, który akceptuje połączenia przychodzące na dowolnym porcie, na którym działa usługa, ale wtedy nie wiedziałbym, jak przekazać to połączenie do prawdziwej usługi.

Edycja: Właśnie przyszło mi do głowy, że to pytanie może być lepsze w przypadku przepełnienia stosu, chociaż nie jestem pewien. Przepraszam, jeśli to niewłaściwe miejsce.

Zac
źródło
Dlaczego wykluczasz korzystanie z iptables? Który port nasłuchuje w naszej aplikacji?
user9517
Głównie dlatego, że chciałbym mieć większą kontrolę nad rejestrowaniem. Idealnie chciałbym móc obsługiwać rejestrowanie tak, jak chcę za każdym razem, gdy zostanie wykryte nowe połączenie. Dowolny port. Nie ma jednej konkretnej aplikacji, do której bym tego użył, dlatego nie pytam, jak zalogować coś dogłębnie, np. Nazwę użytkownika lub coś takiego.
Zac
Możesz użyć iptables tylko do rejestrowania nowych połączeń przychodzących do dowolnego portu. Robię to na kilku pudełkach. Powtarzam więc doskonałe pytanie Iaina: dlaczego wykluczasz korzystanie z iptables?
MadHatter
Czy umiesz umieścić proxy przed aplikacją? Musi być tylko bardzo prosty, który odbiera żądania, rejestruje je i przekazuje dalej. Możesz przekierować przychodzący sygnał do serwera proxy, który następnie przekaże do aplikacji na oryginalnym porcie.
John Gardeniers

Odpowiedzi:

4

W ten sposób możesz rejestrować nowe połączenia za pomocą iptables

iptables -I INPUT -m state --state NEW -j LOG --log-level 1 --log-prefix "New Connection "

Spowoduje to dodanie takiej wiadomości dla nowego połączenia ssh

6 października 10:58:23 centos jądro: Nowe połączenie IN = eth0 OUT = MAC = 00: 0c: 29: 5b: a5: ea: 00: 0c: 29: 2d: 94: a0: 08: 00 SRC = 192.168. 1,72 DST = 192.168.254.187 LEN = 52 TOS = 0x00 PREC = 0x00 TTL = 126 ID = 15498 DF PROTO = TCP SPT = 59221 DPT = 22 WINDOW = 8192 RES = 0x00 SYN URGP = 0

lub tak w przypadku nowego połączenia http

6 października 11:03:56 centos jądro: Nowe połączenie IN = eth0 OUT = MAC = 00: 0c: 29: 5b: a5: ea: 00: 0c: 29: d2: 2c: 38: 08: 00 SRC = 192.168. 254,188 DST = 192.168.254.187 LEN = 60 TOS = 0x10 PREC = 0x00 TTL = 64 ID = 10345 DF PROTO = TCP SPT = 52488 DPT = 80 WINDOW = 14600 RES = 0x00 SYN URGP = 0

i tak dalej dla każdego nowego połączenia z systemem. Zostanie on zalogowany do każdego miejsca, w którym jest skonfigurowany syslog do wysyłania komunikatów kern.warning.

użytkownik9517
źródło
Po dokładniejszym rozejrzeniu się ten sposób wydaje mi się najlepszym wyborem. Po prostu połączę to z rsyslog, aby zalogować się do osobnego pliku. Dziękuję bardzo za twoją pouczającą odpowiedź Iain!
Zac
0

możesz skorzystać z audytu i na koniec dnia obliczyć statystyki na podstawie tych logów. Lub możesz także przejść do rozwiązania snmp, ale prawdopodobnie masz już swój własny mib

Nikolaidis Fotis
źródło
0

Co powiesz na tcpdump lub wireshark?

Guntis
źródło
Proszę rozszerzyć nieco swoją odpowiedź. Być może sugerowanie użytkownikowi, w jaki sposób tcpdump i wireshark przyniosą korzyści w rozwiązywaniu problemów.
Magellan,
tcpdump manual, dzięki któremu można zalogować pełne pakiety. Możesz także przechwytywać pakiety za pomocą tcpdump, a następnie analizować je w wireshark. tcpdump -i <interface> -s 65535 -w <some-file>Dodatkowo będziesz musiał zakończyć przechwytywanie za pomocą ^ C, jeśli uważasz, że przechwyciłeś wystarczającą liczbę pakietów.
Guntis