`
yangyou230
  • 浏览: 1647981 次
文章分类
社区版块
存档分类

UBuntu9.10安装proFTPd支持SFTP

 
阅读更多

目的

1)支持SFTP协议
2)不采用系统帐号验证方式,改为数据库MySQL验证
3)数据库中不保存密码,只保存经过sha256算法加密过的可打印16位小写字符串,系统中还需保存一个salt文件
4)数据库中指定用户目录,proFTPd能够动态创建用户目录

修改ssh服务端口号为21

修改文件中的配置/etc/ssh/sshd_config
然后重新启动ssh服务
sudo /etc/init.d/ssh restart
这不会影响ssh的使用,客户端需要用-p参数指明端口号

创建ftp系统帐号

sudo groupadd ftp
sudo useradd -u 1005 -s /bin/false -d /bin/null -c "proftpd user" -g ftp ftpuser

sudo passwd ftp

依赖库

确保UBuntu系统中已经有/usr/include/mysql/mysql.h和/usr/lib/libmysqlclient.a

获得源代码编译安装

注意,系统中不能存在其他占用22端口的程序。

cd /usr/src
sudo wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3rc3.tar.gz
sudo tar xvzf proftpd-1.3.3rc3.tar.gz
cd proftpd-1.3.3rc3
install_user=ftp install_group=ftp sudo ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/run --mandir=/usr/local/man --without-pam --disable-auth-pam --enable-openssl --with-modules=mod_ratio:mod_readme:mod_sftp:mod_sql:mod_sql_passwd:mod_sql_mysql --with-includes=/usr/include/mysql --with-libraries=/usr/lib
sudo make
sudo make install

编译成功后,当前目录和/usr/sbin/下都有proftpd程序。

修改配置

修改配置文件/etc/proftd.conf文件,在文件开头添加如下配置

ServerName "ProFTPD Default Installation"
ServerType standalone
DefaultServer on

RootLogin off
RequireValidShell off
DefaultRoot ~
IdentLookups off
UseReverseDns off
CreateHome on


<IfModule mod_sql_passwd.c>
SQLPasswordEngine on
SQLPasswordEncoding hex
SQLPasswordSaltFile /home/chenshu/salt
</IfModule>

<IfModule mod_sql.c>
# Other mod_sql configuration here
SQLBackend mysql
SQLAuthTypes SHA256
SQLAuthenticate users*
SQLConnectInfo databaseName @IP :3306 username password 30
SQLDefaultUID 1003
SQLDefaultGID 1005
SQLUserInfo users login password_hash NULL NULL homedir NULL
</IfModule>

<IfModule mod_sftp.c>
SFTPEngine on
SFTPLog /etc/sftp.log
SFTPAuthMethods password
# Host keys, for server host authentication
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key
</IfModule>


# Port 21 is the standard FTP port.
Port 22



创建数据表

CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`login` varchar(16) NOT NULL,
`password_hash` varchar(80) NOT NULL,
`homedir` varchar(1024) NOT NULL,
PRIMARY KEY (`id`)
)


制造数据:
下面是Ruby代码:
require 'digest/sha2'
puts Digest::SHA256.hexdigest("770328" + "7wjCeqX/")

"770328"是用户密码
"7wjCeqX/"是salt,也应该保存在/home/chenshu/salt文件中。请不要在文件中添加换行符。
算出的字符串,保存到password_hash列中。

homedir字段保存用户目录,如果第一次登录时没有,会自动创建。


最后启动服务:
chenshu@chenshu-desktop:/usr/sbin$ sudo ./proftpd


测试,通过。






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics