신뢰할 수없는 컴퓨터에 파일을 복사하는 방법은 무엇입니까?


1

한 컴퓨터에서 다른 컴퓨터로 안전하게 파일을 복사하고 싶지만 다른 컴퓨터는 신뢰할 수 없으며 다른 컴퓨터에 직접 액세스 할 필요가 없습니다. 이 작업은 한 번만하는 상황이므로 번거로운 설치 작업은 피해야합니다. 가장 쉬운 방법은 무엇입니까?

제가 생각하기에 다음과 같은 워크 플로우를 가진 프로그램이 될 것입니다 :

  1. 파일이있는 호스트는 암호로 보호 된 파일을 사용 가능하게 만드는 가상의 명령을 실행합니다.

    file-offer -p PASSWORD file1 file2 file3 directory

  2. 다른 하나는 파일을 받기위한 패스워드가있는 가상의 명령을 내 보낸다 (파일을 선택하는 GUI도 역시 환영받을 것이다) :

    file-receive -p PASSWORD file2

지금 당장 가지고있는 가장 가까운 것은이 해킹입니다.이 해킹은 작동하지만 매우 편안하지는 않으며 Windows 사용자에게 몇 가지 문제가 있습니다.

  1. tar cf - [files]... | gpg -c --passphrase PASSWORD | nc -l -p 6666

  2. nc host1 6666 | gpg --passphrase PASSWORD | tar xf - [files]...

더 많은 메모 :

  • 어느 사용자도 루트 액세스를 갖지 않기 때문에 (& lt; 1024의 포트를 액세스하는 서버가 없음)
  • 파일을 복사하기 전에 복사해야합니다 (예 : cp files /var/www/ )
  • 한 호스트의 암호를 다른 호스트에 제공해야하는 ssh / scp가 작동하지 않습니다.
  • rsyncd.conf와 함께 rsync를 사용하면 대부분 작동하지만 설정이 번거롭고 단일 파일, 디렉토리 만 공유 할 수있는 방법을 제공하지 않습니다.
  • 단일 명령 줄을 사용하여 시작하고 구성 할 수있는 ftp / http 서버가 작동 할 수 있습니다. 암호화를위한 https 지원은 디렉토리가 아닌 단일 파일을 공유하는 방법뿐만 아니라 이러한 기준에 맞는 서버를 모르는 방법입니다.
  • 다른 호스트는 네트워크에서만 사용할 수 있으므로 USB는 옵션이 아닙니다.
  • 파일 업로드 서비스는 옵션이 아닙니다 (파일 크기 제한, 신뢰할 수없는 제 3 자에게 업로드, 사용자는 인터넷이 아닌 LAN에있을 수 있습니다.)

나는 첫 번째 문장에 문제가있다. 신뢰할 수없는 컴퓨터에서는 안전하게 작업 할 수 없습니다. "안전하게"의미하는 것을 정의 할 수 있습니까?
David Thornley

"안전하게"라는 말은 파일이 제 3 자에 의해 가로 챌 수 없어야한다는 것을 의미합니다 (즉, 암호화 된 전송 및 암호로 보호 된 액세스로 인해이를 수행 할 수 있음). '신뢰할 수 없음'이란 단순히 다른 사용자를 신뢰할 수 없다는 것을 의미합니다. 컴퓨터 자체는 괜찮습니다 (즉, 내 암호를 제공해야하거나 자신에게 부여해야하므로 scp가 작동하지 않습니다).
Grumbel

따라서 "신뢰할 수 없음"은 다른 사용자를이 파일들로 신뢰할 수 있지만 다른 민감한 개인 정보는 신뢰할 수 없다는 것을 의미합니까?
David Z

네, 그렇습니다.
Grumbel

답변:


2

GnuPG 암호화 !

$ gpg -e mysecretfile
You did not specify a user ID. (you may use "-r")

Current recipients:

Enter the user ID.  End with an empty line: ben

Current recipients:
2048g/52FFA1E 2009-01-02 "Bob McBlah <bob.mcblah@example.com>"

Enter the user ID.  End with an empty line: 

$ ls *.gpg
mysecretfile.gpg

파일 mysecretfile.gpg 사람 (Bob McBlah)만이 파일을 해독 할 수있는 방식으로 암호화됩니다 (비대칭 또는 공개 키 암호 ).

파일은 가로 챌 위험이 거의없이 파일 (netcat, 전자 메일, FTP, 보관함, mediafire.com 등)을 보낼 수있는 모든 매체를 사용하여 안전하게 보낼 수 있습니다.

귀하가 -a "ASCII armor"플래그, 암호화 된 파일 (이름은 mysecretfile.asc )는 ASCII 텍스트를 전송할 수있는 모든 매체에서 보낼 수있는 일반 ASCII 텍스트이므로 다른 "어떻게 x MB 파일을 보낼 수 있습니까?"질문에 적용 할 수 있습니다.

특정 문제를 해결하기 위해 BaseHTTPServer 모듈을 사용하여 간단한 Python 스크립트를 작성할 수 있습니다.

import sys
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

thefile = None

class MyHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        global thefile
        try:
            if self.path == "/":
                f = open(thefile)

                self.send_response(200)
                self.send_header('Content-type', 'application/x-gpg')
                self.send_header('Content-disposition', 'filename="%s"' % thefile.replace("\"", ""))
                self.end_headers()

                self.wfile.write(f.read())
                f.close()
            else:
                self.send_error(404, 'File not found: %s' % self.path)

        except IOError:
            self.send_error(404,'File Not Found: %s' % self.path)

def main():
    global thefile
    if len(sys.argv) == 2:
        thefile =  sys.argv[1]
    else:
        print "Usage: %s [path to served file]" % sys.argv[0]
        sys.exit(1)
    try:
        server = HTTPServer(('', 8080), MyHandler())
        print 'Started server on port 8080'
        server.serve_forever()
    except KeyboardInterrupt:
        print 'Keyboard abort, shutting down server'
        server.socket.close()

if __name__ == '__main__':
    main()

다음과 같이 저장하십시오. servefile.py 다음으로 실행 python servefile.py /path/to/my/file.gpg

위의 코드는 정확하지는 않지만 일회성 전송에 적합해야합니다.


6

가능한 USB 드라이브를 건네 줄 수 있습니까? 너무 복잡 할 수도 있지만 신뢰할 수없는 컴퓨터에 연결하는 문제는 해결됩니다. 또한, 모든 OS 사용자가 최소한의 지시로 필요한 파일을 가져 오는 것은 그리 어렵지 않을 것입니다.


"매그 테이프로 채워진 스테이션 왜건의 대역폭을 절대로 과소 평가하지 마십시오." DVD-R 또는 외장 하드 드라이브 등으로 말을 현대화 할 수 있습니다. 그러나 지연은 고통이 될 수 있습니다.
David Thornley

남아공에 있다면 비둘기가 가장 좋습니다. news.com.au/technology/story/0,25642,26053119-5014239,00.html
shufler


2
  • 비밀번호가 있지만 쉘 액세스 권한이없는 임시 사용자를 생성하십시오 (예 : scponly ).
  • 파일에 대한 사용자 권한을 부여하십시오.
  • SCP로 파일 복사.
  • 모든 작업이 완료되면 해당 사용자를 제거하십시오.

그렇게하는 방법은 여러 수준에서 받아 들일 수 없지만, 공유 권한이 있어야하며, 공유하고 싶은 파일을 수정하고, 훨씬 더 많은 권한을 필요로하며, 매우 귀찮습니다. 나는 쉽고 안전하며 공유해야 할 파일을 수정할 필요가없는 것을 찾고 있습니다.
Grumbel

@ Grumbel : 왜 이것이 루트 권한이 필요한가요? 또한 해당 사용자에 대해 파일을 읽기 전용으로 설정 (chmod) 할 수 있습니다. SSH는 루트가 아닌 사용자도 사용할 수 있습니다 ...
Josip Medved

임시 사용자를 생성하고 제거하려면 루트 권한이 필요합니다.
Grumbel

@ Grumbel : 나는 당신이 서버 컴퓨터에 접근했다고 가정했다. 그렇지 않은 경우 문제가됩니다.
Josip Medved


1

SSH를 사용할 수 있습니다. 공개 / 개인 키 인증 . 이렇게하면 "신뢰할 수없는"컴퓨터에 공개 키를 제공 할 수 있습니다. 그런 다음 개인 키를 비밀로 유지하고 암호를 보호 한 다음 다른 컴퓨터에 로그인 할 수 있습니다.

그런 다음 ssh를 사용하는 사용자에게 적절한 권한이있는 한 파일을 scp 할 수 있습니다. SSH를 사용하기 때문에 모든 파일이 전송 중에 암호화됩니다.


다른 방법으로도 작동해야합니다. 원격 사용자가 키 쌍을 생성하고 공개 키를 보냅니다. 그런 다음 암호를 입력 할 필요없이 컴퓨터에서 scp를 실행할 수 있습니다.
chris

공용 키는 공유해야하는 파일 중 일부에 대한 액세스가 아닌 컴퓨터에 대한 완전한 액세스 권한을 제공합니다.
Grumbel

그것은 줄 것이다. 당신 에 대한 접근 다른 기계, 심지어 전체 액세스조차하지 않고, 당신이 로그인 한 사용자가 어떤 수준의 액세스 권한을 가지는지 알 수 있습니다. 이것은 내가 과거에 (그들이 무엇을하고 있는지를 아는 사람들에 의해) 그리고 내가 권하는 것이 무엇인지를 본 방식이다.
David Z

@ grumbel 당신은 파일 권한을 기반으로 허용 된 파일을 더 잘 제한 할 것입니다. 그러나 chroot에서 SSH를 설정할 수 있습니다 ( howtoforge.com/chrooted_ssh_howto_debian )를 사용하여 SSH / SCP를 특정 디렉토리로 제한하십시오.
Olly

1

에 대한 무료 계정을 설정할 수도 있습니다. Inbox.com . 이메일 외의 서비스 중 하나는 파일 저장 용량이 최대 5GB (무료)입니다. 두 사람이 공유하고 파일을 업로드하고 다른 사람이 다운로드 할 수있게하는 계정을 만드십시오. 그런 다음 계정을 잊어 버리거나 암호를 변경하고 보관하거나 원하는대로하십시오.

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