免费注册 查看新帖 |

Chinaunix

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

[FreeBSD] 菜鸟折腾openssh chroot功能成功 写出来分享一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-19 15:10 |只看该作者 |倒序浏览
我BLOG记录的地址, 很乱 http://hi.baidu.com/3444542/blog ... c5c7cea7ef3fb1.html
以前折前过openssh for linux 是成功的,但一直没在FreeBSD下面试成功,看到有网友也在折腾这功能,就打算花点时间弄弄
结果在权限位上卡了很长时间,太菜了没办法, 记录下来分享一下,免得可能有的朋友也遇到此问题浪费时间.

测试平台: freebsd 7.1-RELEASE-p7  +  openssh-portable-5.2.p1_1,1
archlinux 下也用这个方法测试成功了
看到介绍,只要是>4.9 的openssh就可以使用chroot功能


大致过程如下:
一,使用adduser 新建一个叫sftp的用户, 用户目录在 /home/sftp
二,修改用户目录拥有者为root  , 将group的写权限给干掉
否则会出现以下错误信息

  1. Aug 19 14:39:08 bsd sshd[22383]: fatal: bad ownership or modes for chroot directory "/home/sftp"
复制代码

这个错误折腾提长时间的


  1. sudo chown root:sftp /home/sftp

  2. sudo chmod g-w  /home/sftp
  3. drwxr-xr-x   2 root    sftp     512B  8 19 14:37 sftp

复制代码


三, 在/home/sftp 目录下新建两个目录,分别为  download, upload
修改upload的组权限可写,为了上传使用,而download是没有write权限的,只能下载

四,
  1. /usr/ports/security/openssh-portable && sudo make config
复制代码
在这里要要将openssh_chroot功能选项使能
make install clean
五,安装完成后,会看到有提示信息,注意,它可是安在/usr/local/bin 下的,而原来的sshd可是/usr/sbin/sshd 下,源代码是在/usr/src/下面的
  接下来要做的是将 原先的sshd禁用,开启openssh-portable安装的sshd, 将/etc/rc.conf 里的sshd设置为sshd_enable="NO", 添加 openssh_enable="YES", 就完成了启动所必须的工具.

  1. sshd_enable="NO"
  2. openssh_enable="YES"
复制代码


六. 重要的一点,需要修改的不是 /etc/ssh/sshd_config 而是 修改 /usr/local/etc/ssh/sshd_config 配置文件,切记别大意


  1. # override default of no subsystems
  2. #Subsystem      sftp    /usr/local/libexec/sftp-server  <<<< 原来的这行注释掉
  3. Subsystem       sftp    internal-sftp   <<<---添加的新行

  4. # Example of overriding settings on a per-user basis
  5. Match User sftp              <<----   匹配用户为 sftp ,  man sshd_config 有更详细的介绍,还支持用户组,同进设置多用户等
  6.     ChrootDirectory  /home/%u   <<-------指定chroot的目录, %u 为转换成用户名, 也就是 /home/sftp 目录了,帮助上显示 %h就带表home了
  7.         X11Forwarding no
  8.         AllowTcpForwarding no
  9.     ForceCommand internal-sftp     <<---- 添加这句  internal-sftp
  10.         #ForceCommand cvs server  <<--- 这句也注释掉

复制代码


七, 停止原来的sshd服务,开启新的 openssh-portable的服务

  1. sudo /etc/rc.d/sshd stop
  2. sudo /usr/local/etc/rc.d/openssh start
复制代码


八. 测试方法特单说一下
  (1)  sftp -oPort 22   sftp@127.0.0.1  , -oPort 22 默认可以不写,但不推荐使用默认端口号,弄个大点的数字吧,免得别人来骚扰,不过我还准备了denyhosts, pf的禁止暴力破解等着
