免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3518 | 回复: 1
打印 上一主题 下一主题

[FreeBSD] FreeBSD下对ssh用户实行chroot [复制链接]

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-03-05 17:29 |只看该作者 |倒序浏览
本帖最后由 lsstarboy 于 2015-03-05 17:31 编辑

正常的ssh用户可以直接登录到服务器上,可以浏览服务器的大多数文件,特别是像PHP脚本,一般都不加密,数据库的用户名和密码都是明文的,这会给系统安全造成威胁。
但是网上的资料相对有些乱,大多数文章都直接给出命令,没有给出解释,初学的时候,还要看手册,读源码。本文主要对几个重要的参数做一下解释。

实现目的:
  1.   1)test组里面的用户,通过ssh登录到系统后,只能看到自己home里面的内容;
  2.  2)可以通过sftp下载和上传文件,包括winsftp。
  3.  3可以通过命令行进行文件的复制、删除,移动
  4.  4)以下内容,以用户test为例,home目录对应的是/home/test/
复制代码
重点环节说明:

 1)ssh的chroot,最主要的一个配置语句是:ChrootDirectory,后面有两个常用的参数,%h代表是用户的home,一般是/home/用户名。
 2)最容易出错的地方就是权限,ssh的chroot要求的文件夹属主必须是root,权限要求是g-w,o-w,也就是组和其他用户都没有写权限,在源代码中,这个判断是用的&&022来判断,所以一般情况下,可以用755或555来设置权限。
 3)网上的资料,很多都加入了:ForceCommand internal-sftp,这个参数将导致只能使用sftp,不能用putty或其他系统的ssh命令来登录系统了,这是一定要注意的问题。
  4)在chroot后,系统会自动进入home,如果chroot放到用户的home中,最好再建一级home/test,也就是宿主系统中,要有两级home:/home/test/home/test,否则登录或使用scp的时候会出问题,winsftp也不会自动进入到相应的目录。
  5)在chroot后,以后所有的文件要以这个目录为根目录了,其中包括最重要的shell以及相应的so文件,所以还要建议一个微型的系统,其中包括三个目录:bin、lib、libexec。其中lib目录下的so文件,主要是ls,cp,mv使用。


sshd主要配置:
  1. # vi /etc/ssh/sshd_config
  2. ……
  3. Subsystem       sftp    internal-sftp
  4. Match Group test
  5.         ChrootDirectory %h
  6. #       ForceCommand internal-sftp
  7. ……
复制代码
你会发现配置非常简单,一共四行还注释掉一行。
先看第一行:Subsystem,这个指定了运行sftp的程序,默认的是/usr/libexec/sftp-server,这个相对于内置的sftp来说,功能比较多,也可以使用scp,但是需要的链接库也多,可以见本文后面的资料,如果你想希望功能多并且有耐心复制对应链接库的话,也可以把这一句注释掉。
第二句定义了一个范围,可以是用户,也可以是IP,这里使用了一个test组,表示仅对test组的用户实行chroot。如果没有这句的话,就连root也限制到/root了,遇到问题你主好亲自跑机房接上键盘显示器操作了。
第三句是个重点,这句就是负责chroot的,没有这句就不chroot了……废话!
第四句是让ssh自动执行一个命令,而忽略掉其他配置文件中指定的程序,也就是说,如果你在这地方指定了一个程序,那么就不再执行其他的命令了,包括ssh本身!这地方指定了运行sftp,那么除了sftp外,你不会得到任何东西,包括sh也没有——最后的结果就是:你只能使用sftp上传下载文件,其他的就别想了(当然sftp中也可以有简单的命令)。



文件路径设置:
在/home/test里,要有以下文件和文件夹:
  1. bin
  2.         -sh
  3.         -cp
  4.         -ls
  5.         -mv
  6. lib
  7.         -libc.so.7
  8.        -libedit.so.7
  9.       -libncurses.so.8
  10.        -libutil.so.9
  11. libexec
  12.         -ld-elf.so.1
  13.        -ld-elf32.so.1
  14. home/test
