Журнал підключень до програми


9

Окрім використання iptables для реєстрації вхідних з'єднань ..

Чи є спосіб увімкнути встановлені вхідні з'єднання до служби, для якої у вас немає джерела (припустимо, служба не записує такі речі самостійно)? Що я хочу зробити, це зібрати деяку інформацію на основі того, хто підключається, щоб мати змогу розповісти такі речі, як саме в який час дня послуга використовується найбільше, де в світі основна база користувачів тощо.

Я усвідомлюю, що можу використовувати netstatі просто підключити його до сценарію cron, але це може бути не точно, оскільки сценарій може працювати лише на хвилину.

Ось що я зараз думаю:

  • Напишіть програму, яка постійно опитується netstat, шукаючи встановлені зв’язки, які не з’явились у попередньому опитуванні. Ця ідея здається такою марною витратою процесорного часу, оскільки не може бути нового зв'язку.
  • Напишіть програму обгортки, яка приймає вхідні з'єднання на будь-якому порту, на якому працює служба, але тоді я не знаю, як передати це з'єднання до реального сервісу.

Редагувати: Мені просто спало на думку, що це питання може бути кращим для stackoverflow, хоча я не впевнений. Вибачте, якщо це неправильне місце.


Чому ви виключаєте використання iptables? На якому порті слухається наша програма?
користувач9517

Головним чином, тому що я хотів би мати більше контролю над веденням журналу. В ідеалі я просто хотів би мати можливість обробляти журнал, як я хочу, коли буде виявлено нове з'єднання. Будь-який порт. Існує не єдиний конкретний додаток, для якого я би використовував це, тому я не запитую, як занести щось углиб, наприклад, ім’я користувача чи щось подібне.
Зак

Ви можете використовувати iptables лише для реєстрації нових вхідних з'єднань у будь-який порт. Я роблю це, на пару ящиків. Тому я повторюю чудове запитання Іена: чому ви виключаєте використання iptables?
MadHatter

Чи можете ви розмістити проксі перед програмою? Він повинен бути лише дуже простим, який отримує запити, записує їх у журнал та передає їх далі. Ви можете перенести вхідний сигнал на проксі, який потім ретранслює програму на вихідний порт.
Джон Гарденєр

Відповіді:


4

Ви можете реєструвати нові з'єднання за допомогою iptables таким чином

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

Це додасть таке повідомлення для нового ssh-з'єднання

6 жовтня 10:58:23 ядро ​​centos: Нове з'єднання 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

або подібне для нового http-з'єднання

6 жовтня 11:03:56 ядро ​​centos: Нове з'єднання 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

і так далі для кожного нового підключення до вашої системи. Запис буде зареєстровано туди, куди налаштовано ваш syslog, щоб надсилати повідомлення kern.warning.


Після того, як більше роздивлятися навколо, цей спосіб, здається, є найкращим моїм ставкою. Я просто поєднаю це з rsyslog для входу в окремий файл. Дуже дякую за вашу інформативну відповідь Iain!
Зак

0

ви можете використовувати auditd і в кінці дня обчислити статистику на основі цих логін. Або ви також можете перейти до рішення snmp, але, ймовірно, у вас є власний mib


0

Як щодо tcpdump або wireshark?


Будь ласка, розгорніть свою відповідь ще трохи. Можливо, підказати користувачеві, як tcpdump та wireshark допоможуть вирішити проблеми.
Магеллан

посібник з tcpdump, за допомогою якого ви могли входити до повних пакетів. Ви також можете захоплювати пакети за допомогою tcpdump, а потім аналізувати їх у дротяній скарбі. tcpdump -i <interface> -s 65535 -w <some-file>Крім того, вам доведеться припинити захоплення з ^ C, коли ви вважаєте, що ви захопили достатню кількість пакетів.
Гунтіс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.