SSH를 통해 연결하는 사용자를 감옥에가는 방법

우리 세상에는 많은 비밀이 있습니다. 솔직히 저는 그것들의 대부분을 알만큼 충분히 배울 수 있다고 생각하지 않습니다. 이것은 Linux가 우리가 그렇게 많은 것을 할 수 있도록 허용한다는 단순한 사실에 의해 주어집니다. 우리가 그들 모두를 알기 어렵습니다.

이번에는 많은 네트워크 또는 시스템 관리자가 수행해야하는 매우 유용한 작업을 수행하는 방법을 설명 할 것이며,이를 달성하기위한 매우 간단한 방법을 찾기가 어려웠습니다.

SSH를 통해 연결하는 사용자를 케이지하는 방법

새장? … WTF!

예, 어떤 이유로 든 우리 친구에게 컴퓨터 (또는 서버)에 대한 SSH 액세스 권한을 부여해야하는 경우 항상 컴퓨터 또는 서버의 보안과 안정성을 관리해야합니다.

최근에 우리 서버에 대한 페르세우스 SSH 액세스 권한을 부여하고 싶었지만 거기에 정말 민감한 구성이 있기 때문에 어떤 유형의 액세스 권한도 부여 할 수 없습니다 (많은 것들을 컴파일하고 개별적으로 설치 한 패키지 등). .) 그렇지 않은 사람이라면 서버를 조금이라도 변경하려고하더라도 모든 것이 낭비 될 가능성이 있습니다.

그런 다음, 매우 제한된 권한을 가진 사용자를 생성하여 자신의 케이지 (집)에서 벗어날 수 없도록하는 방법?

다운로드부터 시작하겠습니다 감옥,이 작업을 수행 할 수있는 도구 :

다음 명령은 모두 루트로 실행됩니다.

1. 먼저 JailKit 서버를 다운로드해야합니다.

wget http://ftp.desdelinux.net/jailkit-2.14.tar.gz

2. 그런 다음 패키지의 압축을 풀고 방금 나타난 폴더를 입력해야합니다.

tar xzf jailkit-2.14.tar.gz && cd jailkit-2.14

3. 나중에 우리는 소프트웨어를 컴파일하고 설치했습니다 (스크린 샷을 남겨):

./configure
make
make install

./configure를

확인

설치 만든다

4. 준비, 이것은 이미 설치되었습니다. 이제 우리는 미래 사용자를 포함 할 케이지를 만들려고합니다. 제 경우에는 / opt /에서 만들었고 "감옥"이라고 명명 했으므로 경로는 다음과 같습니다. / 선택 / 감옥 :

mkdir /opt/jail
chown root:root /opt/jail

5. 케이지는 이미 만들어져 있지만 앞으로있을 사용자가 문제없이 작업 할 수 있도록 필요한 도구가 모두 포함되어 있지 않습니다. 내 말은, 지금까지는 우리가 만들어졌지만 그것은 단지 빈 상자 일뿐입니다. 이제 우리는 갇힌 사용자에게 필요한 도구를 우리에 넣을 것입니다.

jk_init -v /opt/jail basicshell
jk_init -v /opt/jail editors
jk_init -v /opt/jail extendedshell
jk_init -v /opt/jail netutils
jk_init -v /opt/jail ssh
jk_init -v /opt/jail sftp
jk_init -v /opt/jail jk_lsh

6. 준비, 케이지가 존재하고 이미 사용자가 사용할 수있는 도구가 있습니다. 이제 우리는 사용자 만 필요합니다! 사용자를 생성합시다 키라 그리고 우리는 그것을 새장에 넣을 것입니다.

adduser kira
jk_jailuser -m -j /opt/jail kira

참고 : 터미널에서 다음 명령을 실행하면 스크린 샷에 표시된 것과 비슷한 결과가 나타납니다.

cat /etc/passwd | grep jk_chroot

스크린 샷과 같은 것이 나타나지 않으면 뭔가 잘못한 것입니다. 여기에 의견을 남겨 주시면 기꺼이 도와 드리겠습니다.

7. 그리고 짜잔, 사용자는 이미 갇혀 있습니다 ... 그러나 그는 서버에 연결하려고 할 때 허용하지 않기 때문에 SSH로 연결할 수 없기 때문에 너무 갇혀 있습니다.

8. 사용자가 연결할 수 있도록하려면 한 단계 더 수행해야합니다.

우리는 케이지의 etc / passwd 파일을 편집해야합니다. 즉,이 경우에는 / 선택 / 감옥 / etc / passwd , 그 안에 우리가 만든 사용자 줄에 주석을 달고 다음과 같은 새 줄을 추가합니다.

kira : x : 1003 : 1003 :: / 집 / kira : / bin / bash

즉, 다음과 같은 파일을 갖게됩니다. passwd:

root : x : 0 : 0 : root : / root : / bin / bash
#kira : x : 1003 : 1003 : ,,, : / opt / 감옥 /./ 집 / kira : / usr / sbin / jk_lsh
kira : x : 1003 : 1003 :: / 집 / kira : / bin / bash

중복 된 문장 부호 및 기타 사항을 잘 확인하십시오.

이렇게하면 사용자는 아무 문제없이 입장 할 수 있습니다 😀

그리고 그게 전부입니다.

이 모든 작업에 사용하는 도구 (감옥) 백엔드에서 사용 chroot, 실제로 거의 모든 튜토리얼에서 사용하는 것입니다. 그러나 JailKit을 사용하면 케이지가 더 간단 해집니다 😉

중요! : 이것은 테스트되었습니다 데비안 스퀴즈 (6) y CentOS에 그리고 그것은 일했다 100 %, Debian Wheezy (7)에서 테스트되었으며, 약간의 세부 사항이 있지만 사용자의 닉네임이 ssh에 표시되지 않지만 기능을 잃지 않습니다.

