如何通过SSH监禁用户

在我们这个世界上,有许多很多秘密……老实说,我无法学到足够的知识来了解其中的大部分秘密,这是因为一个简单的事实,即Linux允许我们做很多事情,但事实却是如此。我们很难了解他们所有人。

这次,我将向您解释如何做非常有用的事情,许多网络或系统管理员需要做的事情,并且发现很难根本找不到一种相当简单的方法来实现它:

如何保护通过SSH连接的用户

笼? …WTF!

是的,如果出于任何原因我们必须使SSH访问我们的朋友进入我们的计算机(或服务器),则我们必须始终注意计算机或服务器的安全性和稳定性。

碰巧,最近我们想给Perseus SSH访问我们服务器的权限,但是我们不能给他任何访问权限,因为我们在那里有非常敏感的配置(我们编译了很多东西,我们分别安装了软件包,等等...),如果没有这样做,无论我尝试对服务器进行哪怕一点点更改,都可能会浪费一切。

然后, 如何创建具有极其有限的特权的用户,以至于他甚至无法摆脱自己的笼子(家)?

让我们从下载开始 监狱,该工具将允许我们执行以下操作:

以下所有命令均以root身份运行

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

/配置

使

使安装

4. 准备好了,这个已经安装好了。 现在我们继续创建将包含未来用户的框架,在我的情况下,我在以下位置创建了该框架:/ opt /,并将其命名为“ jail”,因此路径为: /选择/监狱 :

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. 要允许用户连接,我们必须再做一步。

我们必须编辑cage的etc / passwd文件,也就是说,在这种情况下 / opt /监狱/ etc / passwd ,在其中对创建的用户行进行注释,并添加一个新的用户行,例如:

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

也就是说,我们将有这样的文件 passwd文件:

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

请注意重复的标点符号和其他标点符号,重要的是不要丢掉它们中的任何一个🙂

完成此操作后,用户可以毫无问题地进入😀

就这样。

我们用于所有这些的工具(监狱)在后端使用 chroot,实际上几乎所有教程都使用。 但是,使用JailKit可以更轻松地固定cage

重要提示!:已通过以下测试 Debian压榨(6) y 在Centos 而且有效 100%,已在Debian Wheezy(7)中进行了测试,尽管细节很少,但它也可以正常工作,即用户的昵称不会显示在ssh中,但不会丢失任何功能。

如果某人有问题或出了什么问题,请尽可能多地保留细节,我不认为自己是专家,但我会尽全力为您提供帮助。


