Hur man fängslar användare som ansluter via SSH

I vår värld finns det många, många hemligheter ... Jag tror verkligen inte att jag kan lära mig tillräckligt för att känna till de flesta av dem, och detta ges av det enkla faktum att Linux tillåter oss att göra så många, men så många saker att det är svårt för oss att känna till dem alla.

Den här gången kommer jag att förklara hur man gör något extremt användbart, något som många nätverks- eller systemadministratörer har behövt göra, och vi har haft svårt att helt enkelt inte hitta ett ganska enkelt sätt att uppnå det:

Hur man burar användare som ansluter via SSH

bur? ... WTF!

Ja, om vi av någon anledning måste ge SSH åtkomst till en vän till vår dator (eller server), måste vi alltid ta hand om säkerheten och stabiliteten hos vår dator eller server.

Det händer att vi nyligen ville ge Perseus SSH-åtkomst till en server av oss, men vi kan inte ge honom någon typ av åtkomst eftersom vi har riktigt känsliga konfigurationer där (vi har sammanställt många saker, paket som vi har installerat separat, etc. .) och om någon som inte gör Om jag försöker göra ens den minsta ändringen på servern finns det en möjlighet att allt går till spillo hehe.

Därefter, Hur man skapar en användare med extremt begränsade privilegier, så mycket att han inte ens kan komma ut ur sin bur (hem)?

Låt oss börja med att ladda ner jailkit, ett verktyg som gör att vi kan göra detta:

Alla följande kommandon körs som root

1. Först måste vi ladda ner vår JailKit-server.

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

2. Då måste vi packa upp paketet och ange den mapp som just dykt upp:

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

3. Senare fortsatte vi att kompilera och installera programvaran (Jag lämnar en skärmdump till dig):

./configure
make
make install

. / Configure

göra

make install

4. Klar, det här är redan installerat. Nu fortsätter vi med att skapa buren som kommer att innehålla framtida användare, i mitt fall skapade jag den i: / opt / och kallade den "fängelse", så sökvägen skulle vara: / opt / fängelse :

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

5. Buret är redan skapat, men det har inte alla nödvändiga verktyg så att framtida användare som kommer att vara där kan arbeta utan problem. Jag menar, hittills är buret skapat, men det är bara en tom ruta. Nu kommer vi att lägga in några verktyg som buranvändare behöver i buren:

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. Klar, buren finns och den har redan de verktyg som användaren kan använda ... nu behöver vi bara ... användaren! Låt oss skapa användaren kira och vi lägger det i buren:

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

Obs! Kör följande kommando i en terminal och det ska ha ett resultat som liknar det som visas på skärmdumpen:

cat /etc/passwd | grep jk_chroot

Om du märker att inget som skärmdumpen visas måste du ha gjort något fel. Lämna en kommentar här så hjälper jag dig gärna.

7. Och voila, användaren är redan bur ... men han är SÅ bur, att han inte kan ansluta med SSH, för när han försöker ansluta låter servern inte honom:

8. För att låta användaren ansluta måste vi göra ett steg till.

Vi måste redigera etc / passwd-filen i buren, det vill säga i det här fallet skulle det vara / opt / fängelse / etc / passwd , i den kommenterar vi den användarrad som vi skapade och lägger till en ny som:

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

Det vill säga, vi skulle ha filen så här passwd:

root: x: 0: 0: root: / root: / bin / bash
#kira: x: 1003: 1003: ,,,: / opt / fängelse /./ hem / kira: / usr / sbin / jk_lsh
kira: x: 1003: 1003 :: / home / kira: / bin / bash

Lägg märke till dubbla skiljetecken och andra, det är viktigt att inte släppa någon av dem 🙂

Efter detta kan användaren gå in utan problem 😀

Och det är allt.

Verktyget vi använder för allt detta (jailkit) används i backend chroot, vilket är faktiskt vad nästan alla självstudier använder. Men med JailKit blir det enklare att bura age

