Jak uvěznit uživatele připojující se přes SSH

V našem světě existuje mnoho, mnoho tajemství ... Upřímně si nemyslím, že se mohu naučit dost, abych většinu z nich poznal, a to je dáno prostým faktem, že Linux nám umožňuje dělat tolik, ale tolik věcí, které je pro nás těžké je všechny znát.

Tentokrát vysvětlím, jak udělat něco mimořádně užitečného, ​​něco, co musí udělat mnoho správců sítí nebo systémů, a my jsme zjistili, že je obtížné jednoduše nenajít docela jednoduchý způsob, jak toho dosáhnout:

Jak umístit uživatele do klece připojující se přes SSH

klec? … WTF!

Ano. Pokud z nějakého důvodu musíme poskytnout přístup SSH k našemu příteli k našemu počítači (nebo serveru), musíme se vždy postarat o bezpečnost a stabilitu našeho počítače nebo serveru.

Stává se, že jsme nedávno chtěli dát Perseus SSH přístup na náš server, ale nemůžeme mu dát žádný typ přístupu, protože tam máme opravdu citlivé konfigurace (sestavili jsme mnoho věcí, balíčky, které jsme nainstalovali jednotlivě atd.) .) Ať už se pokusím udělat i tu nejmenší změnu na serveru, existuje možnost, že všechno půjde nazmar.

Pak, Jak vytvořit uživatele s extrémně omezenými oprávněními, a to natolik, že se nemůže ani dostat ven ze své klece (doma)?

Začněme stažením vězení, nástroj, který nám to umožní:

Všechny následující příkazy jsou spouštěny jako root

1. Nejprve si musíme stáhnout náš server JailKit.

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

2. Pak musíme balíček rozbalit a zadat složku, která se právě objevila:

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

3. Později jsme pokračovali v kompilaci a instalaci softwaru (Nechám vám screenshot):

./configure
make
make install

. / Configure

činit

make install

4. Připraveno, toto je již nainstalováno. Nyní pokračujeme vytvořením klece, která bude obsahovat budoucí uživatele, v mém případě jsem ji vytvořil v: / opt / a nazval ji „vězení“, takže cesta by byla: / opt / vězení :

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

5. Klec je již vytvořena, ale nemá všechny potřebné nástroje, aby budoucí uživatelé, kteří tam budou, mohli bez problémů pracovat. Myslím, že až do tohoto okamžiku je klec vytvořena, ale je to jen prázdné pole. Nyní vložíme do klece některé nástroje, které uživatelé v klecích budou potřebovat:

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. Připraveno, klec existuje a již má nástroje, které může uživatel používat ... nyní potřebujeme jen ... uživatele! Chystáme se vytvořit uživatele Kira a dáme to do klece:

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

Poznámka: Spusťte následující příkaz v terminálu a měl by mít výsledek podobný tomu, který je zobrazen na snímku obrazovky:

cat /etc/passwd | grep jk_chroot

Pokud si všimnete, že se nic jako snímek obrazovky neobjeví, musíte udělat něco špatně. Zanechte zde komentář a já vám rád pomůžu.

7. A voila, uživatel je již v kleci ... ale je v SO kleci, že se nemůže připojit pomocí SSH, protože při pokusu o připojení mu server nedovolí:

8. Abychom uživateli umožnili připojení, musíme udělat ještě jeden krok.

Musíme upravit soubor etc / passwd v kleci, to znamená, že v tomto případě by to bylo / opt / vězení / etc / passwd , v něm komentujeme uživatelskou linku, kterou jsme vytvořili, a přidáme novou, například:

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

To znamená, že bychom měli takový soubor passwd:

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

Všimněte si duplicitních interpunkčních znamének a dalších, je důležité, abyste žádné z nich nevyhodili 🙂

Poté může uživatel bez problémů vstoupit 😀

A to je vše.

Nástroj, který k tomu používáme (vězení) použití v backendu chroot, což je vlastně to, co používají téměř všechny výukové programy. Používání JailKit je však jednodušší do klece 😉

