- tinysshd는 SSHv2 기능의 일부만을 구현한 미니멀 SSH 서버
- 최소 128비트 보안을 지원하고 캐시 타이밍 공격에 대비한 안전한 암호화만을 지원
- RSA, DSA, HMAC-MD5, HMAC-SHA1, 3DES, RC4 등 오래된 암호화는 구현하지 않음
- 비밀번호나 호스트 기반 인증과 같은 안전하지 않은 기능들을 구현하지 않음
- SSH1 프로토콜, 압축, 포트 포워딩, 에이전트 포워딩, X11 포워딩 등의 기능도 제공하지 않음
- 동적 메모리 할당을 사용하지 않아 할당 실패 등의 문제가 없음
암호화 원시 기능
- 최신 암호화 기술: ssh-ed25519, curve25519-sha256, chacha20-poly1305@openssh.com
- 이전 표준(20190101 버전에서 제거됨): ecdsa-sha2-nistp256, ecdh-sha2-nistp256, aes256-ctr, hmac-sha2-256
- 양자 컴퓨터에 대비한 암호화: sntrup761x25519-sha512@openssh.com, chacha20-poly1305@openssh.com
프로젝트 타임라인
- 실험적 단계(2014년): 실험을 목적으로 함
- 알파 단계(2015-2017년): 생산 환경에는 적합하지 않으나 테스트를 위해 준비됨
- 베타 단계(2018년부터 현재까지): 프로덕션에 적합함
- 안정화 단계: 양자 컴퓨터에 대비한 암호화를 포함하여 생산 환경에 적합할 것으로 예상
현재 릴리스 (20240101)
- 코드는 63899 단어로 구성됨.
- 베타 릴리스 상태임.
실행 방법
- TCPSERVER:
tcpserver -HRDl0 0.0.0.0 22 /usr/sbin/tinysshd -v /etc/tinyssh/sshkeydir & - BUSYBOX:
busybox tcpsvd 0 22 tinysshd -v /etc/tinyssh/sshkeydir & - INETD:
/etc/inetd.conf파일에ssh stream tcp nowait root /usr/sbin/tinysshd tinysshd -l -v /etc/tinyssh/sshkeydir추가 - SYSTEMD:
tinysshd.socket및tinysshd@.service파일을 통해 서비스 구성 및 실행
GN⁺의 의견
- tinysshd는 최소한의 기능을 가진 SSH 서버로, 보안에 중점을 둔 설계가 돋보임. 이는 과도한 기능이 없어 가볍고, 보안 취약점이 적을 가능성이 높다는 장점을 가짐.
- SSH 서버는 네트워크 보안의 핵심 요소이므로, tinysshd와 같은 최소주의 접근 방식은 특히 보안이 중요한 환경에서 유용할 수 있음.
- 다만, 일부 사용자에게는 포트 포워딩이나 X11 포워딩과 같은 고급 기능의 부재가 단점으로 작용할 수 있음.
- 양자 컴퓨터에 대비한 암호화를 지원한다는 점은 미래 지향적인 접근으로, 보안에 대한 지속적인 관심과 업데이트를 반영함.
- 비슷한 기능을 제공하는 다른 오픈소스 프로젝트로는 OpenSSH가 있으며, 이는 더 많은 기능을 제공하지만, 그만큼 더 복잡하고 관리해야 할 보안 측면이 많음.
- tinysshd를 도입할 때는 기능 제한이 프로젝트 요구 사항에 적합한지 고려해야 하며, 선택함으로써 얻는 이점은 간결함과 강화된 보안, 손실되는 이점은 일부 고급 기능의 부재임.