9P by neo 1달전 | favorite | 댓글 1개
  • 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.sockettinysshd@.service 파일을 통해 서비스 구성 및 실행

GN⁺의 의견

  • tinysshd는 최소한의 기능을 가진 SSH 서버로, 보안에 중점을 둔 설계가 돋보임. 이는 과도한 기능이 없어 가볍고, 보안 취약점이 적을 가능성이 높다는 장점을 가짐.
  • SSH 서버는 네트워크 보안의 핵심 요소이므로, tinysshd와 같은 최소주의 접근 방식은 특히 보안이 중요한 환경에서 유용할 수 있음.
  • 다만, 일부 사용자에게는 포트 포워딩이나 X11 포워딩과 같은 고급 기능의 부재가 단점으로 작용할 수 있음.
  • 양자 컴퓨터에 대비한 암호화를 지원한다는 점은 미래 지향적인 접근으로, 보안에 대한 지속적인 관심과 업데이트를 반영함.
  • 비슷한 기능을 제공하는 다른 오픈소스 프로젝트로는 OpenSSH가 있으며, 이는 더 많은 기능을 제공하지만, 그만큼 더 복잡하고 관리해야 할 보안 측면이 많음.
  • tinysshd를 도입할 때는 기능 제한이 프로젝트 요구 사항에 적합한지 고려해야 하며, 선택함으로써 얻는 이점은 간결함과 강화된 보안, 손실되는 이점은 일부 고급 기능의 부재임.
Hacker News 의견
  • TinySSH 사용 사례:

    • 리눅스 부팅 중에 원격으로 암호화된 드라이브를 잠금 해제하는 데 사용됨.
    • 머리 없는 NAS 서버에서 dm-crypt/LUKS와 ZFS를 사용.
    • 커널/ZFS 업데이트 시 서버를 원격으로 재부팅하고, TinySSH를 통해 암호화 키 프롬프트에 접속해 드라이브 잠금 해제.
    • TinySSH가 종료되면서 SSH에서 즉시 로그아웃되며, 몇 초 후 다시 SSH로 접속하면 완전히 부팅된 시스템에 접근 가능.
  • TinySSH 관련 링크:

    • 현재 Slashdot 효과로 인해 접근이 어려움.
    • 웹 아카이브를 통해 TinySSH 페이지 확인 가능.
  • TinySSH 코드량에 대한 의견:

    • 코드량을 '단어'로 표현하는 것이 재미있음.
    • 일반적으로 보안이 중요한 저장소는 'X 줄의 코드'로 광고하는 것이 일반적이나, '단어'로 표현한 것은 이례적.
  • TinySSH의 지원 범위:

    • ed25519-sk를 지원하지 않는 것이 아쉬움.
    • 그 외에는 매우 유망해 보임.
  • TinySSH의 감사 가능성:

    • 100,000단어의 코드가 정말 쉽게 감사할 수 있는 수준인지 의문 제기.
  • TinySSH와 Dropbear SSH의 차이점에 대한 질문.

  • OpenSSH 대체에 대한 의견:

    • OpenSSH는 많은 사람들이 사용하고 오랜 시간 동안 검증되어 안정성이 높음.
    • OpenSSH는 OpenBSD 출신으로, 보안 코드 작성에 신중함.
    • OpenSSH를 대체하기보다는 키 기반 인증으로 전환하고, Mozilla의 설정 아이디어를 포함한 몇 가지 간단한 구성 변경으로 OpenSSH를 더욱 강화하는 것이 좋음.
  • TinySSH 개발자의 작업에 대한 칭찬:

    • TinySSH 외에도 여러 작은 네트워크 유틸리티와 서버를 개발.
    • 이러한 작업들은 개발자가 무언가를 '만들기 위해' 그리고 이해하기 위해 노력하는 것처럼 보임.
  • TinySSH의 안전 기능:

    • TinySSH는 비밀번호나 호스트 기반 인증과 같은 안전하지 않은 기능을 구현하지 않음.
    • 공유 장치에서 개인 키를 등록하는 방법에 대한 질문.