Chinaunix首页 | 论坛 | 博客
  • 博客访问: 354204
  • 博文数量: 213
  • 博客积分: 566
  • 博客等级: 中士
  • 技术积分: 1210
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-21 13:09
文章分类

全部博文(213)

文章存档

2015年(1)

2013年(7)

2012年(128)

2011年(77)

分类:

2012-03-12 18:30:17

原文地址:完整功能的FTP服务器配置 作者:gaogo

背景:原来是分成几个部分来介绍,现在觉得太麻烦了,就整合到一篇文章里吧

思路:把原来的文章整合到一起

功能:

1.基于SSL加密

2.基于Mysql虚拟用户认证,使用SSL认证

3.本地用户使用SSL认证

4.本地用户和虚拟用户共存,同时使用SSL认证

5.其它限速啊,根据配置自行修改

步骤:

一、  升级OpenSSL
1. 下载
去官方下载,地址为:
下载最新版本:openssl-1.0.0a.tar.gz

2. 安装

1
2
3
4
5
6
Tar xzvf openssl-1.0.0a.tar.gz
Cd openssl-1.0.0a
./config –prefix=/usr/local/openssl-1.0.0a
Make
Make test
Make install

1. 验证

1
2
/usr/local/openssl-1.0.0a/bin/openssl version
OpenSSL 1.0.0a 1 Jun 2010

二、 升级OpenSSH
1. 下载
去官方下载,地址为:
下载最新版本:openssh-5.6.p1.tar.gz

1. 安装

1
2
3
4
5
Tar xzvf openssh-5.6.p1.tar.gz
Cd openssh-5.6.p1
./configure –prefix=/usr –with-pam –with-zlib –with-ssl-dir=/usr/local/openssl-1.0.0a --with-md5-passwords --mandir=/usr–hare/man –sysconfigdir=/etc/ssh
Make
Make install

2. 验证

1
2
ssh -v
OpenSSH_5.6p1, OpenSSL 1.0.0a 1 Jun 2010

三、 安装基于SSL和PAM的VSFTPD
1. 下载
去官方下载,地址为:ftp://vsftpd.beasts.org
下载最新版本:vsftpd-2.3.2.tar.gz

2. 修改编译参数
修改编译参数,以支持SSL和PAM
把builddefs.h

1
2
3
4
5
6
7
8
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
  
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
  
#endif /* VSF_BUILDDEFS_H */

改为

1
2
3
4
5
6
7
8
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
  
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL
  
#endif /* VSF_BUILDDEFS_H */

3. 建立相应该的目录

1
2
Mkdir /etc/Vsftpd
Mkdir /etc/Vsftpd/ssl

4. 安装

1
2
3
4
Make
Make install
Cp Vsftpd.conf /etc/Vsftpd/
Cp RedHat/Vsftpd.pam /etc/pam.d/vsftpd

四、  配置Vsftpd
1. 配置本地用户
修改/etc/Vsftpd/Vsftpd.conf

1
2
3
4
5
6
7
8
9
Local_enable=YES
Dirmessages_enable=YES
Xferlog_enable=YES
Connect_from_port_20=YES
Xferlog_file=/var/log/vsftpd.log
Xferlog_std_format=YES
Chroot_local_user=YES
Listen=YES
Pam_service_name=vsftpd

2. 配置虚拟用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Anonymous_enable=NO
Write_enable=NO
Anon_upload_enable=NO
Anon_mkdir_write_enable=NO
Anon_other_write_enable=NO
Userlist_enable=YES
Userlist_deny=NO
Userlist_file=/etc/vsftpd/vsftpd.userlist
Ls_recurse_enable=NO
Ascii_upload_enable=YES
Ascii_download_enable=YES
Guest_enable=YES
Guest_username=virtual
User_config_dir=/etc/vsftpd/virtual_user_config
User_sub_token+$USER

3. 配置SSL

1
2
3
4
5
6
Ssl_enable=YES
Ssl_tlsv1=YES
Allow_anon_ssl=YES   //这里一定要设置为YES,否则虚拟用户验证不了
Force_local_data_ssl=YES
Force_local_logins_ssl=YES
Rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem

4. 配置VSFTPD的SSL证书

1
2
/usr/local/openssl1.0.0a/bin/openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
Cp vsftpd.pem /etc/vsftpd/ssl

