Мониторинг состояния порта в Linux [закрыто]

Я хочу отслеживать список используемых портов в системе Linux. Я хочу создать сценарий, который может запускать предупреждение, когда новый порт работает или не работает. Например, когда порт 8080 активен, я получаю предупреждение: этот порт используется процессом xxx. Когда он снова упадет, я хочу получить еще одно предупреждение.

Как я могу это сделать? netstat, nmap и iptables показывают используемые порты в точное время, но я хочу обновить то, что именно произошло.

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

-1
задан 30 September 2013 в 15:35
2 ответа

Получить эту информацию немного сложно. Этот конкретный способ будет регистрировать информацию о вызове системного вызова bind (2). Это предварительный вызов для фактического начала приема соединений (процесс-демон обычно вызывает прослушивание, а затем принимает после этого). Здесь используется функция аудита Linux (поэтому для этого потребуется запустить auditd)

В audit.rules;

-a exit, всегда -F arch = b64 -S bind

Затем в audit.log мы будем иметь строки вроде:

type=SYSCALL msg=audit(1380535439.187:560): arch=c000003e syscall=49 success=yes exit=0 a0=8 a1=9c1ce0 a2=10 a3=7fffd8000050 items=0 ppid=3021 pid=3022 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4 comm="nginx" exe="/usr/sbin/nginx" key=(null)
type=SOCKADDR msg=audit(1380535439.187:560): saddr=02001F90000000000000000000000000

Первая строка (type = SYSCALL syscall = 49) относится к вызову привязки (как в /usr/include/asm/unistd_64.h , следующая (type = SOCKADDR) фактически декодирует / отображает аргумент к нему: 0200 1F90 00000000 0000000000000000

  • сначала семейство адресов (2 байта) (в собственном порядке) (02 - AF_INET)
  • затем номер порта (2 байта) (в сетевом порядке) (0x1f90 = 8080)
  • затем , IP-адрес (4 байта) (также в сетевом порядке) (0.0.0.0 означает прослушивание на всех интерфейсах)
  • остальное не имеет значения (дополнение)

Итак, осталось написать сценарий, который завершает этот файл и декодирует / отправляет уведомления при возникновении соответствующего события.

1
ответ дан 5 December 2019 в 19:59

Периодически запускать fuser 8080 / tcp && openalertscript || closedalertscript 1-я команда вернет PID процессов, связанных с этим сокетом.

0
ответ дан 5 December 2019 в 19:59

Теги

Похожие вопросы