前言:FTP服务器在网络中经常见,下面就来配置一个FTP服务器,相对于其他服务器来说,它还是很简单的。
实验环境:redhat5.8
一,安装vsftpd
yum -y install vsftpd
这时一个简单的拥有最基本功能的ftp服务就建立好了,下面来启它吧。
service vsftpd start
二,调整配置文件/etc/vsftpd/vsftpd.conf,实现不同的功能
anonymous_enable=YES ##启用匿名用户 local_enable=YES ##启用本地用户 write_enable=YES ##启用可写 local_umask=022 ##本地用户umask值 anon_mkdir_write_enable=YES ##匿名用户建立目录 anon_upload_enable=YES ##匿名用户可以上传 connect_from_port_20=YES ##主动模式下启用的传输端口 xferlog_enable=YES ##启用日志 xferlog_file=/var/log/xferlog ##日志位置 listen=YES ##是否监听端口,这样vsftd以standalone运行 pam_service_name=vsftpd ##用pam模块验证身份 userlist_enable=YES ##是否启用userlist表,功能与下面设置有关 userlist_deny=YES ##代表写在表里的都不允许登陆 userlist_deny=NO ##代表只允许表里面的登陆 tcp_wrappers=YES ##支持tcp_wapper的过滤功能,与/etc/hosts.deny或allow有关
我们设置为匿名用户可以登陆可以下载但不能上传不能建立,本地用户可以上传下载,并把本地用户限制到自己的家目录中,配置文件如下:
anonymous_enable=YES local_enable=YES chroot_local_user=YES write_enable=YES local_umask=YES connect_from_port_20=YES listen=YES userlist_enable=YES userlist_deny=YES pam_service_name=vsftpd tcp_wrappers=YES
三,本地用户实现基于SSL的密码传输与数据传输
基于原来的配置文件新增如下:
ssl_enable=YES ##启用ssl allow_anon_ssl=NO ##匿名用户不启用ssl force_local_data_ssl=YES ##强制本地用户数据通过ssl传输 force_local_logins_ssl=YES ##强制本地用户通过ssl登陆 ssl_tlsv1=YES ##启用的ssl版本 ssl_sslv2=NO ##sslvs不安全 ssl_sslv3=YES rsa_cert_file=/etc/vsftpd/vsftpd.cert ##vsftd的证书位置 rsa_private_key_file=/etc/vsftpd/vsftpd.key ##vsftpd的私钥位置
证书等建立见:http://laoguang.blog.51cto.com/6013350/1035608
测试:
[root@mail vsftpd]# ftp 192.168.0.117
Connected to 192.168.0.117.
220 (vsFTPd 2.0.5)
504 Unknown AUTH type.
504 Unknown AUTH type.
KERBEROS_V4 rejected as an authentication type
Name (192.168.0.117:root): ibuler
530 Non-anonymous sessions must use encryption.
Login failed.
本地用户不允许直接登陆
下面用flashFXP测试
使用TSL等加密可以通过,你可以用抓包工具测试是否能抓到密码!
四,通过建立数据文件启用虚拟用户
4.1建立虚拟FTP用户的账号数据文件
vi /etc/vsftp/vuser 数据如下:
redhat ##奇数行为账号 admin ##偶数行为密码 hadoop admin nginx admin
4.2把它转换为hash编码,存储为db格式,需要用到db_load工具
yum -y install db4_utils ##此软件提供db_load db_load -T -t hash -f vuser vuser.db
4.3创建虚拟用户映射的用户及目录
useradd -d /var/ftp/vuser -s /sbin/nologin vuser; chmod 755 /var/ftp/vuser;
4.4建立虚拟用户的PAM认证文件
vi /etc/pam.d/vuser ##内容如下auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
4.5配置/etc/vsftpd/vsftpd.conf启用虚拟用户,添加如下
guest_enable=YES guest_username=vuser pam_service_name=vuser ##注释原来的验证,启用虚拟用户验证,刚才建的那个
4.6为每个用户建立独立的配置文件,在/etc/vsftpd/vsftpd.conf中添加用户配置目录的支持
/etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vuses_dir mkdir /etc/vsftpd/vusers_dir cd /etc/vsftpd/vusers_dir touch hadoop vi redhat 内容如下 anon_upload_enable=YES anon_mkdir_write_enable=YESvi nginxanon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
这些配置文件分别定义了 haddop只有下载权限,redhat具有上传权限,但不具有删除权限,
而ngin同时具有上传与删除等权限
4.7重启vsftpd测试
五,基于MySQL数据库实现虚拟用户
5.1安装开发工具及开发库,mysql已成功部署
见:http://laoguang.blog.51cto.com/6013350/1039208
5.2安装pam_mysql软件,让pam可以通过mysql验证
下载pam_mysql http://pan.baidu.com/share/link?shareid=117692&uk=2501966565tar xvf pam_mysql-0.7RC1.tar.gz make make install
5.3为vsftpd建立数据库
mysql>create database vsftpd;mysql>grant select on vsftpd.* to ‘vsftpd’@’localhost’ identified by ‘vsftpd’;mysql>use vsftpd;mysql>create table users (>id tinyint auto_increment not null,>name char(20) not null,>passwd char(50) not null,>primary key(id)>);添加测试用户mysql>insert into users (name,passwd)>values>('baidu',password('123456'));mysql>insert into users (name,passwd)>values>('tencent',password('123456'));
5.4建立pam认证需要的文件
vi /etc/pam.d/vuser_mysql auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=2 ##上为一行 account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=2 ##这也为一行
5.5编辑/etc/vsftpd/vsftpd.conf 更改pam认证文件
vi /etc/vsftpd/vsftpd.confpam_service_name=vuser_mysql##也可以为这些虚拟用户建立独立的配置文件,控制他们上传等
到此vsftp总结结束