Como prender usuários que se conectam via SSH

Em nosso mundo existem muitos, muitos segredos ... Eu honestamente não acho que posso aprender o suficiente para conhecer a maioria deles, e isso é dado pelo simples fato de que o Linux nos permite fazer tantos, mas tantas coisas que é difícil para nós conhecê-los todos.

Desta vez, explicarei como fazer algo extremamente útil, algo que muitos administradores de rede ou sistema precisaram fazer, e achamos difícil simplesmente não encontrar uma maneira bastante simples de fazer isso:

Como prender usuários que se conectam via SSH

cela? … WTF!

Sim. Se por algum motivo tivermos que dar acesso SSH a um amigo nosso ao nosso computador (ou servidor), devemos sempre cuidar da segurança e estabilidade do nosso computador ou servidor.

Acontece que recentemente queríamos dar a Perseus acesso SSH a um servidor nosso, mas não podemos dar a ele nenhum tipo de acesso porque temos configurações muito sensíveis lá (compilamos muitas coisas, pacotes que instalamos individualmente, etc. .) e se alguém que não quer Se eu tento fazer a menor alteração no servidor, existe a possibilidade de que tudo vá para o lixo hehe.

Em seguida, Como criar um usuário com privilégios extremamente limitados, tanto que não consegue nem sair da gaiola (casa)?

Vamos começar baixando jaula, uma ferramenta que nos permitirá fazer isso:

Todos os comandos a seguir são executados como root

1. Primeiro, devemos baixar nosso servidor JailKit.

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

2. Então devemos descompactar o pacote e entrar na pasta que acabou de aparecer:

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

3. Mais tarde, compilamos e instalamos o software (Deixo você screenshot):

./configure
make
make install

. / Configure

fazer

make install

4. Pronto, isso já está instalado. Agora vamos criar a gaiola que conterá os futuros usuários, no meu caso eu a criei em: / opt / e a chamei de "prisão", então o caminho seria: / opt / jail :

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

5. A gaiola já está criada, mas não possui todas as ferramentas necessárias para que os futuros usuários que lá estarão possam trabalhar sem problemas. Quer dizer, até este ponto a gaiola foi criada, mas é apenas uma caixa vazia. Agora colocaremos na gaiola algumas ferramentas de que os usuários enjaulados precisarão:

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. Pronto, a gaiola existe e já tem as ferramentas para o usuário usar ... agora só precisamos ... do usuário! Vamos criar o usuário kira e vamos colocá-lo na gaiola:

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

Nota: Execute o seguinte comando em um terminal e deve ter um resultado semelhante ao mostrado na imagem:

cat /etc/passwd | grep jk_chroot

Se você notar que nada como a captura de tela aparece, você deve ter feito algo errado. Deixe um comentário aqui e terei prazer em ajudá-lo.

7. E pronto, o usuário já está enjaulado ... mas, ele está TÃO enjaulado, que não consegue se conectar por SSH, porque quando ele tenta se conectar o servidor não deixa ele:

8. Para permitir que o usuário se conecte, devemos realizar mais uma etapa.

Devemos editar o arquivo etc / passwd da gaiola, ou seja, neste caso seria / opt / jail / etc / passwd , nele comentamos a linha do usuário que criamos e adicionamos uma nova, como:

kira: x: 1003: 1003 :: / home / kira: / bin / bash

Ou seja, teríamos o arquivo assim passwd:

root: x: 0: 0: root: / root: / bin / bash
#kira: x: 1003: 1003: ,,,: / opt / jail /./ home / kira: / usr / sbin / jk_lsh
kira: x: 1003: 1003 :: / home / kira: / bin / bash

Observe bem os sinais de pontuação duplicados e outros, é importante não deixar cair nenhum 🙂

Depois de fazer isso, o usuário pode entrar sem problemas 😀

E isso é tudo.

A ferramenta que usamos para tudo isso (jaula) usar no backend chroot, que é realmente o que quase todos os tutoriais usam. No entanto, usando o JailKit, fica mais simples prendê-lo

