一、实现功能:
  1. 域用户认证 
  2. SSL加密 
  3. 虚拟域用户隔离认证 
  4. 实现公共目录功能 
  5. 实现多用户同目录功能 
二、实施步骤:
1、系统基础设置

计算机名、IP地址、网关、子网掩码、DNS设置

2、安装所需要的软件



Yum install httpd -y
Yum install vsftpd* -y
Yum install pam* -y
Yum install mod_ssl* -y



3、建立vsftpd服务宿主用户




Useradd vsftpd –s /sbin/nologin



4、建立vsftpd虚拟宿主用户


Useradd virtusers –s /sbin/nologin


5、VSFTPD相关配置

1)编辑vsftpd.conf 配置文件



Cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak /备份配置文件
Vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO  /设定不允许匿名访问
local_enable=YES  /设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
write_enable=YES  /设定可以进行写操作。
local_umask=022 /设定上传后文件的权限掩码。
anon_upload_enable=NO  /禁止匿名用户上传
anon_mkdir_write_enable=NO  /禁止匿名用户建立目录
dirmessage_enable=YES /设定开启目录标语功能。
xferlog_enable=YES  /设定开启日志记录功能。
connect_from_port_20=YES  /设定端口20进行数据连接
Chown_uploads=NO  /设定禁止上传文件更改宿主
#chown_username=whoever
#xferlog_file=/var/log/xferlog
xferlog_std_format=YES  /设定日志使用标准的记录格式。
idle_session_timeout=1200  / 设定空闲连接超时时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值600,单位秒。
data_connection_timeout=7200  /设定单次最大连续传输时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值120,单位秒。
nopriv_user=vsftpd  /设定支撑vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。
async_abor_enable=YES  /设定支持异步传输功能
ascii_upload_enable=YES  /设定支持ASCII模式的上传功能
ascii_download_enable=YES  /设定支持ASCII模式的下载功能
ftpd_banner=Welcome to airmate ftp service.  /设定Vsftpd的登陆标语
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
ls_recurse_enable=NO  /禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服务器造成威胁。
#ls_recurse_enable=YES
listen=YES
#listen_ipv6=YES
pam_service_name=vsftpd  /设定PAM服务下Vsftpd的验证配置文件名。
userlist_enable=YES  /启用userlist功能
userlist_deny=YES
userlist_file=/etc/vsftpd/allowusers_list  /配置userlist用户列表文件位置
tcp_wrappers=YES  /设定支持TCP Wrappers
guest_enable=YES  /设定启用虚拟用户功能
guest_username=virtusers  /指定虚拟用户的宿主用户
virtual_use_local_privs=YES  /设定虚拟用户的权限符合他们的宿主用户
port_enable=YES  /允许使用主动模式进行连接到FTP服务器
pasv_enable=YES  /允许使用被动模式进行连接到FTP服务器
pasv_min_port=50000  /配置被动模式的最小端口为50000
pasv_max_port=50200  /配置被动模式的最大端口为50200
pasv_address=8.8.8.8  / 使vsftpd在pasv命令回复时跳转到提定的IP地址
ssl_enable=YES  /开启ssl功能
rsa_cert_file=/etc/vsftpd/vsftpd.pem  /指定证书位置
ssl_ciphers=HIGH
syslog_enable=yes  /将FTP日志记录到/var/log/messages文件中,有效解决日志乱码问题


2)建立虚拟用户配置文件存放路径


mkdir /etc/vsftpd/vconf/


3)建立FTP用户文件存放位置


Mkdir /opt/vsftp/
Chown –R virtusers.virtusers /opt/vsftp/


6、 配置通过pam认证方式

1)修改vsftpd的PAM认证参数

设置vsftpd的pam认证配置,添加如下两


auth    sufficient pam_ldap.so #keep this as the first 'auth' item
account sufficient pam_ldap.so #keep this as the first 'account' item


2)配置PAM的LDAP认证参数

   设置pam的ldap认证配置,设置如下几个参数:



host 192.168.1.203
base cn=users,dc=lidongni,dc=com
binddn cn=administrator,cn=users,dc=lidongni,dc=com
bindpw www.lidongni.com
pam_login_attribute sAMAccountName



3)关闭SElinux以简化配置

    如果安装了SElinux且不懂配置的,建议将其关闭。方法是修改/etc/selinux/config文件的如下内容:



SELINUX=disabled #effective after restart




7、配置SSL加密进入/etc/vsftpd/目录下输入以下命令生成证书



req -x509 -nodes -days 365 -newkey rsa:1024 -subj "/C=CN/ST=GD/L=SZ/O=lidongni/CN=lidongni" -keyout /etc/vsftpd/vsftpd1.pem -out /etc/vsftpd/vsftpd1.pem


 


8、防火墙开启VSFTPD功能

在/etc/sysconfig/iptables里面添加以下内容,并重启iptables服务。



-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT