개인 데비안 저장소에 대한 액세스를 안전하게 제한


9

개인 데비안 저장소에 대한 액세스를 제한하고 비 대화식으로 인증 할 수있는 방법을 찾고있었습니다 (예 : 스크립트 사용)

실제로 데비안 관리 사이트 에서 찾은 것이지만 가장 안전한 방법은 ssh 및 공개 / 개인 키를 사용 하는 가장 유용한 기사 입니다. 잘 작동하지만 성공적으로 인증하려면 각 호스트의 공개 키가 remote certified_keys 파일 내에 있어야합니다. ssh : //에 암호를 제공하는 것에 대해 아무 말도하지 않지만 가능해야한다고 생각합니다.

다른 대안 (예 : ftp)을 사용해 보셨습니까?

미리 감사드립니다


위의 기사에서 내가 가진 문제는 APT 저장소 액세스 권한을 제공 할뿐만 아니라 APT 저장소 시스템에 대한 쉘 액세스 권한을 부여한다는 것입니다. 용납 할 수없는 위험입니다.
BobDoolittle

답변:


5

항상 apt-get수동으로 서버에서 실행 하는 경우 ( apt-get크론에서 자동 명령을 실행 하지 않음 ) ssh 에이전트 전달 사용을 고려할 수 있습니다 . 이렇게하면 관리하는 서버 당 하나의 공개 / 개인 키 쌍을 관리 할 필요가 없으며 모든 서버에 개인 키를 두는 것보다 안전합니다.

초기 구성 -관리하려는 서버에 연결하고 다음과 같이 추가하십시오 /etc/apt/sources.list(이 예에서는 서버가 manager계정 에 연결되기를 원한다고 가정 ).

    deb ssh://manager@my.repository.org/path other stuff
  • johndoe예를 들어 로그인 을 사용하여 자신의 컴퓨터에 개인 / 공개 키 쌍을 만듭니다 (컴퓨터가 데비안에서 실행되는 경우 : 그렇지 않은 경우 관리 전용 데비안 서버에서이 작업을 수행 할 수 있음).

    ssh-keygen
    
  • 강력한 키 프레이즈로 보호되는지 확인하십시오
  • 다음 위치에서 공개 키를 저장소 서버에 복사하십시오 /home/manager/.ssh/authorized_keys.

    ssh-copy-id manager@my.repository.org
    

관리 세션 당 한 번

  • 다음을 입력하여 머신에서 ssh 에이전트를 시작하십시오.

    eval `ssh-agent`
    
  • 에이전트에 키를 추가하십시오 (암호가 필요함).

    ssh-add
    

서버 관리

  • 를 사용하여 관리하려는 서버에 연결합니다 ssh -A( -A에이전트 전달 활성화).

    ssh -A some.server.org
    
  • 루트로 전환하십시오 (사용 sudo하려면 에이전트 전달 을 구성해야합니다. /etc/sudoers그렇지 않으면 sudo에이전트 전달을 중단 하십시오 ).

    su
    
  • 이제 에이전트 전달 덕분에 비밀번호를 다시 입력하지 않고 ssh를 사용하여 저장소의 관리자 계정에 연결할 수 있습니다. 따라서 apt-get제대로 작동해야합니다.

    apt-get udate
    

관리 세션 종료

  • 서버 관리가 끝나면 에이전트에서 키를 제거하십시오.

    ssh-add -D
    

장점

  • 초기 구성이 많이 필요하지 않습니다
  • 하나의 개인 키만 필요
  • 개인 키는 강력한 암호로 보호됩니다
  • 누군가 서버 중 하나에 대한 루트 액세스 권한을 얻는 경우 리포지토리 서버에 즉시 액세스 할 수 없습니다.
    • 해커가 참을성 있고 자격이 있다면 에이전트 전달을 사용하여 서버에 연결할 때까지 기다릴 수 있으며, 저장소 서버에 액세스하기 위해 전달 메커니즘을 가로 챌 수 있습니다.
    • 이를 방지 ssh-ask하기 위해 키를 사용하려는 모든 시도를 수락 / 거부하기 위해 사용할 수 있습니다.
    • 어떤 경우, 해커는 것 없는 그는 단지하기 위해 전달 메커니즘을 납치 할 수있을 것입니다 : 개인 키 자체에 액세스 사용 키를, 만 시간 동안 해당 서버에 연결되어 있습니다.

다시 MiniQuark 감사합니다. 실제로 업데이트는 자동으로 수행되지만 테스트 목적으로 적용 할 수있는 훌륭한 방법입니다.
Humber

천만에요! :) 도움이된다면 기쁘다.
MiniQuark

4

이를 수행하는 한 가지 방법은 특정 IP 세트가 저장소에 액세스하도록 허용하는 것입니다. 이것은 LAN 및 VPN에 매우 효과적입니다.

간단하고 효율적입니다.


1
고마워 앙투안 :). 실제로, 내가 가진 저장소는 해당 방법을 사용하여 액세스 할 수 있습니다 (OpenVPN 연결을 통한 http). VPN에 속하는 IP를 제한합니다. 여기서 단점은 모든 호스트가 VPN에 연결되어 리포지토리에 액세스해야한다는 것입니다. 약간 성가시다 (여러 인증서 / 키 관리). 질문에 지정하지 않아서 죄송합니다.
Humber

사실 OpenVPN을 관리하는 것은 번거롭지 만 리포지토리의 보안 관리는 매우 간단합니다. 또한 사용자는 VPN 내부에서 자격 증명을 사용하지 않아도됩니다.
Antoine Benkemoun

2

ssh + 공개 / 개인 키 솔루션은 그렇게 나쁘지 않습니다.

  • 클라이언트 시스템에서 루트로 로그인
  • 을 입력 ssh-keygen한 다음ssh-copy-id your_login@your.repository.org
  • 다음 /etc/apt/sources.list과 같은 것을 편집 하고 추가하십시오 :

    deb ssh://your_login@your.repository.org/path other stuff
    

물론, 각 서버의 공개 키를 서버의 ~/.ssh/authorized_keys파일에 넣어야 하지만 그렇게 복잡하지는 않으며 (위 참조) 특정 시간에 허용하거나 허용하지 않는 서버를 제어 할 수 있습니다 (키를 제거 할 수 있음) 어떤 시간 authorized_keys).


감사합니다 MiniQuark. 예,이 솔루션은 그렇게 나쁘지는 않지만 openssh 서버에서 비밀번호 인증이 비활성화 된 경우 ssh-copy-id가 작동하지 않습니다. 리포지토리를 사용하여 각 클라이언트에 동일한 키 파일을 배포하여 사용할 수 있다고 생각했습니다. 보안을 강화하기 위해 최소한의 권한을 가진 사용자가 사용됩니다. 자격 증명 공유와 거의 동일합니다. 현재이 방법을 테스트하여 동작 / 작동 방식을 확인하고 있습니다.
Humber

1

로그인 / 암호 (기본 인증)로 보안 된 저장소에 https 액세스를 설정할 수 있습니다. 문제는 일반 텍스트 로그인 / 암호를 입력해야한다는 것입니다 /etc/apt/sources.list(참고 : 대신 로그인 / 암호를 입력 할 수 있는 패치 가 있습니다 /root/.netrc).


이것은 아마도 가장 좋은 해결책 일 것입니다. 또한 netrc는 아니지만 /etc/apt/auth.conf입니다. 여기 문서 : manpages.debian.org/testing/apt/apt_auth.conf.5.en.html
Nicholi

0

질문의 링크는 여러 가지 방법을 보여줍니다. 2 번, https + 기본 인증을 원합니다.


고마워 저스틴 apt-transport-https가 설치된 경우에만 apt를 사용한 https 전송이 작동한다고 생각합니다. 이것은 흥미로운 대안입니다. 유일한 단점은 sources.list의 자격 증명입니다.
Humber

chmod 600 /etc/apt/sources.list
저스틴
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.