前些日子,我在一个虚拟主机提供商那里发现,他的用户只能用SSH连接服务
器,且只能上传和下载文件,不能使用控制台,并且所有的活动都限制在了自己
的主目录中~!
当时感觉非常好,就想知道人家是怎么搞的,于是呼,查了一些资料,问了一些
朋友,终于在今晚(2004年1月12日凌晨)搞定了~!哈哈。过程如下:
一,我们的环境和目的
操作系统为RedHat Linux 9.0
所有属于web组的用户都将只能通过SSH管理自己的文件,而无法使用SSH的控制台
进行登陆。
这样,就使SSH代替了FTP这种不安全的连接方式,并避免了用户通过SSH使用控制
台登陆而产生的不安全因素。
首先,移除系统中的OpenSSH。以SSH来代替OpenSSH。
OpenSSH是无法做到如上的功能的,只有强悍的SSH。呵呵:)
二,下载编译SSH
1,下载SSH的源代码包:
wget
2,编译
./configure --without-x --enable-static=yes
make
make install
过程简单,但必须要--without-x和--enable-static-yes
编译完成后,将./ssh-3.2.9.1/startup/linux/redhat/下的一个名为sshd2的文
件拷贝到/etc/rc.d/init.d/目录下。用以控制SSH服务。
二,配置SSH
编辑/etc/ssh2/目录下的sshd2_config
加入或编译如下一句:
ChRootGroups web
这样,以后建立用户的时候,只要是web组的用户,将会受到不能使用控制台登陆
的限制
假设所有web组的用户的主目录都在/home/ftp目录下,如webtest用户的主目录为
/home/ftp/webtest。
三,web组用户的目录配置
1,下面以webtest用户为例:
建立好/home/ftp/webtest目录后,使用如下命令添加用户webtest(当然要有web
组先):
useradd webtest -g web -d /home/ftp/webtest -s /bin/ssh-dummy-shell
2,将/usr/local/bin/目录下的sftp-server2.static和ssh-dummy-shell.static
两个文件拷贝到/home/ftp目录下:
cp /usr/local/bin/sftp-server2.static /home/ftp/
cp /usr/local/bin/ssh-dummy-shell.static /home/ftp/
在每个用户的主目录中,建立一个名字为bin的目录,如/home/ftp/webtest/bin
在这个bin目录中,做两个硬连接:
ln /home/ftp/sftp-server2.static sftp-server
ln /home/ftp/ssh-dummy-shell.static ssh-dummy-shell
四,OK了,用webtest用户登陆一下试试。效果完全实现了。哈哈
是不是很简单。
以上的过程,完全可以做一个B/S的管理程序,使得用户即时注册,即时生效。
我个人觉得这要比普通的FTP服务安全了一些。
头一次写文章,大家多多指教。呵呵:)
阅读(1126) | 评论(0) | 转发(0) |