1、第2讲 vsftpd服务器配置与管理,主要内容,Linux环境下的FTP服务器 RHEL4中vsftp的默认配置 常用vsftpd服务器的配置,1. Linux环境下的FTP服务器,常用FTP客户端和服务器 vsftpd服务器的特点 谁在使用vsftpd FTP用户,1.1 常用FTP客户端和服务器,1.2 vsftpd服务器的特点,安全、高速、稳定 可设定多个基于IP的虚拟FTP server 匿名FTP服务非常容易 匿名FTP的根目录不需要任何特殊的目录结构,或系统程序或其他系统文件 不执行任何外部程序,从而减少了安全隐患 支持虚拟用户 支持带宽限制 支持inetd启动和独立FTP服务器两
2、种运行方式,1.3 谁在使用vsftpd, ftp.suse.org ftp.debian.org ftp.gnu.org ftp.kde.org ftp.gnome.org ftp.openbsd.org,1.4 FTP用户,本地用户 用户在FTP服务器上拥有账号,且该账号为为本地用户的账号 可以通过输入自己的账号和口令进行授权登录 登录目录为自己的home目录($HOME) 虚拟用户 用户在FTP服务器上拥有账号,但该账号只能用于文件传输服务 登录目录为某一指定的目录 通常可以上传和下载 匿名用户 用户在FTP服务器上没有账号 登录目录为/var/ftp,2. RHEL4中vsftp的默认
3、配置,安装并启动vsftpd vsftpd的配置文件 vsftpd.conf的一些默认配置选项 测试vsftpd的默认配置匿名帐号 测试vsftpd的默认配置本地帐号 关于vsftpd默认配置的小结,2.1 安装并启动vsftpd,查看是否安装了vsftpd# rpm qa | grep vsftpd 启动vsftpd# service vsftpd start 或者# /etc/init.d/vsftpd start 检验vsftpd是否已启动# pstree | grep vsftpd,2.2 vsftpd的配置文件,/etc/vsftpd/vsftpd.conf 主配置文件 /etc/
4、vsftpd.ftpusers 指定哪些用户不能访问FTP服务器 /etc/ vsftpd.user_list 当在/etc/ vsftpd/vsftpd.conf中设置了 userlist_enable=YES,且 userlist_deny=YES时, vsftpd.user_list中指定的用户不能访问FTP服务器。 当在/etc/ vsftpd/vsftpd.conf中设置了 userlist_enable=YES,且 userlist_deny=NO时,仅仅允许 vsftpd.user_list中指定的用户访问FTP服务器。,2.3 vsftpd.conf的一些默认配置选项(1),首
5、先备份vsftpd.conf文件 # cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak 允许匿名登录 anonymous_enable=YES 允许本地用户登录 local_enable=YES 开放本地用户的写权限 write_enable=YES 设置本地用户的文件生成掩码 local_umask=022,2.3 vsftpd.conf的一些默认配置选项(2),当切换目录时,显示该目录下的.message隐含文件的内容 dirmessage_enable=YES 激活上传和下载日志 xferlog_enable=YES 启用FTP
6、数据端口的连接请求 connect_from_port_20=YES 使用标准的ftpd xferlog日志格式 xferlog_std_format=YES 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d目录下 pam_service_name=vsftpd,2.3 vsftpd.conf的一些默认配置选项(3),激活vsftpd检查userlist_file指定的用户是否可以访问vsftpd服务器userlist_enable=YESuserlist_file的默认值是/etc/ vsftpd.user_list文件。 由于默认情况下, userlist_deny=YE
7、S,所以/etc/vsftpd.user_list文件中所列的用户均不能访问此 vsftpd服务器。 使vsftpd处于独立启动模式 listen=YES 使用 tcp_wrappers作为主机的访问控制方式 Tcp_wrappers=YES,2.4 测试vsftpd的默认配置匿名帐号,在匿名帐号的下载目录/var/ftp/pub目录下,存放一个测试文件 # echo “This is a test file” /var/ftp/pub/test_file 生成目录信息文件/var/ftp/pub/.message # echo “Welcome to this Directory.” /va
8、r/ftp/pub/.message 使用FTP客户端连接FTP服务器 下载test_file.txt - 成功 上传一个文件,例如/root/install.log - 失败 查看日志文件/var/log/vsftpd.log 需要打开配置选项xferlog_file=/var/log/vsftpd.log,2.5 测试vsftpd的默认配置本地帐号,以本地帐号student测试vsftpd服务器使用root不能登录vsftpd服务器 root用户被写在了/etc/vsftpd.ftpusers文件中,2.6 关于vsftpd默认配置的小结,允许匿名用户和本地用户登录。 匿名用户的登录名为f
9、tp或anonymous。 匿名用户不能离开匿名服务器目录/var/ftp,且只能下载不能上传。 本地用户(vsftpd服务器)的登录名为本地用户名(FC3),口令为本地用户的口令(FC3)。 本地用户可以离开其home目录,切换到有权访问的其他目录,并且在权限允许的情况下进行上传和下载。 写在文件/etc/vsftpd.ftpusers中的本地用户禁止登录。,3. 常用vsftpd服务器的配置,允许匿名用户上传 配置基本的性能和安全选项 配置基于本地用户的访问控制 配置基于主机的访问控制 配置vsftpd在非标准端口下提供服务 配置基于IP的虚拟FTP服务器 配置虚拟用户的FTP服务器,3.
10、1 允许匿名用户上传(1),创建匿名上传目录# mkdir / var/ftp/imcomming 修改上传目录的权限# chmod 777 / var/ftp/imcomming 在/etc/vsftpd/vsftpd.conf中激活如下配置选项 允许匿名用户上传(选项write_enable需要为YES)anon_upload_enable=YESanon_umask=022 允许匿名用户创建目录(选项write_enable需要为YES)anon_mkdir_write_enable=YES 允许匿名用户进行写操作(如删除和重命名文件或目录)anon_other_write_enable
11、=YES 匿名用户仅被允许下载对于它可读的文件anon_world_readable_only=YES,3.1 允许匿名用户上传(2),检查配置文件 vsftpd /etc/vsftpd/vsftpd.conf 重新启动vsftpd# service vsftpd restart,3.2 配置基本的性能和安全选项(1),设置空闲用户会话的中断时间(s)idle_session_timeout=600 设置空闲的数据连接的中断时间(s)data_connection_timeout=120 限制客户连接数max_clients=200max_per_ip=3 设置最大传输速率限制(B/s)loc
12、al_max_rate=50000anon_max_rate=30000,3.2 配置基本的性能和安全选项(2),不允许某些用户切换到其home目录以外的其他目录chroot_list_enable=YESchroot_list_file=/etc/vsftpd.chroot_list /etc/vsftpd.chroot_list文件中指定的用户不能访问其home目录以外的其他目录 不允许所有用户切换到其home目录以外的其他目录chroot_local_user=YES 仅允许某些用户切换到其home目录以外的其他目录chroot_local_user=YESchroot_list_ena
13、ble=YESchroot_list_file=/etc/vsftpd.chroot_list /etc/vsftpd.chroot_list文件中指定的用户能够访问其home目录外的其他目录,3.3 配置基于本地用户的访问控制,使选项userlist_file对应的文件(默认值为/etc/vsftpd.user_list)中指定的本地用户不能访问,而其他用户可以访问 userlist_enable=YES userlist_deny=YES 使选项userlist_file对应的文件(默认值为/etc/vsftpd.user_list)中指定的本地用户可以访问,而其他用户不可以访问 user
14、list_enable=YES userlist_deny=NO,3.4 配置基于主机的访问控制(独立模式) (1),TCP_wrappers使用/etc/hosts.allow和/etc/hosts.deny两个配置文件实现访问控制。 在hosts.allow可以使用DENY,通常使用它来实现访问控制。 对于vsftpd,hosts.allow中每条记录的语法格式如下 vsftpd: 主机表: setenv VSFTPD_LOAD_CONF 配置文件名,配置vsftpd访问控制时主机表的书写语法,配置主机访问控制的例子(1),要求 拒绝192.168.2.0/24访问 对域和192.168.
15、1.0/24内的所有主机不作连接数和最大传输速率限制 对其他主机的访问控制限制每IP地址的连接数为1,最大传输速率限制为10kb/s 步骤 修改/etc/vsftpd/vsftpd.conf文件,设置如下选项 tcp_wrappers=YES (默认情况) local_max_rate=10000 anon_max_rate=10000 max_per_ip=1,配置主机访问控制的例子(2),修改/etc/hosts.allow,加入如下配置选项vsftpd: , 192.168.1.0/24: setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd_tcp_wr
16、ap.confvsftpd: 192.168.2.0/24: DENY 编辑/etc/vsftpd/vsftpd_tcp_wrap.conf local_max_rate=0 anon_max_rate=0 max_per_ip=0 重新启动vsftpd,3.5 配置vsftpd在非标准端口下提供服务,vsftpd必须工作在独立启动方式下,才能在非标准端口提供服务 例子:在10021端口提供服务 修改/etc/vsftpd/vsftpd.conf文件,添加如下一行listen_port=10021 重启vsftpd服务,3.6 配置基于IP的虚拟FTP服务器(1),配置虚拟IP地址 设本机现有
17、的IP地址为192.168.1.222 配置一个虚拟网络接口eth0:1# ifconfig eth0:1 192.168.1.234 up 建立虚拟FTP的服务器目录并设置适当的权限 建立虚拟FTP的服务器目录# mkdir d /var/ftp2/pub# chmod 755 R /var/ftp2 在下载目录下生成测试文件# echo “hello” /var/ftp2/pub/test_file.txt,3.6 配置基于IP的虚拟FTP服务器(2),创建虚拟服务器的匿名用户所映射的本地用户ftp2# useradd d /var/ftp2 M ftp2 在/etc/vsftpd/vsf
18、tpd.conf中添加如下一行,将原FTP服务绑定到eth0接口listen_address=192.168.1.222 建立虚拟FTP服务器的主配置文件 用备份的vsftpd的默认主配置文件生成虚拟FTP服务器的主配置文件# cp /etc/vsftpd/vsftpd.conf.fc3 /etc/vsftpd/vsftpd_site2.conf,3.6 配置基于IP的虚拟FTP服务器(3),修改虚拟FTP服务器的主配置文件,添加如下一行listen_address=192.168.1.234ftp_username=ftp2ftpd_banner=This is the alternativ
19、e FTP site 重新启动vsftpd# service vsftpd restart,测试:基于IP的虚拟FTP服务器(1),测试:基于IP的虚拟FTP服务器(2),3.7 配置虚拟用户的FTP服务器(1),生成虚拟用户口令库文件 建立一个文本文件,存储虚拟用户名和口令 #cd /root #vi logins.txtlogin.txt文件的格式为:奇数行为用户名,偶数行为口令。 使用 db_load生成口令库文件#db_load T t hash f /logins.txt /etc/vsftpd_logins.db 修改口令库文件的权限#chmod 600 /etc/vsftpd/v
20、sftpd_logins.db,3.7 配置虚拟用户的FTP服务器(1),生成虚拟用户口令库文件 建立一个文本文件,存储虚拟用户名和口令 #cd /root #vi logins.txt login.txt文件的格式为:奇数行为用户名,偶数行为口令 使用 db_load生成口令库文件#db_load T t hash f /logins.txt /etc/vsftpd/vsftpd_login.db 修改口令库文件的权限# chmod 600 /etc/vsftpd/vsftpd_login.db,logins.txt,3.7 配置虚拟用户的FTP服务器(2),配置生成vsftpd的认证文件
21、编辑生成虚拟用户所需的PAM配置文件# vi /etc/pam.d/vsftp.vu 插入如下的两行auth required /lib/security/pam_userdb.so db=/etc/ vsftpd/vsftpd_loginaccount required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login,vsftp.vu,3.7 配置虚拟用户的FTP服务器(3),建立虚拟用户所要访问的目录并设置相应权限 建立虚拟用户要访问的目录,并设置仅virutal用户访问的权限# useradd d /home/ftpsite
22、 virtual# chmod 700 /home/ftpsite 建立测试文件# su virtual c “echo hello, I am virtual /home/ftpsite/test_file”,3.7 配置虚拟用户的FTP服务器(4),建立配置文件 由备份的配置文件/etc/vsftpd/vsftpd.conf.bak生成新的主配置文件 独立运行且匿名下载 # cp /etc/vsftpd/vsftpd.conf.bak /etc/vsftpd/vsftpd.conf 修改主配置文件,保证其中有下面的配置语句anonymouns_enable=NO local_enable=
23、YESwrite_enable=NOanon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NO,3.7 配置虚拟用户的FTP服务器(5),chroot_local_user=YESlisten=YESlisten_port=10021ftpd_banner=This FTP server is virtual user only.guest_enable=YES 启用虚拟用户guest_username=virtual 将虚拟用户映射为本地virtual用户,这样虚拟用户登录后才能进入本地用户virtual的目录/home/ftpsitepam_service_name=vsftp.vu 指定PAM配置文件vsftp.vu 重新启动vsftpd # service vsftpd restart,虚拟用户时的vsftpd.conf,测试:虚拟用户,查看谁登陆了FTP,并杀死它的进程,ps xf |grep ftpkill 进程号,