Запустить сценарий оболочки при подключении к порту 445

find. * -exec ll {} \;

Проходы ., и список не -скрытых файлов в текущем каталоге (, расширенный из *оболочкой ), включая подкаталог test(и, если какой-либо из эти файлы начинались с -или если был файл с именем !или (, )... это могло привести к тому, что findсообщил о синтаксической ошибке ).

Итак, вы говорите findискать файлы рекурсивно в ., а также в test. Таким образом, findнайдет testдважды, а также test/file123дважды.

llкоторый, я полагаю, представляет собой сценарий, который ls -lявляется инструментом для вывода сведений о файлах или для файлов типа каталога, сведений обо всех файлах в этом каталоге (, если вы не передадите параметр -d).

Таким образом, llбудет вызываться с ./testи testв качестве аргументов, и в этих случаях if будет перечислять детали файлов в своем содержимом (, включаяtest/file).

И он будет вызываться с ./test/file123и test/file123.

Вот вам бы:

find. -exec ls -ld {} +

(использование +означает, что в качестве аргументов для lsбудет передано более одного файла, что более эффективно, а также позволяет lsсортировать этот список файлов ).

Ваш findможет даже поддерживать предикат -ls, который ведет себя как список битовls -lsid:

find. -ls
0
25.12.2020, 21:30
2 ответа

Решение вашей проблемы очень старое, но не включает iptables. Он называется сервером inetd super -. Его конфигурация -/etc/inetd.conf -позволяет вам определить порт и протокол для прослушивания -«службы», определенной в /etc/services -, и программу, которая будет выполняться в случае аварии. соединение -, которое может быть вашим сценарием ведения журнала.

Услуга будет

microsoft-ds    445/tcp                         # Microsoft Naked CIFS
1
18.03.2021, 22:40

Вы не можете запускать программы или скрипты из IPtables, но вы можете регистрировать трафик, который приходит на какой-либо порт в IPtables.

Это будет регистрировать запись в системном журнале (/var/log/syslog в Debian )каждый раз, когда что-то приходит на порт 445 udp или tcp с префиксом журнала и подробностями о соединении (, меткой времени, исходным портом, исходный IP,...)

iptables -I INPUT -p tcp --dport 445 -j LOG --log-prefix "PORT 445 connnection!!"
iptables -I INPUT -p udp --dport 445 -j LOG --log-prefix "PORT 445 connnection!!"

Если вы хотите запустить какой-либо скрипт, когда что-то приходит на порт 445, вам потребуется использовать inetd, а в Debian 10 вы также можете использовать сокет systemd для запуска скрипта через службу, когда что-то приходит на порт 445.

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

1
18.03.2021, 22:40

Теги

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