SSH 터널 보안

SSH 터널 보안

SSH를 사용하여 서버에 연결하는 애플리케이션이 있습니다. 애플리케이션의 네트워크 트래픽(데이터베이스, 일부 사용자 정의 TCP 프로토콜 등)은 SSH 연결을 통해 터널링됩니다.

우리는 서버에서 키 쌍과 권한이 없는 계정을 사용하지만 사용자는 여전히 자신의 키를 사용하여 서버에 로그인하거나 원하는 포트 리디렉션을 수행할 수 있습니다.

SSH 서버만 허용하도록 구성하는 방법이 있습니까?일부터널(터널의 끝 주소와 포트로 제한됨) 및 쉘 액세스를 비활성화합니까? (우리는 OpenSSH를 사용합니다)

[편집하다]

나는 우연히 만났다이 기사, 쉘 액세스를 제거하는 것만으로는 충분하지 않은 것 같습니다. 이에 따라 제목과 설명을 변경했습니다.

답변1

Authorized_keys 파일에서 로그인 시 실행할 명령을 지정할 수 있습니다. 오랜 시간 동안 대기하는 작업을 실행하도록 해당 명령을 간단히 설정할 수 있습니다. SSHD 남자페이지Authorized_keys 파일에서 사용할 수 있는 모든 옵션의 목록입니다.

permitopen="tsserver.example.org:3389",no-pty,no-agent-forwarding,no-X11-forwarding,command="/usr/local/stm_shell.sh" ssh-rsa AAAAB3....

내 stm_shell.sh는 이것입니다(또한 12시간 제한 시간을 적용합니다). 이것이 완전히 안전한지 100% 확신할 수 없습니다.

#!/bin/bash

# send a hang-up after this process exits
shopt -s huponexit
# maximum session length in hours
CONNECT_TIME=12
sleep $[CONNECT_TIME*60]
kill $PPID

답변2

사용자 쉘을 /bin/false로 설정하면 원하는 결과를 얻을 수 있습니다.

답변3

어쩌면 sshd_config(man sshd_config)의 "ChrootDirectory" 키워드가 좀 더 추가적인 보안을 제공할 수도 있습니다.

답변4

ForceCommand쉘 액세스를 방지하기 위해 지시어를 설정할 수 있다고 생각합니다 /bin/false.

관련 정보