(2) 我很喜欢的工具lftp, 非常好用,还能自动补全等,   用法 lftp sftp://sftp:密码@127.0.0.1 -p 端口号
  使用方法都差不多, 试着传个文件上去看看


  1. lftp [email]sftp@192.168.1.222[/email]:~> pwd
  2. s[url]ftp://sftp:1@192.168.1.222:22[/url]
  3. lftp [email]sftp@192.168.1.222[/email]:~> lpwd
  4. /home/axlrose
  5. lftp [email]sftp@192.168.1.222[/email]:~> ls
  6. drwxr-xr-x    4 0        1003          512 Aug 19 14:42 .
  7. drwxr-xr-x    4 0        1003          512 Aug 19 14:42 ..
  8. -rw-r--r--    1 1003     1003          758 Aug 19 14:37 .cshrc
  9. -rw-r--r--    1 1003     1003          258 Aug 19 14:37 .login
  10. -rw-r--r--    1 1003     1003          167 Aug 19 14:37 .login_conf
  11. -rw-------    1 1003     1003          379 Aug 19 14:37 .mail_aliases
  12. -rw-r--r--    1 1003     1003          339 Aug 19 14:37 .mailrc
  13. -rw-r--r--    1 1003     1003          773 Aug 19 14:37 .profile
  14. -rw-------    1 1003     1003          284 Aug 19 14:37 .rhosts
  15. -rw-r--r--    1 1003     1003          980 Aug 19 14:37 .shrc
  16. drwxr-xr-x    2 0        1003          512 Aug 19 14:42 download
  17. -rw-r--r--    1 0        1003            8 Aug 19 14:41 this_sftp_dir.txt
  18. drwxrwxr-x    2 0        1003          512 Aug 19 16:17 upload

  19. lftp [email]sftp@192.168.1.222[/email]:/download> put bsd_pic1.jpg
  20. put: Access failed: Permission denied (bsd_pic1.jpg)
  21. lftp [email]sftp@192.168.1.222[/email]:/download> cd ..
  22. lftp [email]sftp@192.168.1.222[/email]:/> cd upload/
  23. lftp [email]sftp@192.168.1.222[/email]:/upload> put bsd_pic1.jpg
  24. 137286 bytes transferred
  25. lftp [email]sftp@192.168.1.222[/email]:/upload>

复制代码

大功告成,测试.
若有遗漏再补充,望请大虾们再指点一下

[ 本帖最后由 axlrose 于 2009-8-19 16:24 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-08-19 15:50 |只看该作者
呵呵
不错啊
支持一下

论坛徽章:
0
3 [报告]
发表于 2009-08-19 16:00 |只看该作者
支持LZ

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
4 [报告]
发表于 2009-08-19 16:32 |只看该作者
支持

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
5 [报告]
发表于 2009-08-19 16:34 |只看该作者

论坛徽章:
0
6 [报告]
发表于 2009-08-19 17:30 |只看该作者
本帖最后由 waveflowers 于 2011-09-27 00:21 编辑

满足条件:
Freebsd7.2以上

处理步骤
1、
#ee /etc/ssh/sshd_config

#Subsystem      sftp    /usr/libexec/sftp-server  //注释掉此行
添加以下几行
Subsystem      sftp    internal-sftp
Match Group test                                             //test为你要chroot的用户组,需要修改成你自己的
ChrootDirectory %h                                         //%h为限制到的目录,不必修改,自动处理
ForceCommand internal-sftp
AllowTcpForwarding no

2、增加用户 指定目录
test    /home/test
更改目录test的属主,比如root                                //重要啊!一定要改!!!浪费了我们好多时间和精力!
#chown root  /home/test

3、重启sshd
#/etc/rc.d/sshd restart

OK!大功告成!

我写了一个Centos下的升级脚本和一个创建Sftpuser并Chroot的脚本,请参考:
http://bsdu.net/515.html
http://bsdu.net/517.html


------------------------------------------------http://bsdu.net---------------------------------------------

论坛徽章:
0
7 [报告]
发表于 2009-08-19 17:43 |只看该作者

回复 #6 waveflowers 的帖子

waveflowers 你可是也安了openssh-portable的
现在我两台机子的FreeBSD都"不干净"了,如果只是换用 /etc/rc.d/sshd 来启动,好像不够说服力,嘿嘿
有没有朋友测试不用openssh-portable成功的, 之前在权限上折腾老花时间了,回家再找台机器测试一下, 理论上是没问题的

目前我按这个方法测试通过的有:
freebsd 7.1
freebsd 7.2
gentoo linux
archlinux

[ 本帖最后由 axlrose 于 2009-8-19 17:46 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2009-08-19 19:22 |只看该作者
原帖由 waveflowers 于 2009-8-19 17:30 发表
满足条件:
Freebsd7.2以上

处理步骤
1、
#ee /etc/ssh/sshd_config

#Subsystem      sftp    /usr/libexec/sftp-server  //注释掉此行
添加以下几行
Subsystem      sftp    internal-sftp
Match  ...


回到家里测试了台式机的FreeBSD 7.1 上的openssh, 没有安装ports里的
可以肯定上面的方法是可行的
没有条件测试7.0的,现在所知道的是 >= 7.1的肯定有搞头

论坛徽章:
0
9 [报告]
发表于 2014-12-10 13:40 |只看该作者
支持楼主,推荐~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP