인증 방법으로 Gemalto .NET 스마트 카드를 사용하여 SSH를 통해 내 컴퓨터에 연결하고 싶습니다. Fedora 13(또는 일반 Red Hat 버전) 시스템에서 이를 어떻게 수행할 수 있습니까?
제가 생각하는 대략적인 단계는 다음과 같습니다.
- 스마트 카드에 대한 인증서를 제공하세요(그리고 이를 발급할 CA도 있나요?)
- 스마트 카드에 인증서 쓰기
- 스마트 카드 인증을 허용하도록 SSH 서버를 구성하고 특정 인증서/CA를 사용하도록 구성합니다.
- 스마트 카드를 지원하는 SSH 클라이언트(무료 Windows 기반 클라이언트에 대한 보너스 포인트)
답변1
나는 Gemalto 드라이버가 이제 오픈 소스라고 생각합니다. 소스 코드는 해당 웹사이트에서 확인할 수 있습니다.
모듈 을 구성해야 합니다 pam
(이 작업을 수행하는 방법은 모르겠지만 코드는 확실히 거기에 있습니다). pam
인증서 정책을 로컬 사용자 ID에 매핑해야 하는 필요성을 구성하고 싶습니다 .
이제 GDM이 스마트 카드를 지원한다고 생각하지만 이를 어떻게 감지하는지 잘 모르겠습니다. 나중에 알아보도록 하겠습니다(가장 쉬운 방법은 아마도 gdm
소스 코드를 보는 것입니다).
물론 이 모든 작업에는 pcscd
설치가 필요합니다 libpcsclite
. libgtop11dotnet.so
에도 복사해야 합니다 /usr/lib
.
libgtop11dotnet.so의 소스 코드를 컴파일합니다.https://github.com/AbigailBuccaneer/libgtop11dotnet
답변2
케르베로스를 추천합니다. MIT는 krb5 클라이언트와 서버를 생산합니다.
vwduder님, 스마트 카드 리더기 및 FIPS-201 호환 카드 소스를 추천해 주실 수 있나요?
http://csrc.nist.gov/publications/fips/fips201-1/FIPS-201-1-chng1.pdf
내 서버에 사본이 있지만 지금은 이 스택트레이스에서 공유할 만큼 인기가 없습니다. 위의 내용은 우리 서버보다 안정성이 약간 낮기 때문에 아마도 해당 서버에서 얻을 수 있을 것입니다. ;)
[편집] 나는 이제 충분히 인기가 있다!
답변3
1)과 2)는 RSA 키를 사용할 때 사소한 일입니다. 왜냐하면 3)에서 볼 수 있듯이 이 컨텍스트에서는 실제 인증서가 중요하지 않기 때문입니다. cacert.org로 이동하거나 자체 서명된 인증서를 생성하세요.
3)의 경우 공개키를 추출하여 $HOME/.ssh/authorized_keys에 설치해야 합니다. 파일 소유권과 권한에 주의하세요! (.ssh의 경우 700, Authorized_keys의 경우 600) 호스트 범위 공개 키 인증의 사용은 권장되지 않지만 호기심을 자극하는 것으로 간주됩니다.
4)에 대해서는 PuTTY SC(http://www.joebar.ch/puttysc/) 또는 - 바람직하게는 - PuTTY-CAC(http://www.risacher.org/putty-cac/) PuTTY SC를 개선하고 더 나은 공개 키 추출 알고리즘을 제공하며 PuTTY 개발 분기의 Kerberos-GSSAPI 지원도 포함합니다.
답변4
PuttySC와 Linux 서버를 이용하여 스마트 카드를 사용하는 방법을 영상으로 만들어 보았습니다.보안 CRT. 여기서 시청할 수 있습니다:스마트 카드를 사용하여 SSH를 사용하는 방법
카드에 인증서를 구성하는 방법은 설명하지 않겠지만 이렇게 할 경우 카드 관리 시스템을 사용하여 카드의 관리 키를 변경해야 한다는 점을 기억하세요. 회사에서 스마트 카드를 제공하면 이 부분에 대해 걱정할 필요가 없으므로 훨씬 쉬워집니다.
카드를 구성한 후 공개 키를 추출하여 ~/.sshd/authorized_key에 추가해야 합니다.
서버에 연결하려면 PuttySC 또는 SecureCRT와 같은 도구를 사용할 수 있습니다. 카드용 PSKC#11 라이브러리를 가져와야 합니다(스마트 카드 제조업체 또는 오픈 소스 버전에서). 라이브러리를 사용하여 SSH 도구를 구성하면 이를 읽고 인증서를 찾을 수 있어야 합니다.
인증하면 도구에서 스마트 카드 PIN을 묻는 메시지를 표시합니다.