Importante!: Isso foi testado em Compressão Debian (6) y Centos e funcionou para 100%, testado no Debian Wheezy (7) e também tem funcionado, embora com um pequeno detalhe, que o apelido do usuário não seja mostrado no ssh, mas não perde nenhuma funcionalidade.

Se alguém tiver um problema ou algo estiver errado, deixe o máximo de detalhes possível, não me considero um especialista mas irei te ajudar no máximo que puder.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   v3on dito

    então seria algo como as permissões no FTP? interessante

    você sempre sai com tudo que você nem sabia que existia, como os usuários no mysql xD

    1.    KZKG ^ Gaara dito

      Não exatamente, porque SSH não é o mesmo que FTP. SSH é um shell, ou seja, um terminal ... você estaria em um terminal em outro computador ou servidor, poderia executar comandos, iniciar processos, etc ... você faria tanto quanto o administrador do servidor permitir 😉

      hahahahahaha nah vamos lá, o que acontece é que eu publico mais coisas técnicas ... ou seja, gosto de publicar coisinhas que não sejam tão populares e interessantes. Por exemplo, pessoalmente não pretendo publicar algo no dia do lançamento do novo Ubuntu, pois acredito que muitos já vão falar sobre isso ... porém, o que você leu aqui no post, não é algo que se lê todos os dias ou não? 😀

      1.    damian rivera dito

        Muito boas contribuições, obrigado

        há também um protocolo chamado sftp que é ftp e Secure Shell juntos, embora não seja o mesmo que executar FTP sobre SSH: \

        lembranças

        1.    KZKG ^ Gaara dito

          Sim, sim, mas prendendo SSH automaticamente prenderei qualquer pessoa que se conectar usando SFTP, porque como você disse, SFTP é na verdade SSH + FTP 😀

          lembranças

  2.   moela dito

    As imagens não podem ser vistas !!! 🙁

    1.    KZKG ^ Gaara dito

      Um pequeno erro meu hehe, diga-me agora 😀

      1.    moela dito

        Pronto. Obrigado 😀

  3.   apodrece87 dito

    muito bom, indico nos meus favoritos para tê-lo disponível quando eu precisar rs

    1.    KZKG ^ Gaara dito

      Obrigado, qualquer dúvida ou problema, estamos aqui para ajudá-lo 🙂

  4.   Manuel da Fonte dito

    Eles têm Perseu em uma gaiola. http://i.imgur.com/YjVv9.png

    1.    adequado dito

      RI MUITO
      xD

  5.   jorgemanjarrezlerma dito

    Que tal.

    Sabe, é um assunto que não conheço muito e que andava checando no BSD (PC-BSD e Ghost BSD) e acho muito interessante e com funcionalidades que podem ser muito úteis.

    Vou mantê-lo para referência e compará-lo com o documento BSD. Obrigado pela dica.

    1.    KZKG ^ Gaara dito

      Eu também não estava familiarizado com isso, porque nunca pensei em dar a alguém acesso SSH a nenhum dos meus servidores haha, mas quando achei a necessidade de fazê-lo, quis dar acesso, mas sem a possibilidade de alguém por engano fazer algo que não deve 😀

      Nunca tentei fazer isso em sistemas BSD, então não posso dizer que funcionará, mas se você está procurando como fazer o chroot no BSD, algo deve sair

      Obrigado pelo comentário amigo 🙂

      1.    damian rivera dito

        Olá, eu uso FreeBSD e é claro que o jailkit funciona de fato isso nos ports

        Você instala com este comando

        cd / usr / ports / shells / jailkit / && make install clean

        Ou por pacote ftp

        pkg_add -r jailkit

        Apenas na configuração (kira: x: 1003: 1003 :: / home / kira: / bin / bash)

        Você precisa adicionar tcsh ou sh, a menos que tenha instalado o bash e adicione este caminho

        / usr / local / bin / bash

        E mais alguns detalhes, no Ghost BSD deve ser o processo semelhante ainda mais simples, pois é baseado no FreeBSD

        lembranças

  6.   adiazc87 dito

    Ótimo, eu estava procurando por isso; sabe se funciona no Centos ?? obrigado.

    1.    KZKG ^ Gaara dito

      Eu não tentei no Centos, mas sim, deve funcionar :)
      Na verdade, eu lembro que vários usaram essa mesma ferramenta em servidores Centos e Red Hat 😉

  7.   ciberalejo17 dito

    Muito obrigado. Vai diretamente para os favoritos.

    1.    KZKG ^ Gaara dito

      Obrigado por comentar 🙂

  8.   MV Altamirano dito

    Muito bom "truque", super útil para administradores de sistemas. Mas melhor ainda, excelentemente bem escrito. O que mais se pode pedir.
    Muito obrigado pela contribuição.

    1.    KZKG ^ Gaara dito

      Obrigado, muito obrigado pelo seu comentário 😀
      lembranças

  9.   LiGNUxeroGenericName dito

    Louvado seja SSH haha
    Uma vez tentei fazer uma gaiola para ssh mas no estilo tradicional e a verdade é que nunca saiu direito. Se a gaiola estava rodando não tinha nem bash, ou seja, conectou e não sobrou nada haha, se a shell rodou podia subir na hierarquia de diretórios e muito mais quilombos haha ​​mas este jailkit é uma maça, ele automatiza todas essas coisas ... Altamente recomendado

    1.    KZKG ^ Gaara dito

      haha Obrigado.
      Sim, na verdade o SSH é uma maravilha pelo que nos permite, que na verdade nada mais é do que o que o sistema permite então ... uau para o Linux! … Haha.

  10.   nwt_lazaro dito

    Olá, uma pergunta!
    por que mudar a casa de (1) / opt / jail /./ home / kira para (2) / home / kira

    Devemos editar o arquivo etc / passwd do cage, ou seja, neste caso seria / opt / jail / etc / passwd, nele comentamos a linha do usuário que criamos, e adicionamos uma nova como:

    kira: x: 1003: 1003 :: / home / kira: / bin / bash

    Em outras palavras, o arquivo passwd ficaria assim:

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

    1.    KZKG ^ Gaara dito

      Olá 🙂
      Se não estiver configurada, o acesso SSH não funciona, o usuário tenta se conectar mas é automaticamente expulso ... parece ser um bug ou problema com o interpretador que o JailKit traz, pois ao fazer essa alteração diz para ele usar o sistema bash normal, tudo funciona.

      1.    Omar Ramírez dito

        Eu ainda fecho a sessão ssh: C
        Suse 10.1x64

  11.   alexitu dito

    Olá instalei isto e funciona excelente mente muito bem em centos = D

    mas meu dua é como atrás para adicionar mais comandos, por exemplo, para um usuário de prisão
    não consigo executar o comando svn co http://pagina.com/carpeta

    Quer dizer, este comando não existe para usuários de jaula neste caso como atrás para adicionar esses comandos à jaula e há muitos mais que eu preciso adicionar.

    1.    KZKG ^ Gaara dito

      Olá como vai você?
      Se você deseja habilitar o comando «svn» na Jail você tem o comando jk_cp
      Isso é:
      jk_cp / opt / jail / / bin / svn

      Assumindo que o binário ou executável svn é: / bin / svn
      E deixe a Cage / Jail ser: / opt / jail /

      Irá encontrar comandos que dependem de outros, ou seja, se adicionar o comando «pepe» verá que também deve adicionar «federico», porque «pepe» depende do «federico» para ser executado, se o encontrar adiciona os comandos necessários e já 😉

      1.    alexitu dito

        Excelente, estou testando ao mesmo tempo e conto o que aconteceu, muito obrigado = D

        1.    KZKG ^ Gaara dito

          Sorte 😀

  12.   alexitu dito

    Consegui fazer o que me disse mas desta forma e automaticamente detectou sem problemas, este era o comando que usava para conseguir usar o subversion.

    jk_cp -j / home / jaul svn

    Bem, eu uso centos xP e talvez seja diferente, mas bom
    agora eu gostaria de saber quais são as bibliotecas como svn, mas agora eu gostaria de compilar porque digamos que eu preciso usar um comando como este

    ./ configurar e marcar erro

    ./configure.lineno: linha 434: expr: comando não encontrado

    Não saberia quais são as bibliotecas que já instalei o que é mysql e outras se compila fora da jaui mas não dentro do jaui.

    Desculpe pela inconveniência.

    ps: você deve colocar no guia o que eu falei sobre o comando usado em centos =) saudações.

    1.    KZKG ^ Gaara dito

      Olha, quando eu digo que ele não consegue encontrar um comando (como aqui) a primeira coisa é encontrar o comando:

      whereis expr

      Uma vez encontrado (/ usr / bin / expr e / usr / bin / X11 / expr), nós o copiamos para a Jail com jk_cp 😉
      Tente isso para ver.

      Sim, já editei o post e acrescento que funciona no Centos 😀

  13.   adiazc87 dito

    Ótimo, muito obrigado (:

  14.   Jesus dito

    Obrigado pela contribuição…

  15.   carma dito

    Oi como você está?

  16.   Djfenixchile dito

    Foda-se cara! Do Chile minhas saudações. Você é tão peido quanto eu! kkkkk!. Abraços. Sua postagem foi uma grande ajuda para mim!

    1.    KZKG ^ Gaara dito

      Obrigado pelo seu comentário 😀

  17.   Daniel PZ dito

    Muito obrigado pelo post, me ajudou muito, mas infelizmente na parte de

    //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////
    Devemos editar o arquivo etc / passwd do cage, ou seja, neste caso seria / opt / jail / etc / passwd, nele comentamos a linha do usuário que criamos, e adicionamos uma nova como:

    kira: x: 1003: 1003 :: / home / kira: / bin / bash

    Em outras palavras, o arquivo passwd ficaria assim:

    root: x: 0: 0: root: / root: / bin / bash
    #kira: x: 1003: 1003: ,,,: / opt / jail /./ home / kira: / usr / sbin / jk_lsh
    kira: x: 1003: 1003 :: / home / kira: / bin / bash
    ////////////////////////////////////////////////////// ////////////////////////////////////////////

    Me causa o mesmo erro, quer dizer, deixo como está, e me inicializa pelo terminal ao conectar ,,, .., comento a linha e adiciono mais uma modificando conforme você indica, e também me inicializa….

    Instale a última versão "jailkit-2.16.tar", crie até mesmo um script para economizar tempo, aqui está ele:

    //////////////////////////////////////////////////////// // ////////////////////////////////////////////////////
    #! / Bin / bash
    wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
    tar -zxvf jailkit-2.16.tar.gz
    jailkit-cd 2.16
    . / Configure
    fazer
    make install
    saída
    ////////////////////////////////////////////////////// /////////////////////////

    Obviamente, primeiro eles fazem login como "root" ...

    Como eu poderia resolver o erro amigo ????

    1.    Daniel PZ dito

      Desculpe, já entendi, cometi um erro na pasta Home, mas estou com uma grande dúvida, como faço para que eu execute o comando "screen", tento usar (no usuário enjaulado) , mas não funciona ... Outra coisa é que, como faço para que esse usuário enjaulado execute o programa wine em um exe que ele acabou de colocar dentro de sua casa, como seria?

  18.   leonel dito

    olá, tuto muito bom! Sou novo nesses ambientes, tenho uma dúvida ...
    Quanto à segurança, vejo que na raiz dele tem várias pastas, são necessárias? Eu só quero que ele tenha acesso à sua pasta (ftp-upload e ssh-execute) para que ele possa executar um aplicativo, quais pastas ele pode excluir da raiz? ou não representa nenhum perigo para mim? Agradeço sua ajuda antecipadamente, saudações!

  19.   Cuba Vermelho dito

    @ KZKG ^ Gaara, graças a Deus você colocou o erro de chiado, mas com a versão do jailkit-2.16.tar.gz que você sugeriu que eles corrigissem

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

  20.   Alga dito

    Acho que vou passar para um PDF, jojo .. para a gaiola e obrigado wn 😀

  21.   Samuel dito

    Saudações amigo, tenho uma pergunta:

    Suponha que tenhamos um usuário chamado "teste".

    A questão é, o arquivo /home/test/.ssh/known_hosts que está localizado na casa daquele usuário, é o mesmo arquivo que está ou não preso ao usuário?

  22.   Richart dito

    Experimente isso. É possível com este método restringir a navegação à outra casa de outros usuários.

  23.   TZBKR dito

    Em primeiro lugar, obrigado pela postagem! Está sendo muito útil para mim; mas tenho duas dúvidas, e estas surgem do cenário que tenho:

    Preciso criar N usuários com acesso independente e privado à sua casa, cada usuário só pode acessar sua casa para depositar, modificar e excluir os arquivos contidos nela sem ter que se deslocar para outros (já tenho esse ponto). Não requer acesso via ssh.

    1. Você precisa criar uma gaiola para cada usuário ou existe uma maneira de ter diferentes usuários na mesma gaiola, mas cada um com seu diretório "privado"?

    2. Ao acessar (via cliente FTP) são mostrados todos os diretórios criados pela ferramenta, há como mostrar a pasta limpa? Ou fiz algo errado ao longo do caminho?

  24.   Eduardlh dito

    Excelente tutorial! Tem sido uma grande ajuda para mim, estou testando com a versão 2.17 no Ubuntu 14.04 e funciona muito bem. Agora tenho o seguinte desafio, uma vez que o usuário está preso de modo que não possa se mover para nenhum caminho, quero que ele só possa ver o conteúdo de um arquivo que está em outro caminho. Tentei com um link simbólico mas ao tentar fazer um rabo ou gato a este arquivo me diz que não existe embora ao acessar com o usuário possa listar esse arquivo na casa da gaiola.

    Se você pudesse me ajudar ficaria muito grato, agradeço antecipadamente

  25.   yas dito

    Olá, segui todo o manual e ao efetuar login com ssh ele fecha automaticamente, rastreia:

    4 de dezembro 19:20:09 toby sshd [27701]: senha aceita para teste de 172.16.60.22 porta 62009 ssh2
    4 de dezembro 19:20:09 toby sshd [27701]: pam_unix (sshd: sessão): sessão aberta para teste do usuário por (uid = 0)
    4 de dezembro 19:20:09 toby jk_chrootsh [27864]: agora inserindo jail / opt / jail para teste do usuário (1004) com argumentos
    4 de dezembro 19:20:09 toby sshd [27701]: pam_unix (sshd: sessão): sessão fechada para teste do usuário

    obrigado

  26.   Omar Ramírez dito

    Não quando eu faço a última etapa de dar acesso ssh ao usuário, ele ainda fecha a conexão 🙁

  27.   Benj dito

    É possível a partir desse usuário criado mudar para root? sua raiz? não me deixa. Como seria? Obrigado pela sua ajuda

  28.   Slevin dito

    Muito obrigado pelo tutorial, eu precisava dele para criar um usuário que pudesse usar clonezilla para fazer uma imagem e copiá-la para um servidor de terceiros, mas que não pudesse enxamear onde quisesse

  29.   Mauro dito

    Boa! Eu precisaria saber de algo.

    É possível entrar como ROOT usando FTP e tendo essas permissões, para gerenciá-lo por FTP e não com SSH? Digamos como criar uma conexão, estilo de túnel ou algo parecido. Como isso é feito? Configurando o arquivo VSFTPD?

    Obrigado!