Důležité!: Toto bylo testováno na Debian Squeeze (6) y CentOS a fungovalo to na 100%, testováno v Debianu Wheezy (7) a také fungovalo, i když s malými detaily, že přezdívka uživatele není zobrazena v ssh, ale neztrácí žádnou funkčnost.

Pokud někdo představuje problém nebo něco nefunguje, nechte co nejvíce podrobností, nepovažuji se za odborníka, ale pomůžu vám, jak budu moci.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   v3on řekl

    pak by to bylo něco jako oprávnění na FTP? zajímavý

    vždy vyjdete se vším, o čem jste ani nevěděli, že existuje, jako uživatelé v mysql xD

    1.    KZKG ^ Gaara řekl

      Ne přesně, protože SSH není stejný jako FTP. SSH je shell, tedy terminál ... nacházeli byste se v terminálu na jiném počítači nebo serveru, mohli byste spouštět příkazy, spouštět procesy atd ... dělali byste tolik, kolik vám administrátor serveru dovolí 😉

      hahahahaha nah no tak, co se stane, je, že vydávám více technických věcí ... to znamená, že rád vydávám maličkosti, které nejsou tak populární a zajímavé. Například já osobně neplánuji něco publikovat v den, kdy vyjde nový Ubuntu, protože věřím, že o tom už bude mnoho mluvit ... nicméně to, co se dočtete zde v příspěvku, není něco, co se čte každý den nebo ne? 😀

      1.    Damian rivera řekl

        Velmi dobré příspěvky děkuji

        existuje také protokol s názvem sftp, což je ftp a Secure Shell společně, i když to není totéž jako běh FTP přes SSH: \

        pozdravy

        1.    KZKG ^ Gaara řekl

          Ano, ano, ale ukládáním do mezipaměti SSH automaticky ukládám do klece každého, kdo se připojuje pomocí SFTP, protože jak říkáte, SFTP je ve skutečnosti SSH + FTP 😀

          pozdravy

  2.   giskard řekl

    Obrázky nelze vidět !!! 🙁

    1.    KZKG ^ Gaara řekl

      Moje malá chyba, hehe, řekni mi to 😀

      1.    giskard řekl

        Připraven. Díky 😀

  3.   hnije87 řekl

    velmi dobře, ukazuji to na své oblíbené, abych to měl k dispozici, když to potřebuji lol

    1.    KZKG ^ Gaara řekl

      Děkujeme, máte jakékoli dotazy nebo problémy, jsme tu, abychom vám pomohli 🙂

  4.   Manuál Zdroje řekl

    Mají Perseuse v kleci. http://i.imgur.com/YjVv9.png

    1.    řádný řekl

      LOL
      xD

  5.   Jorgemanjarrezlerma řekl

    Co se děje

    Víte, je to předmět, se kterým nejsem moc obeznámen a který jsem kontroloval v BSD (PC-BSD a Ghost BSD) a považuji ho za velmi zajímavý a s funkcemi, které mohou být velmi užitečné.

    Ponechám to pro referenci a porovnám to s BSD doc. Díky za informace.

    1.    KZKG ^ Gaara řekl

      Ani já jsem s tím nebyl obeznámen, protože mě nikdy nenapadlo dát někomu SSH přístup na některý z mých serverů haha, ale když jsem zjistil, že je to potřeba, chtěl jsem mu dát přístup, ale bez možnosti, že by někdo mohl omylem něco udělat to nebylo nutné 😀

      Nikdy jsem to nezkoušel na systémech BSD, takže vám nemohu říci, že to bude fungovat, ale pokud hledáte, jak chrootovat na BSD, něco by mělo vyjít

      Díky za komentář, příteli 🙂

      1.    Damian rivera řekl

        Dobrý den, používám FreeBSD a jailkit samozřejmě funguje ve skutečnosti v portech

        Nainstalujete jej pomocí tohoto příkazu

        cd / usr / porty / mušle / jailkit / && proveďte instalaci čistou

        Nebo paketem ftp

        pkg_add -r jailkit

        Pouze v konfiguraci (kira: x: 1003: 1003 :: / home / kira: / bin / bash)

        Musíte přidat tcsh nebo sh, pokud nemáte nainstalovaný bash a přidat tuto cestu

        / usr / local / bin / bash

        A několik dalších podrobností, v Ghost BSD by měl být podobný proces ještě jednodušší, protože je založen na FreeBSD

        pozdravy

  6.   adiazc87 řekl

    Skvělé, hledal jsem to; víš, jestli to funguje v Centosu ?? dík.

    1.    KZKG ^ Gaara řekl

      Netestoval jsem to na Centos, ale ano, mělo by to fungovat :)
      Ve skutečnosti si pamatuji, že několik použilo stejný nástroj na serverech Centos a Red Hat 😉

  7.   kyberalejo17 řekl

    Díky moc. Přechází přímo na záložky.

    1.    KZKG ^ Gaara řekl

      Děkuji za komentář 🙂

  8.   MV Altamirano řekl

    Velmi dobrý „trik“, super užitečný pro správce systému. Ale ještě lepší, výborně napsané. Co víc si přát.
    Děkuji moc za příspěvek.

    1.    KZKG ^ Gaara řekl

      Děkuji, moc vám děkuji za komentář 😀
      pozdravy

  9.   LiGNUxer řekl

    Chvála SSH haha
    Jednou jsem se pokusil vyrobit klec pro ssh, ale v tradičním stylu a pravdou je, že to nikdy nevyšlo správně. Pokud klec běžela, neměla ani bash, to znamená, že se připojila a nezbylo nic haha, pokud byl spuštěn shell, mohla by jít nahoru v hierarchii adresářů a mnohem více quilombos haha ​​ale tento jailkit je palcát, automatizuje všechny ty věci ... Důrazně doporučujeme

    1.    KZKG ^ Gaara řekl

      Haha, děkuji.
      Ano, ve skutečnosti je SSH skvělé pro to, co nám umožňuje, což ve skutečnosti není nic jiného než to, co systém umožňuje, takže ... hurá pro Linux! … Haha.

  10.   nwt_lazaro řekl

    Dobrý den, otázka!
    proč změnit domov z (1) / opt / vězení /./ domov / kira na (2) / domov / kira

    Musíme upravit soubor etc / passwd klece, tj. V tomto případě by to byl / opt / jail / etc / passwd, v něm okomentujeme uživatelskou linku, kterou jsme vytvořili, a přidáme novou, například:

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

    Jinými slovy by soubor passwd vypadal takto:

    kořen: x: 0: 0: kořen: / 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 řekl

      Ahoj 🙂
      Pokud to není nastaveno, přístup SSH nefunguje, uživatel se pokusí připojit, ale je automaticky vyloučen ... zdá se, že jde o chybu nebo problém s tlumočníkem, který JailKit přináší, protože při provádění této změny naznačuje, že používá normální bash systém, všechno funguje.

      1.    Omar Ramirez řekl

        Stále ukončuji relaci ssh: C
        Suse 10.1 x64

  11.   alexitu řekl

    Ahoj, nainstaloval jsem si to a v centos = D funguje velmi dobře

    ale moje dua jako dříve přidává další příkazy například uživateli vězení
    nelze spustit příkaz svn co http://pagina.com/carpeta

    Myslím, že tento příkaz neexistuje, aby uživatelé vězení v tomto případě jako před tím přidali tyto příkazy do vězení, a existuje mnoho dalších, které musím přidat.

    1.    KZKG ^ Gaara řekl

      Ahoj, jak se máš?
      Chcete-li ve vězení povolit příkaz «svn», máte příkaz jk_cp
      To je:
      jk_cp / opt / vězení / / bin / svn

      To za předpokladu, že svn binární nebo spustitelný je: / bin / svn
      A ať je klec / vězení: / opt / vězení /

      Najdete příkazy, které závisí na ostatních, to znamená, že pokud přidáte příkaz «pepe», uvidíte, že musíte přidat také «federico», protože «pepe» závisí na tom, které «federico» má být provedeno. Již 😉

      1.    alexitu řekl

        To je vynikající.

        1.    KZKG ^ Gaara řekl

          Štěstí 😀

  12.   alexitu řekl

    Podařilo se mi udělat, co jste mi řekli, ale tímto způsobem a automaticky mě bez problémů detekoval. To byl příkaz, kterým jsem byl schopen používat podverzi.

    jk_cp -j / home / jaul svn

    no já používám centos xP a možná je to jiné, ale dobré
    teď bych chtěl vědět, které jsou knihovny jako svn, ale teď bych chtěl kompilovat, protože řekněme, že musím použít takový příkaz

    ./konfigurovat a označit chybu

    ./configure.lineno: řádek 434: expr: příkaz nebyl nalezen

    Nevěděl bych, které jsou knihovny, které jsem již nainstaloval, co je mysql a další, pokud se kompiluje mimo vězení, ale ne uvnitř jaui.

    omluvám se za nepříjemnost.

    ps: měli byste do průvodce dát to, co jsem vám řekl o příkazu použitém v pozdravech centos =).

    1.    KZKG ^ Gaara řekl

      Podívejte se, když vám řeknu, že nemůže najít příkaz (jako zde), první věcí je najít příkaz:

      whereis expr

      Po nalezení (/ usr / bin / expr a / usr / bin / X11 / expr) jej zkopírujeme do vězení pomocí jk_cp 😉
      Zkuste to vidět.

      Ano, příspěvek už upravuji a dodávám, že funguje v Centos 😀

  13.   adiazc87 řekl

    Velké děkuji moc (:

  14.   Ježíš řekl

    Díky za vstup ...

  15.   karma řekl

    Ahoj jak se máš?

  16.   djfenixchile řekl

    Do prdele, vole! Z Chile můj pozdrav. Jsi prd jako já! LOL !. Objetí. Váš příspěvek mi velmi pomohl!

    1.    KZKG ^ Gaara řekl

      Děkujeme za váš komentář 😀

  17.   Daniel PZ řekl

    Moc děkuji za příspěvek, hodně mi pomohl, ale bohužel v části

    //////////////////////////////////////////////////////// // //////////////////////////////////////////////////// ////// ////////////////////////
    Musíme upravit soubor etc / passwd klece, tj. V tomto případě by to byl / opt / jail / etc / passwd, v něm okomentujeme uživatelskou linku, kterou jsme vytvořili, a přidáme novou, například:

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

    Jinými slovy by soubor passwd vypadal takto:

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

    Způsobuje mi to stejnou chybu, chci říct, nechám to tak, jak to je, a zaváže mě to z terminálu při připojování ,,, .., okomentuji řádek a přidám ještě jednu modifikaci, jak naznačuješ, a také boty mě ...

    Nainstalujte si nejnovější verzi „jailkit-2.16.tar“, dokonce vytvořte skript, který vám ušetří čas, zde je níže:

    //////////////////////////////////////////////////////// // //////////////////////////////////////////////////
    #! / bin / bash
    wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
    tar -zxvf jailkit -2.16.tar.gz
    cd jailkit-2.16
    . / Configure
    činit
    make install
    výstup
    ////////////////////////////////////////////////// /////////////////////////

    Je zřejmé, že nejprve se přihlásí jako „root“ ...

    Jak bych mohl vyřešit chybu přítele ????

    1.    Daniel PZ řekl

      Omlouvám se, už jsem to pochopil, udělal jsem chybu v domovské složce, ale mám velké pochybnosti, jak ji můžu nechat provést příkaz „obrazovka“, zkusím to použít (v klecovém uživateli) , ale to nefunguje ... Další věc je, že jak přimím tohoto uživatele v kleci, aby spustil program vína na exe, který právě vložil do svého domova, jak by to bylo?

  18.   Leonel řekl

    ahoj, velmi dobrá tato! Jsem v těchto prostředích nový, mám otázku ...
    Pokud jde o bezpečnost, vidím, že ve svém kořenovém adresáři má mnoho složek, jsou nutné? Chci jen, aby měl přístup ke své složce (ftp-upload a ssh-execute), aby mohl spustit aplikaci, jaké složky by mohl odstranit z kořenového adresáře? nebo to pro mě nepředstavuje žádné nebezpečí? Vážím si vaší pomoci předem, pozdravy!

  19.   KubaČervená řekl

    @ KZKG ^ Gaara, díky bohu, že jste zadali pískavou chybu, ale s verzí jailkit-2.16.tar.gz, kterou jste navrhli, aby ji opravili

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

  20.   Algave řekl

    Myslím, že to pošlu do PDF, jojo .. do klece a díky wn 😀

  21.   Samuel řekl

    Zdravím přítele, mám otázku:

    Předpokládejme, že máme uživatele s názvem „test“.

    Otázkou je, že soubor /home/test/.ssh/known_hosts, který je umístěn v domově daného uživatele, je to stejný soubor nebo není uživatel v kleci?

  22.   Richarde řekl

    Zkuste to. Touto metodou je možné omezit navigaci na druhý domov ostatních uživatelů.

  23.   TZBKR řekl

    Nejprve děkuji za příspěvek! Je to pro mě velmi užitečné; ale mám dvě pochybnosti a ty vyplývají ze scénáře, který mám:

    Potřebuji vytvořit N uživatelů s nezávislým a soukromým přístupem k jejich domovu, každý uživatel má přístup pouze k jejich domovu, aby mohl ukládat, upravovat a mazat soubory, které jsou v něm obsaženy, aniž by se musel pohybovat po ostatních (tento bod již mám). Nevyžaduje přístup přes ssh.

    1. Musíte vytvořit klec pro každého uživatele, nebo existuje způsob, jak mít různé uživatele ve stejné kleci, ale každý má svůj „soukromý“ adresář?

    2. Při přístupu (prostřednictvím klienta FTP) jsou zobrazeny všechny adresáře vytvořené nástrojem, existuje způsob, jak zobrazit složku čistou? Nebo jsem na cestě udělal něco špatně?

  24.   eduardlh řekl

    Vynikající návod! Byla to pro mě velká pomoc, testuji to s verzí 2.17 na Ubuntu 14.04 a funguje to velmi dobře. Nyní mám následující výzvu, jakmile je uživatel v kleci, aby se nemohl přesunout na žádnou cestu, chci, aby mohl vidět pouze obsah souboru, který je v jiné cestě. Snažil jsem se symbolickým odkazem, ale když se pokouším udělat ocas nebo kočku do tohoto souboru, říká mi, že neexistuje, i když při přístupu s uživatelem mohu tento soubor uvést v domově klece.

    Pokud byste mi mohli pomoci, byl bych velmi vděčný, předem děkuji

  25.   yas řekl

    Dobrý den, sledoval jsem celý návod a při přihlašování pomocí ssh se automaticky zavírá, stopy:

    4. prosince 19:20:09 toby sshd [27701]: Přijaté heslo pro test z portu 172.16.60.22 62009 ssh2
    4. prosince 19:20:09 toby sshd [27701]: pam_unix (sshd: session): relace otevřená pro uživatelský test uživatelem (uid = 0)
    4. prosince 19:20:09 toby jk_chrootsh [27864]: nyní zadává vězení / opt / vězení pro uživatelský test (1004) s argumenty
    4. prosince 19:20:09 toby sshd [27701]: pam_unix (sshd: session): relace uzavřena pro uživatelský test

    díky

  26.   Omar Ramirez řekl

    Ne, když udělám poslední krok, kdy dám uživateli ssh přístup, stále to uzavře připojení 🙁

  27.   Benj řekl

    Je možné od tohoto vytvořeného uživatele přejít na root? tvoje kořen? to mi nedovolí. Jak by to bylo? Děkuji za vaši pomoc

  28.   Slevin řekl

    Velice vám děkuji za tutoriál, potřeboval jsem ho k vytvoření uživatele, který by pomocí clonezilly vytvořil obraz a zkopíroval jej na cizí server, ale který nemohl rojit, kamkoli chtěl

  29.   Mauro řekl

    Dobrý! Potřeboval bych něco vědět.

    Je možné zadat jako ROOT pomocí FTP a mít tato oprávnění, spravovat to pomocí FTP a ne pomocí SSH? Řekněme například jako vytvoření připojení, tunelového stylu nebo podobně. Jak se to dělá? Nastavujete soubor VSFTPD?

    Díky moc!