Можно ли автоматически аутентифицировать 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 практически мертв, я сомневаюсь, что вы найдете серверные реализации для этого. И даже если бы вы это сделали, вам бы пришлось самостоятельно писать на стороне клиента, что будет нелегко с поддерживаемыми схемами. Поэтому я сомневаюсь, что оно того стоит.