Можно ли автоматически аутентифицировать telnet?

При использовании telnetlib я заметил несколько интересных переменных:

AUTHENTICATION = chr(37) # Authenticate
XAUTH = chr(41) # XAUTH
PRAGMA_LOGON = chr(138) # TELOPT PRAGMA LOGON
SSPI_LOGON = chr(139) # TELOPT SSPI LOGON

Кроме того, на этой странице перечислены некоторые RFC, которые описывают AUTHENTICATION вариант в деталях.

Если я правильно понимаю, если сервер Telnet поддерживает аутентификацию, я должен получить IAC DO AUTHENTICATION при подключении к нему. Однако при попытке подключиться к telnetd на компьютере с Linux я не получаю эту опцию и поэтому не могу отправить IAC WILL AUTHENTICATION,

Правильно ли мое понимание? Есть ли способ попросить сервер выполнить аутентификацию? Возможно ли даже аутентифицировать сеанс telnet автоматически? (без прослушивания "Логин:", "Имя пользователя:", "Пароль:" и аналогичных запросов)

1 ответ

Решение

Да, вы правильно понимаете RFC 1416. Сервер должен отправить DO во-первых, если он поддерживает аутентификацию. Вы можете попробовать отправить WILL в любом случае, но это будет против спецификации и, вероятно, не будет работать в любом случае.

Под Linux telnetd вы, вероятно, имеете в виду netkit telnetd. И насколько я могу видеть на его странице:

-a authmode Эта опция может использоваться для указания, какой режим должен использоваться для аутентификации. Обратите внимание, что эта опция полезна, только если telnetd был скомпилирован с поддержкой аутентификации, которая недоступна в текущей версии. [...]

Так что я бы просто сказал, что не может этого сделать. Я использую OpenBSD telnetd (telnet-bsd пакет в Gentoo); Кажется, у него есть некоторые биты аутентификации, но я не смог заставить его работать вообще. Я подозреваю, что он поддерживает только аутентификацию на основе Kerberos.

Глядя на список типов аутентификации в RFC 2941, кажется, что большинство типов аутентификации никогда не указывались. Глядя на те из них, DSS/DSA в основном интересен (он также используется в SSH), но я думаю, что будет действительно трудно найти совместимый сервер и клиент. К сожалению, похоже, что там не было предложений по простой (незашифрованной) аутентификации.

Итак, подведем итог: да, было бы возможно, если бы кто-то это реализовал. Но так как telnet практически мертв, я сомневаюсь, что вы найдете серверные реализации для этого. И даже если бы вы это сделали, вам бы пришлось самостоятельно писать на стороне клиента, что будет нелегко с поддерживаемыми схемами. Поэтому я сомневаюсь, что оно того стоит.

Другие вопросы по тегам