텔넷을 사용하여 보안 SSH 로그인을 만드는 방법

텔넷을 사용하여 보안 SSH 로그인을 만드는 방법

MUD를 만들려고 생각 중이지만 단점 중 하나는 안전하지 않은 "텔넷"을 사용한다는 것입니다. "익명" 사용자가 특정 계정에 액세스할 수 있는 기능을 유지하고 싶습니다. 해당 계정이 할 수 있는 유일한 작업은 로컬 포트에 원격으로 로그인하는 것뿐입니다.

즉, 내가 원하는 것은 누구에게나 실행할 수 있다고 말할 수 있는 것입니다.

ssh [email protected]내 진흙에 안전하게 "연결"되었습니다.

"익명" 계정은 "telnet localhost:34843" 또는 유사한 명령을 실행합니다. 이상적으로 익명 계정에는 다른 액세스 권한이 전혀 없습니다. 포트 전달 없음, 파일 없음(텔넷 실행에 필요한 파일 제외) 등...

그것이 중요하다면 클라우드 호스팅 서비스와 함께 일부 버전의 우분투를 사용할 것입니다.

답변1

특정 계정이 하나의 명령만 실행할 수 있도록 OpenSSH를 설정할 수 있습니다(클라이언트가 보낸 명령은 무시됩니다). 에서 /etc/ssh/sshd_config다음 줄을 추가합니다.

Match User anonymous
  ForceCommand /usr/bin/telnet localhost 34843
  PasswordAuthentication yes
  PermitEmptyPasswords yes
  AllowAgentForwarding no
  AllowTcpForwarding no
  PermitTTY yes
  PermitTunnel no
  X11Forwarding no

홈 디렉토리는 루트가 소유하도록 구성되어야 하며 루트 와 그 안에 있는 파일 anonymous만 수정할 수 있습니다 .~anonymous/.ssh

최소한 한 가지 더 해야 할 일은 쉘 이스케이프를 비활성화하는 것입니다. 적어도 일부 텔넷 구현에서는 사용자가 Ctrl+를 눌러 셸로 탈출할 수 있습니다 ] !. Linux 넷킷 구현의 경우 telnet -e ''명령 모드가 비활성화되어 텔넷에서 셸에 액세스할 수 없게 된다고 생각합니다. 환경을 SHELL다음으로 설정하는 것도 /bin/false유용한 예방 조치입니다.

답변2

이러한 솔루션을 사용하여 텔넷 보안을 강화하세요

A) SSH 터널링, 말도 안 되는 일이지만(Ssh를 사용할 수 있는데 왜 터널을 사용합니까?) 작동합니다.

ssh -L 23:localhost:23 -N -f your host

물론, 방화벽을 사용하여 포트 23을 닫고, 22 또는 SSH 개인 포트를 열어두고, 직접적인 텔넷 액세스를 금지하세요.

B) 사용 중인 서버에서 TLS 또는 SSL(저는 TLS를 선호합니다) 터널을 사용하기 쉽습니다.

; Sample stunnel configuration file for Unix by Michal Trojnara 2002-2012
; Some options used here may be inadequate for your particular configuration
; This sample file does *not* represent stunnel.conf defaults
; Please consult the manual for detailed description of available options
; **************************************************************************
; * Global options                                                         *
; **************************************************************************
; A copy of some devices and system files is needed within the chroot jail
; Chroot conflicts with configuration file reload and many other features
chroot = /var/lib/stunnel/
; Chroot jail can be escaped if setuid option is not used
setuid = nobody
setgid = nogroup
; PID is created inside the chroot jail
pid = /stunnel.pid
; Debugging stuff (may useful for troubleshooting)
;debug = 7
;output = stunnel.log
; **************************************************************************
; * Service defaults may also be specified in individual service sections  *
; **************************************************************************
; Certificate/key is needed in server mode and optional in client mode
cert = //etc/ssl/certs/yourserver.crt
key = //etc/ssl/private/yourserver.key
; Authentication stuff needs to be configured to prevent MITM attacks
; It is not enabled by default!
verify = 2
; Don't forget to c_rehash CApath
; CApath is located inside chroot jail
;CApath = /
; It's often easier to use CAfile
CAfile = /yourserver.ca
; Don't forget to c_rehash CRLpath
; CRLpath is located inside chroot jail
;CRLpath = /crls
; Alternatively CRLfile can be used
;CRLfile = /usr/etc/stunnel/crls.pem
; Disable support for insecure SSLv2 protocol
options = NO_SSLv2
; Workaround for Eudora bug
;options = DONT_INSERT_EMPTY_FRAGMENTS
; These options provide additional security at some performance degradation
;options = SINGLE_ECDH_USE
;options = SINGLE_DH_USE
; **************************************************************************
; * Service definitions (remove all services for inetd mode)               *
; **************************************************************************
; Example SSL server mode services
[telnet]
accept  = 0.0.0.0:5939
connect = 23

클라이언트에서

; Sample stunnel configuration file for Unix by Michal Trojnara 2002-2012
; Some options used here may be inadequate for your particular configuration
; This sample file does *not* represent stunnel.conf defaults
; Please consult the manual for detailed description of available options
client=yes

; **************************************************************************
; * Global options                                                         *
; **************************************************************************

; A copy of some devices and system files is needed within the chroot jail
; Chroot conflicts with configuration file reload and many other features
;chroot = /var/lib/stunnel/
; Chroot jail can be escaped if setuid option is not used
;setuid = nobody
;setgid = nogroup

; PID is created inside the chroot jail
;pid = /stunnel.pid

; Debugging stuff (may useful for troubleshooting)
;debug = 7
;output = stunnel.log

; **************************************************************************
; * Service defaults may also be specified in individual service sections  *
; **************************************************************************

; Certificate/key is needed in server mode and optional in client mode
cert = /yourclient.crt
key  = /yourclient.key

; Authentication stuff needs to be configured to prevent MITM attacks
; It is not enabled by default!
;verify = 2
; Don't forget to c_rehash CApath
; CApath is located inside chroot jail
;CApath = /certs
; It's often easier to use CAfile
CAfile = /yourca.crt
; Don't forget to c_rehash CRLpath
; CRLpath is located inside chroot jail
;CRLpath = /crls
; Alternatively CRLfile can be used
;CRLfile = /usr/etc/stunnel/crls.pem

; Disable support for insecure SSLv2 protocol
options = NO_SSLv2
; Workaround for Eudora bug
;options = DONT_INSERT_EMPTY_FRAGMENTS

; These options provide additional security at some performance degradation
;options = SINGLE_ECDH_USE
;options = SINGLE_DH_USE

; **************************************************************************
; * Service definitions (remove all services for inetd mode)               *
; **************************************************************************

; Example SSL server mode services

[telnet]
accept=localhost:23
connect=yourstunnelserver:5939

물론, 이러한 파일을 예로 사용하고 원격 서버에 액세스할 구성에 따라 수정하십시오.

telnet localhost 23 

보안 TLS 터널 사용

세 번째 방법은 Telnet과 Keberos를 사용하는 것인데 비밀번호를 묻지 않고 SSO를 허용하기 때문에 좋지만 비밀번호가 약해서 100% 안전하지는 않습니다.

inetd.conf에서 편집하고 추가 또는 수정

telnet  stream  tcp     nowait  root    /usr/kerberos/sbin/telnetd 

클라이언트 측에서 수행

telnet -x server

비밀번호를 묻지 않고 연결이 잘 되는 경우, 비밀번호를 묻는 메시지나 오류 메시지가 나타나면 텔넷이 지워집니다.

관련 정보