5. 建立虚拟帐号映谢的本地帐与

1
2
Useradd –s /sbin/nologin –d /home/ftp virtual
Passwd virtual

五、 配置Mysql
1. 建立数据库并授权virtual用户对vsftpd库有管理权限

1
2
3
4
mysql> CREATE DATABASE vsftpd;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON vsftpd.* TO virtual@"%" IDENTIFIED BY 'virtual';
Query OK, 0 rows affected (0.00 sec)

2. 建立用户信息表

1
2
3
4
5
6
7
8
mysql> use vsftpd;
Database changed
mysql> CREATE TABLE account (
>`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
>`user` VARCHAR(128) NOT NULL UNIQUE,
>`passwd` VARCHAR(128) NOT NULL
>);
Query OK, 0 rows affected (0.02 sec)

3. 建立用户访问日志

1
2
3
4
5
6
7
8
9
mysql> CREATE TABLE log (
>`msg` VARCHAR(128),
>`user` VARCHAR(128),
>`pid` INT,
>`host` VARCHAR(128),
>`rhost` VARCHAR(128),
>`time` TIMESTAMP
>);
Query OK, 0 rows affected (0.00 sec)

4. 建立触发器,自动把更新的密码用md5加密方式加密

1
2
3
4
5
6
mysql> CREATE TRIGGER trigger_format_passwd
>BEFORE INSERT
>ON account
>FOR EACH ROW
>SET NEW.passwd = md5(NEW.passwd);
Query OK, 0 rows affected (0.00 sec)
1
2
3
4
5
6
mysql> CREATE TRIGGER trigger_format_passwd_update
>BEFORE UPDATE
>ON account
>FOR EACH ROW
>SET NEW.passwd = md5(NEW.passwd);
Query OK, 0 rows affected (0.00 sec)

5. 插入用户数据

1
2
3
4
5
6
7
8
9
mysql> INSERT INTO account (user, passwd) VALUES ("admin", "redhat");
Query OK, 1 row affected (0.00 sec)
mysql> select * from account;
+----+------------------+---------------------------------------------------+
| id | user        | passwd                         |
+----+-------------------+---------------------------------------------------+
| 1 | admin        | e2798af12a7a0f4f70b4d69efbc25f4d |
+----+--------------------+---------------------------------------------------+
1 row in set (0.01 sec)

六、 安装pam_mysql
1. 下载
去官方下载,地址为:
下载最新版本:pam_mysql-0.7RC1.tar.gz

2. 安装

1
2
3
4
5
Tar xzvf pam_mysql-0.7RC1.tar.gz
Cd pam_mysql-0.7RC1
./configure –with-openssl
Make
Make install

建立链接文件

1
Ln –s /usr/lib/security/pam_mysql.so /lib/security/pam_mysql.so

七、 配置PAM
1. 配置虚拟用户通过PAM验证
把以下内容加入到 /etc/pam.d/vsftpd文件的最前面

1
2
3
#### Auth for Mysql virutal user with md5 passwd
auth sufficient pam_mysql.so user=virtual passwd=virtual host=localhost db=vsftpd table=account usercolumn=user passwdcolumn=passwd crypt=md5 sqllog=true logtable=log logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time
account sufficient pam_mysql.so user=virtual passwd=virtual host=localhost db=vsftpd table=account usercolumn=user passwdcolumn=passwd crypt=md5 sqllog=true logtable=log logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time

这里的sufficient 是本地用户和虚拟用户共存的关键

2. 配置本地用户
在/etc/pam.d/vsftpd文件中已经存在对本地用户的配置,所以这里不需要更改配置。

八、 其它配置
1. 其它配置
建立本地登录FTP的用户

1
2
Useradd kevin
Passwd evin

2. 建立/etc/vsftpd/vsftpd.userlist
把需要登录FTP用户加入到这个文件

1
2
Kevin
Admin

3. FTP客户端配置

客户端配置

配置2
九、 验证
1. 虚拟用户验证
在客户端使用flashfxp以TLS方式连接FTP服务器输入帐号密码登录
如图:

虚拟用户登录

登录成功,如图:

登录成功--虚拟用户

2. 本地用户登录验证
在客户端使用flashfxp以TLS方式连接FTP服务器输入帐号密码登录
如图:

本地用户登录

登录成功,如图:

本地用户登录成功

阅读(497) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~