Viktigt!: Detta har testats på Debian Squeeze (6) y centos och det fungerade till 100%, testat i Debian Wheezy (7) och det har också fungerat, även om det är med en liten detalj, att användarens smeknamn inte visas i ssh, men det förlorar ingen funktionalitet.

Om någon har ett problem eller något är fel, lämna så mycket information som möjligt, jag anser mig inte vara en expert men jag hjälper dig så mycket jag kan.


50 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   v3 på sade

    då skulle det vara ungefär som behörigheterna i FTP? intressant

    du kommer alltid med allt som du inte ens visste existerade, som användarna i mysql xD

    1.    KZKG ^ Gaara sade

      Inte exakt, för SSH är inte samma sak som FTP. SSH är ett skal, det vill säga en terminal ... du skulle vara i en terminal på en annan dator eller server, du kan utföra kommandon, starta processer, etc ... du skulle göra så mycket som serveradministratören tillåter dig 😉

      hahahahaha nah kom igen, vad som händer är att jag publicerar mer tekniska saker ... det vill säga jag vill publicera små saker som inte är så populära och intressanta. Till exempel planerar jag personligen inte att publicera något den nya Ubuntu kommer ut, för jag tror att många redan kommer att prata om det ... Men vad du läser här i inlägget är det inte något som läses varje dag eller inte? 😀

      1.    Damian rivera sade

        Mycket bra bidrag tack

        det finns också ett protokoll som heter sftp som är ftp och Secure Shell tillsammans, även om det inte är detsamma som att köra FTP över SSH: \

        hälsningar

        1.    KZKG ^ Gaara sade

          Ja ja, men genom att cage SSH burar jag automatiskt den som ansluter med SFTP, för som du säger är SFTP faktiskt SSH + FTP

          hälsningar

  2.   giskard sade

    Bilderna kan inte ses !!! 🙁

    1.    KZKG ^ Gaara sade

      Ett litet misstag av mig hehe, berätta nu 😀

      1.    giskard sade

        Redo. Tack 😀

  3.   Rötter87 sade

    mycket bra, jag pekar på mina favoriter att ha den tillgänglig när jag behöver den lol

    1.    KZKG ^ Gaara sade

      Tack, alla frågor eller problem, vi är här för att hjälpa dig 🙂

  4.   Källans manual sade

    De har Perseus i en bur. http://i.imgur.com/YjVv9.png

    1.    rätt sade

      LOL
      xD

  5.   jorgemanjarrezlerma sade

    Hur mår du.

    Du vet, det är ett ämne som jag inte är så bekant med och som jag kollat ​​in BSD (PC-BSD och Ghost BSD) och jag tycker det är väldigt intressant och med funktioner som kan vara mycket användbara.

    Jag ska behålla det för referens och kontrollera det mot BSD-dokumentet. Tack för informationen.

    1.    KZKG ^ Gaara sade

      Jag kände inte heller till det här, för jag tänkte aldrig på att ge någon SSH-åtkomst till någon av mina servrar haha, men när jag hittade behovet av att göra det ville jag ge åtkomst men utan möjligheten att någon av misstag kan göra något som inte måste 😀

      Jag har aldrig provat det här på BSD-system, så jag kan inte säga att det kommer att fungera, men om du letar efter hur man kan rota i BSD, skulle något komma ut 😉

      Tack för kommentaren vän 🙂

      1.    Damian rivera sade

        Hej, jag använder FreeBSD och naturligtvis fungerar jailkit faktiskt den här i hamnarna

        Du installerar det med det här kommandot

        cd / usr / portar / skal / jailkit / && gör installationen ren

        Eller med ftp-paket

        pkg_add -r jailkit

        Endast i konfigurationen (kira: x: 1003: 1003 :: / home / kira: / bin / bash)

        Du måste lägga till tcsh eller sh, om du inte har installerat bash och lagt till den här sökvägen

        / usr / local / bin / bash

        Och några fler detaljer, i Ghost BSD borde det vara den liknande processen ännu enklare eftersom den är baserad på FreeBSD

        hälsningar

  6.   adiazc87 sade

    Bra, jag letade efter det; vet du om det fungerar i Centos ?? tack.

    1.    KZKG ^ Gaara sade

      Jag har inte testat det på Centos, men ja, det borde fungera :)
      Jag minns faktiskt att flera har använt samma verktyg på Centos och Red Hat servrar 😉

  7.   cyberalejo17 sade

    Tack så mycket. Det går direkt till bokmärken.

    1.    KZKG ^ Gaara sade

      Tack till dig för att du kommenterade 🙂

  8.   MV Altamirano sade

    Mycket bra "trick", super användbart för systemadministratörer. Men ännu bättre, utmärkt välskriven. Vad mer kan du önska.
    Tack så mycket för bidraget.

    1.    KZKG ^ Gaara sade

      Tack, tack så mycket för din kommentar 😀
      hälsningar

  9.   LiGNUxer sade

    Beröm SSH haha
    En gång försökte jag göra en bur för ssh men i traditionell stil och sanningen är att den aldrig kom korrekt ut. Om buren var igång hade den inte ens en bash, det vill säga den anslöt och det fanns inget kvar haha, om skalet fungerade kunde det gå upp i kataloghierarkin och mycket mer quilombos haha, men den här jailkit är en mace, den automatiserar alla dessa saker ... Rekommenderas starkt

    1.    KZKG ^ Gaara sade

      haha tack.
      Ja, faktiskt är SSH ett under för vad det tillåter oss, vilket egentligen inte är mer än vad systemet tillåter så ... hurra för Linux! ... haha.

  10.   nwt_lazaro sade

    Hej, en fråga!
    varför byta hem från (1) / opt / fängelse /./ home / kira till (2) / home / kira

    Vi måste redigera filen etc / passwd för buret, det vill säga i det här fallet skulle det vara / opt / jail / etc / passwd, i det kommenterar vi den användarrad som vi skapade och lägger till en ny som:

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

    Med andra ord skulle passwd-filen se ut så här:

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

    1.    KZKG ^ Gaara sade

      Hej 🙂
      Om det inte är inställt fungerar inte SSH-åtkomsten, användaren försöker ansluta men utesluts automatiskt ... det verkar vara ett fel eller problem med tolk som JailKit ger, för när den här ändringen berättar att den ska användas den normala bash i systemet, allt fungerar.

      1.    Omar ramirez sade

        Jag avslutar fortfarande ssh-sessionen: C
        Suse 10.1 x64

  11.   alexitu sade

    Hej jag har installerat det här och det fungerar utmärkt sinne mycket bra i centos = D

    men min dua är som tidigare att lägga till fler kommandon till exempel till en fängelseanvändare
    kan inte köra kommandot svn co http://pagina.com/carpeta

    Jag menar att det här kommandot inte finns för fängelseanvändare i det här fallet som för att lägga till dessa kommandon i fängelset och det finns många fler som jag behöver lägga till.

    1.    KZKG ^ Gaara sade

      Hej hur mår du 🙂
      Om du vill aktivera kommandot «svn» i fängelset har du kommandot jk_cp
      Det är:
      jk_cp / opt / fängelse / / bin / svn

      Detta förutsatt att svn binärt eller körbart är: / bin / svn
      Och låt buret / fängelset vara: / opt / fängelse /

      Du hittar kommandon som är beroende av andra, det vill säga om du lägger till kommandot «pepe» ser du att du också måste lägga till «federico», eftersom «pepe» beror på att «federico» ska köras, om du hittar detta då du lägger till nödvändiga kommandon och redan 😉

      1.    alexitu sade

        Det är utmärkt, jag testar det samtidigt, och jag berättar vad som hände, tack så mycket = D

        1.    KZKG ^ Gaara sade

          Lycka 😀

  12.   alexitu sade

    Jag har lyckats göra vad du sa till mig, men på det här sättet och automatiskt har det upptäckt mig utan problem. Detta var kommandot som jag brukade för att kunna använda subverisionen.

    jk_cp -j / home / jaul svn

    Jag använder centos xP och kanske är det annorlunda men bra
    nu skulle jag vilja veta vilka bibliotek som svn men nu vill jag kompilera för att säga att jag måste använda ett kommando som det här

    ./konfigurera och markera fel

    ./configure.lineno: rad 434: expr: kommandot hittades inte

    Jag skulle inte veta vilka bibliotek jag redan har installerat vad som är mysql och andra om det kompileras utanför fängelset men inte inuti jaui.

    beklagar olägenheten.

    ps: du borde lägga in guiden vad jag sa om kommandot som används i centos =) hälsningar.

    1.    KZKG ^ Gaara sade

      När jag säger att den inte kan hitta ett kommando (som här) är det första att hitta kommandot:

      whereis expr

      När det väl hittats (/ usr / bin / expr och / usr / bin / X11 / expr) kopierar vi det till fängelset med jk_cp 😉
      Prova detta för att se.

      Japp, jag redigerar redan inlägget och lägger till att det fungerar i Centos 😀

  13.   adiazc87 sade

    Stort tack så mycket (:

  14.   Jesus sade

    Tack för inmatningen ...

  15.   karma sade

    Hej hur är det?

  16.   djfenixchile sade

    Fan knulla! Från Chile mina hälsningar. Du är lika fart som jag! LOL!. Kramar. Ditt inlägg har varit till stor hjälp för mig!

    1.    KZKG ^ Gaara sade

      Tack för din kommentar 😀

  17.   Daniel PZ sade

    Tack så mycket för inlägget, det hjälpte mig mycket, men tyvärr i delen av

    ////////////////////////////////////////////////// //// ////////////////////////////////////////////// //////// //////////////////////
    Vi måste redigera filen etc / passwd för buret, det vill säga i det här fallet skulle det vara / opt / jail / etc / passwd, i det kommenterar vi den användarrad som vi skapade och lägger till en ny som:

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

    Med andra ord skulle passwd-filen se ut så här:

    root: x: 0: 0: root: / root: / bin / bash
    #kira: x: 1003: 1003: ,,,: / opt / fängelse /./ hem / kira: / usr / sbin / jk_lsh
    kira: x: 1003: 1003 :: / home / kira: / bin / bash
    ////////////////////////////////////////////////// //// //////////////////////////////////////////

    Det orsakar mig samma fel, jag menar, jag lämnar det som det är, och det startar mig från terminalen när jag ansluter ,,, .., jag kommenterar linjen och lägger till en till som ändrar det som du anger, och det också stövlar mig….

    Installera den senaste versionen "jailkit-2.16.tar", skapa till och med ett skript för att spara tid, här är det nedan:

    ////////////////////////////////////////////////// //// //////////////////////////////////////////////
    #! / Bin / bash
    wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
    tjära -zxvf jailkit-2.16.tar.gz
    cd jailkit-2.16
    . / Configure
    göra
    make install
    avsluta
    ////////////////////////////////////////////////// //// ///////////////////////////////

    Uppenbarligen loggar de in som "root" ...

    Hur kunde jag lösa felvän ????

    1.    Daniel PZ sade

      Tyvärr, jag har redan fått det, jag har gjort ett misstag angående hemmappen, men jag tvivlar mycket, hur kan jag få det att låta mig utföra kommandot "skärm", jag försöker använda det (i den burade användaren) , men det fungerar inte ... En annan sak är att ,, hur får jag den här buranvändaren att köra vinprogrammet på en exe som han bara satte in i sitt hem ,, hur skulle det vara?

  18.   Leonel sade

    hej, mycket bra tuto! Jag är ny i dessa miljöer, jag har en fråga ...
    När det gäller säkerhet ser jag att det i dess rot har många mappar, är de nödvändiga? Jag vill bara att han ska ha tillgång till sin mapp (ftp-upload och ssh-execute) så att han kan köra ett program, vilka mappar kan han ta bort från roten? eller utgör det inte någon fara för mig? Jag uppskattar din hjälp i förväg, hälsningar!

  19.   Kubaröd sade

    @ KZKG ^ Gaara, tack och lov, du satte wheezy-felet men med versionen av jailkit-2.16.tar.gz som du föreslog att de skulle fixa det

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

  20.   Algave sade

    Jag tror att jag skickar det till en PDF, jojo .. till bur och tack wn 😀

  21.   Samuel sade

    Hälsningar vän, jag har en fråga:

    Antag att vi har en användare som heter "test".

    Frågan är att filen /home/test/.ssh/known_hosts som finns i den användarens hem, är samma fil den här eller inte bur användaren?

  22.   Richard sade

    Prova detta. Det är möjligt med den här metoden att begränsa navigeringen till andra användares hem.

  23.   TZBKR sade

    Först och främst tack för inlägget! Det är mycket användbart för mig; men jag har två tvivel, och dessa härrör från det scenario jag har:

    Jag måste skapa N-användare med oberoende och privat åtkomst till sitt hem, varje användare kan bara komma åt sitt hem för att deponera, ändra och ta bort filer som finns där utan att behöva flytta till andra (jag har redan den här punkten). Det kräver inte åtkomst via ssh.

    1. Måste du skapa en bur för varje användare, eller finns det ett sätt att ha de olika användarna i samma bur men var och en har sin "privata" katalog?

    2. När du öppnar (via FTP-klient) visas alla kataloger som skapats av verktyget, finns det ett sätt att visa mappen på ett rent sätt? Eller gjorde jag något fel på vägen?

  24.   eduardlh sade

    Utmärkt handledning! Det har varit en stor hjälp för mig, jag testar det med version 2.17 på Ubuntu 14.04 och det fungerar mycket bra. Nu har jag följande utmaning, när användaren väl är burad så att han inte kan flytta till någon sökväg vill jag att han bara ska kunna se innehållet i en fil som ligger i en annan sökväg. Jag försökte med en symbolisk länk men när jag försöker skapa en svans eller en katt till den här filen berättar det för mig att den inte finns, men när jag går till användaren kan jag lista den filen i burens hem.

    Om du kunde hjälpa mig skulle jag vara mycket tacksam, tack på förhand

  25.   yas sade

    Hej, jag har följt hela manualen och när jag loggar in med ssh stängs den automatiskt, spårar:

    4 dec 19:20:09 toby sshd [27701]: Accepterat lösenord för test från 172.16.60.22 port 62009 ssh2
    4 dec 19:20:09 toby sshd [27701]: pam_unix (sshd: session): session öppnad för användartest av (uid = 0)
    4 dec 19:20:09 toby jk_chrootsh [27864]: går nu in i fängelse / opt / fängelse för användartest (1004) med argument
    4 dec 19:20:09 toby sshd [27701]: pam_unix (sshd: session): session stängd för användartest

    tack

  26.   Omar ramirez sade

    Inte när jag gör det sista steget att ge ssh åtkomst till användaren, det stänger fortfarande anslutningen 🙁

  27.   Benj sade

    Kan det vara möjligt från den här skapade användaren att byta till root? din -root? det låter mig inte. Hur skulle det vara? Tack för din hjälp

  28.   Slevin sade

    Tack så mycket för handledningen, jag behövde den för att skapa en användare som kunde använda clonezilla för att skapa en bild och kopiera den till en utländsk server men som inte kunde svärma vart han ville

  29.   Mauro sade

    Bra! Jag skulle behöva veta något.

    Är det möjligt att gå in som ROOT med FTP och ha dessa behörigheter, att hantera det med FTP och inte med SSH? Låt oss säga som att skapa en anslutning, tunnelstil eller något liknande. Hur görs det? Konfigurerar VSFTPD-filen?

    Tack så mycket!