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

9

Кроме того, для использования iptables для входа входящих соединений ..

Есть ли способ регистрировать установленные входящие соединения со службой, к которой у вас нет источника (предположим, что служба сама не регистрирует подобные вещи)? То, что я хочу сделать, это собрать некоторую информацию, основанную на том, кто подключается, чтобы иметь возможность сказать, например, в какое время дня служба используется чаще всего, где в мире основная база пользователей и т. Д.

Я знаю, что могу использовать netstatи просто подключить его к скрипту cron, но это может быть неточно, так как скрипт может запускаться с частотой всего минуту.

Вот что я сейчас думаю:

  • Напишите программу, которая постоянно опрашивает netstat, ищет установленные соединения, которые не появлялись в предыдущем опросе. Эта идея кажется пустой тратой процессорного времени, так как не может быть нового соединения.
  • Напишите программу-обертку, которая принимает входящие соединения на любом порту, на котором работает служба, но тогда я не знаю, как передать это соединение реальной службе.

Редактировать: Мне пришло в голову, что этот вопрос может быть лучше для stackoverflow, хотя я не уверен. Извините, если это не то место.

Zac
источник
Почему вы исключаете использование iptables? Какой порт прослушивает наше приложение?
user9517
Главным образом потому, что я хотел бы иметь больше контроля над ведением журнала. В идеале я хотел бы иметь возможность обрабатывать протоколирование так, как я хочу, когда обнаруживается новое соединение. Любой порт. Это не единственное конкретное приложение, для которого я бы использовал это, поэтому я не спрашиваю, как записать что-либо подробно, например, имя пользователя или что-то в этом роде.
Зак
Вы можете использовать iptables только для регистрации новых входящих подключений к любому порту. Я делаю это на паре коробок. Итак, я повторяю отличный вопрос Iain: почему вы исключаете использование 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

и так далее для каждого нового подключения к вашей системе. Будет зарегистрировано, где ваш системный журнал настроен на отправку сообщений kern.warning.

user9517
источник
После того, как я все больше оглядываюсь, этот путь кажется мне лучшим выбором. Я просто объединю это с rsyslog для входа в отдельный файл. Большое спасибо за ваш информативный ответ Iain!
Зак
0

Вы можете использовать audd и в конце дня вычислить некоторую статистику на основе этих логов. Или вы могли бы также перейти к решению SNMP, но, вероятно, вы должны написать свой собственный MIB

Николайдис Фотис
источник
0

Как насчет tcpdump или wireshark?

Гунтис
источник
Пожалуйста, расширьте свой ответ немного больше. Возможно, предлагая пользователю, как tcpdump и wireshark могут помочь в устранении неполадок.
Магеллан
Руководство tcpdump с тем, что вы можете записывать полные пакеты. Вы также можете захватывать пакеты с помощью tcpdump и затем анализировать их в wireshark. tcpdump -i <interface> -s 65535 -w <some-file>Кроме того, вам придется прекратить захват с помощью ^ C, когда вы считаете, что захватили достаточно пакетов.
Гунтис