50条评论,留下您的评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   v3on

    因此,这类似于FTP中的权限吗? 有趣

    您总是拿出甚至不知道存在的所有内容,例如mysql xD中的用户

    1.    KZKG ^ Gaara

      不完全相同,因为SSH与FTP不同。 SSH是一个外壳,即一个终端……您可能在另一台计算机或服务器的终端中,可以执行命令,启动进程等……您将做服务器管理员允许的最大工作

      哈哈哈哈哈,不行,发生的事情是我发表了更多技术性的文章……也就是说,我喜欢发表一些不太流行和有趣的小文章。 例如,我个人不打算在新的Ubuntu发布之日发布任何东西,因为我认为很多人已经在谈论它了……但是,您在本文中所读的内容,不是每个人都阅读的内容吗?天还是不? 😀

      1.    达米安里维拉

        很好的贡献,谢谢

        还有一个称为sftp的协议,它与ftp和Secure Shell在一起,尽管它与通过SSH运行FTP并不相同:

        问候

        1.    KZKG ^ Gaara

          是的,是的,的确如此,但是通过使用SSH,我可以自动控制使用SFTP连接的任何人,因为正如您所说,SFTP实际上是SSH + FTP😀

          问候

  2.   吉卡德

    无法看到图像!!! 🙁

    1.    KZKG ^ Gaara

      我的一个小错误呵呵,现在告诉我😀

      1.    吉卡德

        准备。 谢谢😀

  3.   腐烂87

    很好,我将其指向我的收藏夹,以便在需要时可以使用

    1.    KZKG ^ Gaara

      谢谢您任何疑问或问题,我们在这里为您提供帮助🙂

  4.   曼努埃尔·德拉·富恩特

    他们关在笼子里的英仙座。 http://i.imgur.com/YjVv9.png

    1.    正确

      LOL
      xD

  5.   约格曼花园

    你好吗。

    您知道,这是我不太熟悉的话题,并且我一直在BSD(PC-BSD和Ghost BSD)中进行过检查,我发现它非常有趣,并且具有非常有用的功能。

    我将保留它作为参考,并对照BSD文档进行检查。 感谢您的信息。

    1.    KZKG ^ Gaara

      我也不对此感到陌生,因为我从没想过要给某人SSH访问我的任何服务器哈哈,但是当我发现需要这样做时,我想给予访问权,但不可能有人错误地做某事那不一定must

      我从未在BSD系统上尝试过此操作,所以无法告诉您它是否可以工作,但是如果您正在寻找如何在BSD上进行chroot,应该会出现一些问题😉

      感谢您的评论朋友🙂

      1.    达米安里维拉

        您好,我使用的是FreeBSD,当然jailkit也可以在端口上使用

        使用此命令安装

        cd / usr / ports / shells / jailkit / &&使安装干净

        或通过ftp数据包

        pkg_add -r Jailkit

        仅在配置中(kira:x:1003:1003 :: / home / kira:/ bin / bash)

        您需要添加tcsh或sh,除非您已安装bash并添加此路径

        / usr /本地/ bin / bash

        还有更多细节,在Ghost BSD中,类似的过程应该更简单,因为它基于FreeBSD。

        问候

  6.   亚迪亚兹C87

    太好了,我一直在寻找它; 你知道它是否可以在Centos中使用吗? 谢谢。

    1.    KZKG ^ Gaara

      我尚未在Centos上对其进行测试,但是可以,它应该可以工作:)
      实际上,我想我记得有几个人在Centos和Red Hat服务器上使用了相同的工具😉

  7.   Cyber​​alejo17

    非常感谢。 它直接进入书签。

    1.    KZKG ^ Gaara

      感谢您的评论🙂

  8.   MV Altamirano

    很好的“技巧”,对系统管理员超级有用。 但更好的是,写得很好。 你还能想要什么。
    非常感谢你的贡献。

    1.    KZKG ^ Gaara

      谢谢,非常感谢您的评论😀
      问候

  9.   LiGNUxer

    赞SSH哈哈
    有一次我尝试为ssh制作笼子,但使用的是传统风格,事实是它永远不会正确地出现。 如果笼子正在运行,它甚至没有重击,那就是它连接了,什么也没留下哈哈,如果外壳正在运行,它可能会进入目录层次结构,并且还有更多的基伦博斯哈哈。这个监狱工具是一个钉头锤,它可以使所有这些东西自动化。

    1.    KZKG ^ Gaara

      哈哈谢谢。
      是的,实际上SSH为其允许的功能让所有人惊叹不已,这实际上无非是系统允许的功能……Linux的万岁! … 哈哈。

  10.   nwt_拉扎罗

    你好,一个问题!
    为什么要从(1)/ opt /监狱/./ home / kira更改为(2)/ home / kira

    我们必须编辑笼子的文件etc / passwd,在这种情况下,它将是/ opt / jail / etc / passwd,在其中,我们对创建的用户行进行注释,并添加一个新的文件,例如:

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

    换句话说,passwd文件如下所示:

    根:x:0:0:根:/根:/ 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

      你好🙂
      如果未设置,则SSH访问将不起作用,用户会尝试建立连接,但会自动被驱除...这似乎是JailKit带来的解释器的错误或问题,因为在进行此更改时会告诉其使用系统正常运转,一切正常。

      1.    奥马尔·拉米雷斯(Omar ramirez)

        我仍然关闭ssh会话:C
        苏斯10.1 x64

  11.   亚历克斯图

    您好,我已经安装了它,并且在centos = D时效果很好

    但我的dua就像以前一样,向监狱用户添加了更多命令
    无法运行svn co命令 http://pagina.com/carpeta

    我的意思是,在这种情况下,对于监狱用户而言,此命令不存在,就像之前将这些命令添加到监狱中一样,还有很多我需要添加。

    1.    KZKG ^ Gaara

      你好,你好吗?
      如果要在监狱中启用命令“ svn”,则具有命令jk_cp
      那是:
      jk_cp / opt /监狱/ / bin / svn

      假设svn二进制文件或可执行文件为:/ bin / svn
      并让Cage / Jail为:/ opt / jail /

      您会发现依赖于其他命令的命令,因此,如果添加命令“ pepe”,您还将看到还必须添加“ federico”,因为“ pepe”取决于要执行的“ federico”,如果找到,则添加必要的命令已经😉

      1.    亚历克斯图

        太好了,我现在正在测试它,我告诉你它发生了,非常感谢= D

        1.    KZKG ^ Gaara

          运气😀

  12.   亚历克斯图

    我设法做到了你告诉我的,但是通过这种方式,它自动检测到我,没有任何问题,这是我以前能够使用Subversion的命令。

    jk_cp -j /主页/ jaul svn

    好吧,我使用centos xP,也许它与众不同,但很好
    现在我想知道像svn这样的库,但是现在我想编译,因为假设我需要使用这样的命令

    ./配置并标记错误

    ./configure.lineno:第434行:expr:找不到命令

    我不知道我已经安装了哪些库,如果它在监狱外而不是在jaui内编译,我已经安装了mysql和其他库。

    抱歉给你带来不便。

    ps:您应该在指南中输入我对centos =)问候中使用的命令的介绍。

    1.    KZKG ^ Gaara

      看,当我告诉您找不到命令(如此处)时,第一件事就是找到命令:

      whereis expr

      找到后(/ usr / bin / expr和/ usr / bin / X11 / expr),我们使用jk_cp copy将其复制到Jail中。
      试试看。

      是的,我已经编辑了帖子,并补充说它可以在Centos中使用😀

  13.   亚迪亚兹C87

    非常感谢您(:

  14.   耶稣

    感谢您的输入...

  15.   业力

    你好你好吗?

  16.   杰菲尼克斯

    他妈的老兄! 来自智利的问候。 你和我一样放屁! 大声笑!。 拥抱您的帖子对我有很大帮助!

    1.    KZKG ^ Gaara

      谢谢您的评论😀

  17.   丹尼尔·PZ

    非常感谢您的帖子,它对我有很大帮助,但不幸的是

    ///////////////////////////////////////////////////// // /////////////////////////////////////////////////// //// //////////////////////
    我们必须编辑笼子的文件etc / passwd,在这种情况下,它将是/ opt / jail / etc / passwd,在其中,我们对创建的用户行进行注释,并添加一个新的文件,例如:

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

    换句话说,passwd文件如下所示:

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

    它会导致相同的错误,我的意思是,我将其保留原样,当我连接。,..时,它会从终端引导我,在该行中添加注释,并按您的指示再添加一个修改它,并且还会靴我...。

    安装最新版本“ jailkit-2.16.tar”,甚至创建脚本来节省时间,如下所示:

    /////////////////////////////////////////////// //////////////////////////////////////////////////
    #!/斌/庆典
    wget的 http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
    tar -zxvf jamkit-2.16.tar.gz
    cd监狱工具包2.16
    /配置
    使
    使安装
    出口
    ///////////////////////////////////////////////////// /////////////////////////

    显然首先他们以“ root”身份登录...

    我该如何解决错误的朋友?

    1.    丹尼尔·PZ

      抱歉,我已经知道了,我在Home文件夹上犯了一个错误,但是我有一个很大的疑问,如何获取它才能执行“ screen”命令,我尝试使用它(在受限制的用户中) ,但是那是行不通的...另一件事是,我如何让这个被关进笼子的用户在他刚放在自己家中的exe上运行wine程序,情况如何?

  18.   莱昂内尔

    你好,很好的兔兔! 我是这些环境的新手,我有一个问题...
    至于安全性,我看到它的根部有很多文件夹,这是否必要? 我只希望他可以访问他的文件夹(ftp-upload和ssh-execute)来运行应用程序,他可以从根目录中删除哪些文件夹? 还是对我没有任何危险? 预先感谢您的帮助,问候!

  19.   古巴红

    @ KZKG ^ Gaara,谢天谢地,您提出了喘息的错误,但对于jailkit-2.16.tar.gz版本,您建议他们对其进行修复。

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

  20.   藻类

    我想我会将其传递给PDF,jojo ..传递给笼子,谢谢wn😀

  21.   塞缪尔

    问候朋友,我有一个问题:

    假设我们有一个名为“ test”的用户。

    问题是,位于该用户主目录中的文件/home/test/.ssh/known_hosts是该文件,还是没有将该文件笼中的用户?

  22.   里查特

    尝试这个。 使用此方法可以将导航限制到其他用户的其他住所。

  23.   台州BKR

    首先,感谢您的帖子! 对我来说非常有用; 但是我有两个疑问,这些疑问是由我的情况引起的:

    我需要创建N个用户,这些用户可以独立和私有地访问其家,每个用户只能访问其家以存放,修改和删除其中的文件,而不必四处走动(我已经知道了这一点)。 它不需要通过ssh访问。

    1.是否必须为每个用户创建一个框架,或者是否可以将不同的用户放在同一个框架中,但是每个用户都有其“私有”目录?

    2.当访问(通过FTP客户端)由工具创建的所有目录时,是否可以将文件夹显示为干净? 还是我一路上做错了什么?

  24.   教育

    优秀的教程! 这对我有很大的帮助,我正在Ubuntu 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:会话):会话已打开,供用户测试(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.   奥马尔·拉米雷斯(Omar ramirez)

    当我执行向用户授予ssh访问权限的最后一步时,它仍然关闭了连接🙁

  27.   BENJ

    可以从此用户创建的更改更改为root吗? 您的根? 它不让我。 会怎么样?谢谢您的帮助

  28.   斯莱文

    非常感谢您的教程,我需要它来创建一个用户,该用户可以使用clonezilla制作映像并将其复制到第三方服务器,但无法在任何需要的地方聚集

  29.   毛罗

    好! 我需要知道一些事情。

    是否可以使用FTP并具有这些权限以ROOT身份输入,通过FTP而不是SSH进行管理? 假设您创建了一个连接,隧道样式之类的东西,它是如何做到的? 配置VSFTPD文件?

    Muchas Gracias!