누군가 문제가 있거나 문제가 발생하면 가능한 한 많은 세부 사항을 남겨주세요. 나는 내 자신을 전문가라고 생각하지 않지만 최대한 당신을 도울 것입니다.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   v3on

    그러면 FTP의 권한과 같은 것입니까? 흥미로운

    mysql xD의 사용자처럼 존재하지도 않았던 모든 것을 항상 가지고 나옵니다.

    1.    KZKG ^ 가아라

      SSH는 FTP와 동일하지 않기 때문에 정확하지 않습니다. SSH는 셸, 즉 터미널입니다 ... 다른 컴퓨터 나 서버의 터미널에있을 수 있으며 명령을 실행하고 프로세스를 시작할 수 있습니다. 서버 관리자가 허용하는만큼 할 수 있습니다. 😉

      hahahahaha nah 어서, 무슨 일이 일어나는지 좀 더 기술적 인 내용을 게시하는 것입니다. 예를 들어, 나는 많은 사람들이 이미 그것에 대해 이야기 할 것이라고 믿기 때문에 새로운 우분투가 나오는 날에 무언가를 게시 할 계획이 없습니다. 일인가? 😀

      1.    데미안 리베라

        아주 좋은 공헌 감사합니다

        SSH를 통해 FTP를 실행하는 것과 같지는 않지만 ftp와 Secure Shell 인 sftp라는 프로토콜도 있습니다. \

        안부

        1.    KZKG ^ 가아라

          예, 예,하지만 SSH를 케이지하면 SFTP를 사용하여 연결하는 사람을 자동으로 케이지합니다. 말씀하신대로 SFTP는 실제로 SSH + FTP입니다 😀

          안부

  2.   Giskard

    이미지가 보이지 않습니다 !!! 🙁

    1.    KZKG ^ 가아라

      내 작은 실수 hehe, 지금 말해 😀

      1.    Giskard

        준비된. 감사합니다 😀

  3.   썩은 87

    아주 좋아, 내가 그것을 필요로 할 때 사용할 수 있도록 내가 좋아하는 것을 가리켜 lol

    1.    KZKG ^ 가아라

      감사합니다, 질문이나 문제, 우리는 당신을 돕기 위해 여기 있습니다 🙂

  4.   마누엘 데 라 푸 엔테

    그들은 새장에 페르세우스를 가지고 있습니다. http://i.imgur.com/YjVv9.png

    1.    적절한

      LOL
      xD

  5.   Jorgemanjarrezlerma

    무슨 일이야

    알다시피, 그것은 제가별로 익숙하지 않은 주제이고 제가 BSD (PC-BSD 및 Ghost BSD)를 확인하고 있었는데 매우 흥미롭고 매우 유용 할 수있는 기능을 발견했습니다.

    참조 용으로 보관하고 BSD 문서와 비교하여 확인하겠습니다. 정보 주셔서 감사합니다.

    1.    KZKG ^ 가아라

      나는 누군가에게 내 서버에 SSH 액세스 권한을 부여 할 생각이 없었기 때문에 이것에도 익숙하지 않았습니다.하지만 그렇게해야한다는 것을 알았을 때 액세스 권한을 부여하고 싶었지만 누군가 실수로 무언가를 할 가능성은 없었습니다. 😀

      나는 BSD 시스템에서 이것을 시도한 적이 없으므로 그것이 작동 할 것이라고 말할 수는 없지만 BSD에서 chroot하는 방법을 찾고 있다면 무언가가 나올 것입니다 😉

      댓글 친구 주셔서 감사합니다 🙂

      1.    데미안 리베라

        안녕하세요, 저는 FreeBSD를 사용하고 물론 jailkit은 실제로 포트에서 작동합니다.

        이 명령으로 설치합니다.

        cd / usr / 포트 / 쉘 / jailkit / && make install clean

        또는 ftp 패킷으로

        pkg_add -r 감옥

        구성에서만 (kira : x : 1003 : 1003 :: / home / kira : / bin / bash)

        bash를 설치하고이 경로를 추가하지 않은 경우 tcsh 또는 sh를 추가해야합니다.

        / usr / 로컬 / bin / bash

        그리고 몇 가지 더 자세한 사항은 Ghost BSD에서 FreeBSD를 기반으로하므로 유사한 프로세스가 더 간단해야합니다.

        안부

  6.   adiazc87

    좋아, 나는 그것을 찾고 있었다; Centos에서 작동하는지 아십니까 ?? 감사.

    1.    KZKG ^ 가아라

      Centos에서 테스트하지는 않았지만 예, 작동합니다. :)
      사실 Centos 및 Red Hat 서버에서 이와 동일한 도구를 사용했던 여러 사람이 기억납니다 😉

  7.   사이버알레조17

    감사합니다. 북마크로 직접 이동합니다.

    1.    KZKG ^ 가아라

      의견을 보내 주셔서 감사합니다 🙂

  8.   MV 알타미라노

    아주 좋은 "트릭", 시스템 관리자에게 매우 유용합니다. 그러나 훨씬 더 훌륭하고 훌륭하게 작성되었습니다. 무엇을 더 원할 수 있습니까?
    기여를 대단히 감사합니다.

    1.    KZKG ^ 가아라

      감사합니다. 의견 주셔서 대단히 감사합니다 😀
      안부

  9.   LiGNUxer

    찬양 SSH 하하
    일단 ssh 용 새장을 만들려고했지만 전통적인 스타일로 제대로 나오지 않았다는 것이 사실입니다. 케이지가 실행 중이라면 bash도 없었습니다. 즉, 연결되어 있고 아무것도 남지 않았습니다. 이 감옥은 메이스입니다. 모든 것을 자동화합니다.

    1.    KZKG ^ 가아라

      하하 감사합니다.
      예, 실제로 SSH는 그것이 우리에게 허용하는 것에 대한 경이로움입니다. 이것은 시스템이 허용하는 것 이상입니다 ... Linux를위한 만세! … ㅋ.

  10.   nwt_lazaro

    안녕하세요, 질문입니다!
    집을 (1) / opt / 감옥 /./ 집 / kira에서 (2) / 집 / kira로 변경하는 이유

    우리는 케이지의 etc / passwd 파일을 편집해야합니다. 즉,이 경우에는 / opt / jail / etc / passwd가됩니다. 그 안에 우리가 만든 사용자 줄에 주석을 달고 다음과 같은 새 줄을 추가합니다.

    kira : x : 1003 : 1003 :: / 집 / kira : / bin / bash

    즉, passwd 파일은 다음과 같습니다.

    root : x : 0 : 0 : root : / root : / bin / bash
    (1) #kira : x : 1003 : 1003 : ,,, : / opt / jail /./ 집 / kira : / usr / sbin / jk_lsh
    (2) kira : x : 1003 : 1003 :: / 집 / kira : / bin / bash

    1.    KZKG ^ 가아라

      안녕하세요 🙂
      설정되어 있지 않으면 SSH 액세스가 작동하지 않고 사용자가 연결을 시도하지만 자동으로 추방됩니다.이 변경을 수행 할 때 사용함을 나타 내기 때문에 JailKit이 가져 오는 인터프리터의 버그 또는 문제로 보입니다. 시스템의 정상적인 bash, 모든 것이 작동합니다.

      1.    오마르 라미레즈

        여전히 ssh 세션을 닫습니다. C
        수세 10.1 x64

  11.   알렉시 투

    안녕하세요 저는 이것을 설치했고 centos = D에서 아주 잘 작동합니다.

    하지만 내 dua는 예를 들어 감옥 사용자에게 더 많은 명령을 추가하는 전과 같습니다.
    svn co 명령을 실행할 수 없습니다 http://pagina.com/carpeta

    내 말은,이 명령은 감옥에이 명령을 추가하기 위해이 경우 감옥 사용자에게는 존재하지 않으며 추가해야 할 명령이 더 많습니다.

    1.    KZKG ^ 가아라

      안녕하세요, 어떻게 지내세요?
      감옥에서«svn»명령을 활성화하려면 jk_cp 명령이 있습니다.
      그건:
      jk_cp / opt / 감옥 / / bin / svn

      이것은 svn 바이너리 또는 실행 파일을 다음과 같이 가정합니다. / bin / svn
      그리고 케이지 / 감옥이 : / 선택 / 감옥 /

      다른 명령에 종속 된 명령을 찾을 수 있습니다. 즉,«pepe»명령을 추가하면«federico»도 추가해야한다는 것을 알 수 있습니다.«pepe»는 실행할«federico»에 따라 다르기 때문에이 명령을 찾으면 필요한 명령을 추가하고 이미 😉

      1.    알렉시 투

        훌륭합니다. 동시에 테스트하고 있습니다. 무슨 일이 있었는지 말씀드립니다. 대단히 감사합니다 = D

        1.    KZKG ^ 가아라

          행운 😀

  12.   알렉시 투

    나는 당신이 내게 말한대로했지만 이렇게해서 자동으로 문제없이 그것을 감지했다. 이것은 내가 Subversion을 사용할 수있게 해주는 명령이었다.

    jk_cp -j / 홈 / jaul svn

    나는 centos xP를 사용하고 아마도 다를 수 있지만 좋습니다.
    이제 svn과 같은 라이브러리가 무엇인지 알고 싶지만 다음과 같은 명령을 사용해야한다고 가정 해 봅시다.

    ./configure 및 mark 오류

    ./configure.lineno : 434 행 : expr : 명령을 찾을 수 없습니다.

    감옥 밖에서 컴파일되지만 jaui 내부가 아닌 경우 mysql 및 기타 라이브러리를 이미 설치 한 라이브러리가 무엇인지 알 수 없습니다.

    불편을 드려 죄송합니다.

    추신 : centos =) 인사에 사용 된 명령에 대해 내가 말한 것을 가이드에 넣어야합니다.

    1.    KZKG ^ 가아라

      명령을 찾을 수 없다고 말하면 (여기처럼) 가장 먼저해야 할 일은 명령을 찾는 것입니다.

      whereis expr

      일단 발견되면 (/ usr / bin / expr 및 / usr / bin / X11 / expr) jk_cp 😉로 감옥에 복사합니다.
      이것을보십시오.

      예, 이미 게시물을 편집하고 Centos에서 작동한다고 추가했습니다 😀

  13.   adiazc87

    대단히 감사합니다 (:

  14.   예수

    입력 해 주셔서 감사합니다…

  15.  

    안녕 잘 지내?

  16.   djfenix칠레

    젠장! 칠레에서 인사드립니다. 당신은 나만큼 방귀입니다! LOL !. 포옹. 귀하의 게시물은 저에게 큰 도움이되었습니다!

    1.    KZKG ^ 가아라

      귀하의 의견에 감사드립니다 😀

  17.   다니엘 PZ

    게시물 주셔서 대단히 감사합니다. 많은 도움이되었지만 안타깝게도

    ////////////////////////////////////////////////// //// ////////////////////////////////////////////// //////// //////////////////////
    우리는 케이지의 etc / passwd 파일을 편집해야합니다. 즉,이 경우에는 / opt / jail / etc / passwd가됩니다. 그 안에 우리가 만든 사용자 줄에 주석을 달고 다음과 같은 새 줄을 추가합니다.

    kira : x : 1003 : 1003 :: / 집 / kira : / bin / bash

    즉, passwd 파일은 다음과 같습니다.

    root : x : 0 : 0 : root : / root : / bin / bash
    #kira : x : 1003 : 1003 : ,,, : / opt / 감옥 /./ 집 / kira : / usr / sbin / jk_lsh
    kira : x : 1003 : 1003 :: / 집 / kira : / bin / bash
    ////////////////////////////////////////////////// //// //////////////////////////////////////////

    그것은 나에게 같은 오류를 일으킨다. 내 말은 그대로 두었다가 터미널에서 부팅 할 때 ,,, .., 나는 라인에 주석을 달고 지시에 따라 하나 더 수정하고 또한 나를 부츠….

    최신 버전 "jailkit-2.16.tar"를 설치하고 시간을 절약 할 수있는 스크립트를 만들 수도 있습니다. 여기는 다음과 같습니다.

    ////////////////////////////////////////////////// //// //////////////////////////////////////////////
    #! / bin / bash
    wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
    tar -zxvf Jailkit-2.16.tar.gz
    CD 탈옥-2.16
    ./configure를
    확인
    설치 만든다
    출구
    ////////////////////////////////////////////////// //// /////////////////////////////

    분명히 먼저 그들은 "root"로 로그인합니다 ...

    오류 친구 ????를 어떻게 해결할 수 있습니까?

    1.    다니엘 PZ

      죄송합니다. 이미 확인했습니다. 홈 폴더에 대해 실수를했습니다.하지만 "screen"명령을 실행하도록하려면 어떻게해야하나요? (케이지 된 사용자에서) 사용하려고합니다. ,하지만 작동하지 않습니다 ... 또 다른 한 가지는,이 갇힌 사용자가 방금 집에 넣은 exe에서 와인 프로그램을 실행하게하려면 어떻게해야합니까?

  18.   레오 넬

    안녕하세요, 아주 좋은 tuto! 저는 이러한 환경에 익숙하지 않습니다. 질문이 있습니다.
    보안에 관해서는 루트에 많은 폴더가 있음을 알았습니다. 필요합니까? 응용 프로그램을 실행하기 위해 그의 폴더 (ftp-upload 및 ssh-execute)에 액세스 할 수 있기를 원합니다. 루트에서 삭제할 수있는 폴더는 무엇입니까? 아니면 나에게 위험을 나타내지 않습니까? 사전에 도움을 주셔서 감사합니다.

  19.   쿠바 레드

    @ KZKG ^ Gaara, 당신이 wheezy 오류를 넣었지만 다행 이었지만 jailkit-2.16.tar.gz 버전으로 수정을 제안했습니다.

    http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz

  20.   알가베

    나는 그것을 PDF로 전달할 것이라고 생각한다. jojo .. 케이지와 감사합니다 😀

  21.   사무엘

    안녕하세요 친구, 질문이 있습니다.

    "test"라는 사용자가 있다고 가정합니다.

    문제는 해당 사용자의 집에있는 /home/test/.ssh/known_hosts 파일이 동일한 파일입니까, 아니면 사용자를 감금하지 않았습니까?

  22.   리차트

    이 시도. 이 방법을 사용하면 다른 사용자의 다른 홈으로 탐색을 제한 할 수 있습니다.

  23.   TZBKR

    우선 게시물 감사합니다! 나에게 매우 유용합니다. 그러나 나는 두 가지 의구심을 가지고 있으며 이것은 내가 가진 시나리오에서 발생합니다.

    나는 자신의 집에 대한 독립적이고 비공개적인 액세스 권한을 가진 N 명의 사용자를 만들어야합니다. 각 사용자는 다른 사람에게 이동할 필요없이 거기에 포함 된 파일을 보관, 수정 및 삭제하기 위해 자신의 집에만 액세스 할 수 있습니다 (이미이 지점이 있습니다). ssh를 통한 액세스가 필요하지 않습니다.

    1. 각 사용자에 대해 케이지를 만들어야합니까? 아니면 동일한 케이지에 다른 사용자를 두면서 각각 "개인"디렉터리를 가질 수있는 방법이 있습니까?

    2. FTP 클라이언트를 통해 액세스 할 때 도구에 의해 생성 된 모든 디렉토리가 표시됩니다. 폴더를 깔끔하게 표시 할 수있는 방법이 있습니까? 아니면 도중에 뭔가 잘못 했나요?

  24.   Eduardlh

    훌륭한 튜토리얼! 그것은 나에게 큰 도움이되었고, 우분투 2.17에서 14.04 버전으로 테스트하고 있으며 매우 잘 작동합니다. 이제 다음과 같은 문제가 있습니다. 사용자가 어떤 경로로도 이동할 수 없도록 갇혀 있으면 다른 경로에있는 파일의 내용 만 볼 수 있기를 바랍니다. 나는 심볼릭 링크로 시도했지만이 파일에 꼬리 또는 고양이를 만들려고 할 때 사용자와 액세스 할 때 해당 파일을 케이지의 집에 나열 할 수 있지만 존재하지 않는다고 알려줍니다.

    도와 주시면 감사하겠습니다 미리 감사드립니다

  25.   야스

    안녕하세요, 전체 매뉴얼을 따랐으며 ssh로 로그인하면 자동으로 닫히고 추적합니다.

    4 월 19 일 20:09:27701 toby sshd [172.16.60.22] : 62009 포트 2 sshXNUMX에서 테스트 용 비밀번호 허용
    4 월 19 일 20:09:27701 toby sshd [0] : pam_unix (sshd : session) : (uid = XNUMX)에 의해 사용자 테스트를 위해 열린 세션
    4 월 19 일 20:09:27864 toby jk_chrootsh [1004] : 이제 인수와 함께 사용자 테스트 (XNUMX)를 위해 jail / opt / jail 입력
    4 월 19 일 20:09:27701 toby sshd [XNUMX] : pam_unix (sshd : 세션) : 사용자 테스트를 위해 세션이 종료되었습니다.

    감사합니다

  26.   오마르 라미레즈

    사용자에게 ssh 액세스 권한을 부여하는 마지막 단계를 수행해도 여전히 연결이 닫힙니다 .🙁

  27.   벤지

    이 생성 된 사용자가 루트로 변경할 수 있습니까? 당신의 루트? 그것은 나를 허용하지 않습니다. 당신의 도움에 감사드립니다

  28.   슬레븐

    튜토리얼 주셔서 대단히 감사합니다. clonezilla를 사용하여 이미지를 만들고 타사 서버에 복사 할 수 있지만 원하는 곳에 무리를 지어 줄 수없는 사용자를 만드는 데 필요했습니다.

  29.   마우로

    좋은! 나는 무언가를 알아야 할 것입니다.

    FTP를 사용하여 ROOT로 진입하고 이러한 권한을 가지고 SSH를 사용하지 않고 FTP로 관리 할 수 ​​있습니까? 연결, 터널 스타일 또는 이와 유사한 것을 생성한다고 가정 해 보겠습니다. 어떻게 수행됩니까? VSFTPD 파일을 구성 하시겠습니까?

    고마워요!