复制代码
然后设置属主和权限:
  1. # chown -R root /home/test
  2. # chown -R test:test /home/test/home/test
  3. # chmod -R 755 /home/test
复制代码
其中第二句设置test用户的home,以便test可以对该文件夹下的文件进行操作。



测试:
可以分别使用ssh和sftp进行测试,注意如果使用了internal-sftp,scp命令不能用,会提示找不到scp命令,只能使用sftp来进行文件传输。



附一:sftp-server需要的链接库:
  1. # ldd /usr/libexec/sftp-server
  2. /usr/libexec/sftp-server:
  3.         libssh.so.5 => /usr/lib/private/libssh.so.5 (0x800825000)
  4.         libcrypt.so.5 => /lib/libcrypt.so.5 (0x800ab2000)
  5.         libcrypto.so.7 => /lib/libcrypto.so.7 (0x800cd2000)
  6.         libz.so.6 => /lib/libz.so.6 (0x8010c5000)
  7.         libc.so.7 => /lib/libc.so.7 (0x8012db000)
  8.         libldns.so.5 => /usr/lib/private/libldns.so.5 (0x801684000)
  9.         libgssapi.so.10 => /usr/lib/libgssapi.so.10 (0x8018e0000)
  10.         libkrb5.so.11 => /usr/lib/libkrb5.so.11 (0x801ae9000)
  11.         libhx509.so.11 => /usr/lib/libhx509.so.11 (0x801d61000)
  12.         libasn1.so.11 => /usr/lib/libasn1.so.11 (0x801fab000)
  13.         libcom_err.so.5 => /usr/lib/libcom_err.so.5 (0x802248000)
  14.         libmd.so.6 => /lib/libmd.so.6 (0x80244a000)
  15.         libroken.so.11 => /usr/lib/libroken.so.11 (0x80265a000)
  16.         libwind.so.11 => /usr/lib/libwind.so.11 (0x80286c000)
  17.         libheimbase.so.11 => /usr/lib/libheimbase.so.11 (0x802a94000)
  18.         libheimipcc.so.11 => /usr/lib/private/libheimipcc.so.11 (0x802c98000)
  19.         libthr.so.3 => /lib/libthr.so.3 (0x802e9a000)
复制代码
附二:ssh的chroot代码,关键是权限和属主的配置:
  1. /usr/src/crypto/openssh/session.c,1451行:
  2.        /*
  3.          * Descend the path, checking that each component is a
  4.          * root-owned directory with strict permissions.
  5.          */
  6.         for (cp = path; cp != NULL;) {
  7.                 if ((cp = strchr(cp, '/')) == NULL)
  8.                         strlcpy(component, path, sizeof(component));
  9.                 else {
  10.                         cp++;
  11.                         memcpy(component, path, cp - path);
  12.                         component[cp - path] = '\0';
  13.                 }

  14.                 debug3("%s: checking '%s'", __func__, component);

  15.                 if (stat(component, &st) != 0)
  16.                         fatal("%s: stat(\"%s\"): %s", __func__,
  17.                             component, strerror(errno));
  18.                 if (st.st_uid != 0 || (st.st_mode & 022) != 0)
  19.                         fatal("bad ownership or modes for chroot "
  20.                             "directory %s\"%s\"",
  21.                             cp == NULL ? "" : "component ", component);
  22.                 if (!S_ISDIR(st.st_mode))
  23.                         fatal("chroot path %s\"%s\" is not a directory",
  24.                             cp == NULL ? "" : "component ", component);

  25.         }
复制代码
--
另发于:联动论坛

论坛徽章:
224
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:1015-16赛季CBA联赛之四川
日期:2023-07-25 16:53:45操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
2 [报告]
发表于 2015-03-06 07:28 来自手机 |只看该作者
有些概念说得太复杂了,感觉还是不懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP