использование twist в hosts.allow [закрыто]

В конце моего hosts.allow у меня есть следующее:

ALL : ALL \
 : spawn (echo  "%d" | /usr/bin/mail -s "tcpf\: %d attempt from %h." root) & \
 : severity auth.info \
 : twist /bin/echo "You are not welcome to use %d from %h."`

Но это, похоже, просто помещает этот текст в мой auth.log:

mail sshd[63546]: twist 12.34.56.789 to /bin/echo "You are not welcome to use sshd from 12.34.56.789."

На стороне клиента я вижу только "Connection closed by remote host" и не вижу вывода echo. В man -k twist

1
задан 16 August 2017 в 10:39
1 ответ

На странице руководства для hosts_options (5) объясняется команда twist в tcp_wrappers:

twist shell_command

Заменить текущий процесс на экземпляр указанной команды оболочки после выполнения% раскрытий, описанных на странице руководства hosts_access (5) . Stdin, stdout и stderr подключены к клиентскому процессу. Эта опция должна стоять в конце правила.

Проблема в том, что SSH - это не просто текстовый протокол, но он ожидает некоторых протокольных сообщений, и если он их не получит, он завершится ошибкой. Если вы запустите ssh в режиме отладки ( ssh -v ), вы увидите следующее:

debug1: Local version string SSH-2.0-OpenSSH_7.5
debug1: ssh_exchange_identification: You are not welcome to use sshd from ::1.

ssh_exchange_identification: read: Connection reset by peer

Итак, сообщение действительно отправлено, но поскольку оно было неправильным, SSH баннер, это не удается. Нет простого способа, как вставить ваши сообщения в протокол ssh. Возможно, вам придется принять такое поведение.

0
ответ дан 4 December 2019 в 04:43

Теги

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