업로드 권한, SFTP 및 Linux 관리

업로드 권한, SFTP 및 Linux 관리

저는 리눅스를 처음 접했습니다.

저는 Redhat 5.5 서버를 사용하고 있으며 여러 사용자가 텍스트 파일을 서버에 업로드할 수 있도록 하는 Java 기반 SFTP 스크립트를 사용하고 있습니다. 각 사용자가 별도의 디렉토리를 갖게 될지 아니면 고객 ID가 포함된 명명 규칙을 사용할지 여부는 확실하지 않습니다.

파일에는 LAN 설정에 대한 일부 개인 정보가 포함되어 있으므로 FTP 대신 SFTP를 사용하는 것을 선호합니다. SFTP는 암호화되어 있다는 것이 제가 이해한 바입니다. 또한 SFTP를 통해 업로드하도록 구성된 Java 클래스가 있으므로 특별한 이유가 없는 한 프로토콜을 전환하지 않는 것을 선호합니다.

프로토타입은 다수의 고객을 지원하는 시스템을 위한 것이며 명령줄을 통해 지속적으로 클라이언트를 추가하고 제거한다는 생각은 매우 비실용적입니다. (다시 한번 말씀드리지만 저는 Linux와 Redhat을 처음/배우고 있습니다).

각각 고유한 사용자 이름과 비밀번호를 사용하여 여러 사용자에게 SFTP 업로드 파일에 대한 권한을 부여하는 일반적인 규칙은 무엇입니까?

답변1

외부 sshd를 chrooted sftpd로 설정하면 됩니다(이를 위해서는 sshd_config에서 sftpd-internal 옵션을 사용하세요). 모든 사용자는 자신만의 chroot-jail을 가질 수 있습니다. 사용자의 Authorized_key 파일에서(비밀번호를 허용하지 마세요!) 각 공개 키 앞에 셸 액세스를 허용하지 않는 필수 접두사를 붙여야 합니다. 또한 chroot에는 sftp-access에 대한 기본 설정만 포함되어야 합니다(제가 기억하는 한 바이너리, 라이브러리 없음, /dev/null, /dev/zero, /dev/random 및 /dev/urandom만 포함).

답변2

당신이 설명하는 것은 가능하지만 아마도 최고의 아이디어는 아닐 것입니다. 특히 당신이 말하는 것처럼 Linux를 처음 사용하는 경우에는 더욱 그렇습니다.

말씀하신 대로 파일 권한과 사용자를 관리하는 것은 다소 악몽이 될 것이며 SFTP에는 원격 서버에서 코드 실행 및 파일 다운로드와 같은 모든 종류의 기능을 자체적으로 노출할 수 있는 SSH가 필요합니다.

그것~이다어느 정도의 보안으로 SFTP 서버를 구성하는 것은 가능하지만 구성에는 많은 함정이 있습니다. SSHd를 사용하여 SFTP 전용 사용자를 구성하는 방법에 대해 인터넷에는 오해의 소지가 있는 조언이 많이 있습니다. 간단히 말해서, 그것은~ 아니다단순히 로그인 셸을 잘못된 셸로 변경하는 것만으로도 충분하므로, 셸을 우회하여 명령을 원격으로 실행할 수 있는 능력, 홈 디렉토리 외부에서 잠재적으로 의미 있는 시스템 파일을 읽을 수 있는 능력, 방화벽을 우회하는 SSH 터널링. 다른 기능과 마찬가지로 머리 꼭대기에서 기억나지 않을 수도 있습니다.

그리고 그것은~이다SSH가 다른 사용자 데이터베이스에 대해 인증할 수 있도록 PAM을 사용하여 어두운 마법을 수행하거나 단순히 단일 사용자 계정을 공유함으로써 "모든 고객에 대해 사용자를 생성해야 하는 필요성" 전체를 우회할 수 있습니다. 사용자에게 허용하는 것에만 관심이 있기 때문에업로드파일).

또한 SFTP가 원격 서버가 실제처럼 보이는지 확인할 수 있어야 하는 많은 원격 사용자가 있는 응용 프로그램에서 발생하는 기본적인 보안 문제를 어떻게든 해결하게 될 것입니다. SSH에는 인증 기관이 없습니다. SSH가 중간자 공격으로부터 보호하기 위해 사용하는 방법은 클라이언트가 연결하는 서버의 SSH 서버 키 지문을 캐시하고 키가 이전에 본 키와 일치하는 경우입니다. , 모두 좋은. 하지만키를 알 수 없는 경우, 클라이언트가 처음 연결하기 때문에 SSH에서는 사용자가 수동으로 지문을 확인해야 합니다. 귀하의 고객이 실제로 이를 수행할 것이라고 기대하는 것은 합리적이지 않습니다. 거의 모든 사람들이 자신의 삶을 계속 유지하기를 원하기 때문에 "예"를 클릭할 것입니다. 애플리케이션과 함께 유효한 호스트 지문을 배포할 수도 있지만 이는 약간의 악몽처럼 보입니다.

설명된 잠재적인 문제에도 불구하고 SFTP를 계속 진행하기로 결정했다면 조사해 보시기 바랍니다.RSSH사용자를 SFTP로만 제한합니다. 또한 모든 SFTP 사용자를 chroot 감옥에 가두어 서버 작동을 방해하거나 시스템 파일에 액세스할 수 없도록 해야 합니다. (그렇더라도 공격자가 시스템 사용자를 열거하는 것이 가능할 수 있습니다...) 또한 SFTP 사용자의 SSH 터널링을 방지하도록 sshd가 구성되어 있는지 확인해야 합니다.

...

이런 종류의 혼란을 처리하기보다는 파일을 업로드하기 위해 귀하의 사용 사례에 훨씬 더 적합해 보이는 다른 프로토콜을 고려하는 것이 좋습니다. HTTPS를 사용하여 파일을 업로드하는 것을 고려해 보는 것은 어떨까요? 파일을 수신하고 유용한 작업을 수행하고 인증을 수행하려면 일종의 서버 측 CGI 스크립트나 Java 서블릿 등이 필요합니다. 서버측 스크립트는 유용한 위치에 파일을 저장하는 작업을 담당할 수 있습니다. 클라이언트 측 문제의 경우, HTTPS를 통해 파일을 업로드하는 것은 매우 흔한 일이므로 쉽게 사용할 수 있는 즉시 사용할 수 있는 API 클래스가 없다면 놀랄 것입니다. 파일 업로드 중.

물론 이는 문제를 처리하기 위해 서버 측 CGI 스크립트를 실제로 작성해야 한다는 의미이지만 어쨌든 들어오는 파일을 프로그래밍 방식으로 처리하려고 할 것이라고 생각합니다. 코드가 실제로 더 쉬워지기 때문입니다. 새 파일이 있을 때마다 호출됩니다.

관련 정보