Chroot OpenSSH服务器
发表于 : 2010-01-21 13:21
此方法最早在www.openbsdonly.org(应该是国内最大的OpenBSD专门论坛吧.)上看到的,使用后效果不错。原文链接:http://www.openbsdonly.org/viewtopic.php?f=17&t=502
在OpenBSD上chroot OpenSSH
(此方法仅允许登录sftp,不提供shell)
OpenSSH的用途越来越广了,尽管没有华丽的界面,配置也不算很方便,但是有很多商业软件里全可以找到它的踪迹。
我们这里说一下有关OpenSSH的Chroot,OpenSSH默认设置并没有Chroot,这多少让人感到有些遗憾,但是通过简单配置就可以实现。
1.首先创建一个sftpuser组,再添加属于此组的用户123 (读者自己根据需要调整用户名)2.修改用户123的主目录权限,将这个目录的权限修改为root.wheel (注意这一步是必须的,否则无法实现chroot)3.修改/etc/sshd_config文件,注释掉原来的"Subsystem"语句,并在结尾添加上如下内容,并保存退出最后就可以重新启动OpenSSH,加载新配置并验证输入的内容。
附录
在其它OS上Chroot OpenSSH
这里以Opensolaris0906为例,先创建一个sshd用户;因为系统默认没有安装合适的编译器,所以选择菜单"系统"—" 系统管理"— "软件包管理器 "—搜索一下"gcc",然后选择所有的相关软件包,再选择"安装/更新"以安装GCC;然后下载最新的OpenSSH-5.2p1.tar.gz,编译安装:然后添加sftpuser组及所属用户123,123的所属目录是 /root/export/home/123/,我们假设把sftp的用户chroot在这个目录下,
这里同样需要注意的是:
1. /root/export/home/123/ 目录的属主必须是root,属组必须为root或adm,另外123的shell为false。
2.修改 /usr/local/etc/sshd_config文件,注释掉原来的“Subsystem”语句,并在文件的末尾加上如下语句:3.先重新启动OpenSolaris,再启动OpenSSH
# /usr/local/sbin/sshd
4.如果设定的正确,此时OpenSSH已经可以正常工作了,但是你会发现系统关闭时会提示您OpenSSH无法绑定在22端口,因为已经被占用了,这也可能是OpenSolaris为自己的SunSSH预留的缘故,另外鉴于22端口经常被扫描,建议您更换一个端口,编辑OpenSSH的配置文件 /usr/local/etc/sshd_config,将里面的#port 22,前面的#去掉,然后将后面的数字修改为你需要的端口就可以了。
@gobsd.org
在OpenBSD上chroot OpenSSH
(此方法仅允许登录sftp,不提供shell)
OpenSSH的用途越来越广了,尽管没有华丽的界面,配置也不算很方便,但是有很多商业软件里全可以找到它的踪迹。
我们这里说一下有关OpenSSH的Chroot,OpenSSH默认设置并没有Chroot,这多少让人感到有些遗憾,但是通过简单配置就可以实现。
1.首先创建一个sftpuser组,再添加属于此组的用户123 (读者自己根据需要调整用户名)
代码: 全选
# groupadd sftpuser
# [color=red]adduser[/color]
Use option ``-silent'' if you don't want to see all warnings and questions.
Reading /etc/shells
Check /etc/master.passwd
Check /etc/group
Ok, let's go.
Don't worry about mistakes. There will be a chance later to correct any input.
Enter username []: [color=red]123[/color]
Enter full name []: [color=red]Enter[/color]
Enter shell csh ksh nologin sh [nologin]: [color=red]nologin[/color] (不给shell)
Uid [1000]: [color=red]Enter[/color]
Login group 123 [123]: [color=red]sftpuser[/color]
Login group is ``sftpuser''. Invite 123 into other groups: guest no
[no]: [color=red]Enter[/color]
Login class authpf daemon default staff [default]:[color=red]Enter[/color]
Enter password []:[color=red]121[/color]
Enter password again []:[color=red]121[/color]
Name: 123
Password: ****
Fullname: 123
Uid: 1000
Gid: 1001 (sftpuser)
Groups: sftpuser
Login Class: default
HOME: /home/123
Shell: /sbin/nologin
OK? (y/n) [y]: [color=red]Enter[/color]
Added user ``123''
Add another user? (y/n) [y]: [color=red]n[/color]
Goodbye!
#
代码: 全选
# [color=red]chown root.wheel /home/123[/color]
代码: 全选
Allowusers 123 456 789 (读者在这里可以随意添加用户,但用户必须属于sftpuser组,用空格分隔用户名)
Subsystem sftp internal-sftp
ChrootDirectory /home/123 (再强调一下,这里的 /home/123这个目录的属主及组必须是root.wheel)
Match Group sftpuser
ForceCommand internal-sftp
AllowTCPForwarding no
附录
在其它OS上Chroot OpenSSH
这里以Opensolaris0906为例,先创建一个sshd用户;因为系统默认没有安装合适的编译器,所以选择菜单"系统"—" 系统管理"— "软件包管理器 "—搜索一下"gcc",然后选择所有的相关软件包,再选择"安装/更新"以安装GCC;然后下载最新的OpenSSH-5.2p1.tar.gz,编译安装:
代码: 全选
# tar zxf openssh-5.2p1.tar.gz
# cd openssh-5.2p1
# make package
# pkgadd -d OpenSSH-OpenSSH_5.2p1-Solaris-i386.pkg
这里同样需要注意的是:
1. /root/export/home/123/ 目录的属主必须是root,属组必须为root或adm,另外123的shell为false。
2.修改 /usr/local/etc/sshd_config文件,注释掉原来的“Subsystem”语句,并在文件的末尾加上如下语句:
代码: 全选
Allowusers 123
Subsystem sftp internal-sftp
ChrootDirectory /export/home/123
Match Group sftpuser
ForceCommand internal-sftp
AllowTCPForwarding no
# /usr/local/sbin/sshd
4.如果设定的正确,此时OpenSSH已经可以正常工作了,但是你会发现系统关闭时会提示您OpenSSH无法绑定在22端口,因为已经被占用了,这也可能是OpenSolaris为自己的SunSSH预留的缘故,另外鉴于22端口经常被扫描,建议您更换一个端口,编辑OpenSSH的配置文件 /usr/local/etc/sshd_config,将里面的#port 22,前面的#去掉,然后将后面的数字修改为你需要的端口就可以了。
@gobsd.org