【任务描述】
安装并启动vsftpd后以一个实例来对vsftpd进行配置, 现有一台FTP和Web服务器, FTP的功能主要用于维护学校的Web网站内容, 包括上传文件、 创建目录、 更新网页等。学校现有两个部门负责维护任务, 并分别使用user1和user2账号进行管理。 先要求仅允许user1和user2账号登录FTP服务器, 但不能登录本地系统, 并将这两个账号的根目录限制为/var/www/html, 不能进入该目录以外的任何目录。
【任务分析】
将FTP和Web服务器做在一起是企业经常采用的方法, 这样方便实现对网站的维护,为了增强安全性, 首先, 需要使用仅允许本地用户访问, 并禁止匿名用户登录。 其次, 使用chroot功能将user1和user2锁定在/var/www/html目录下。 如果需要删除文件, 则还需要注意本地权限。
【任务实施】
1. 了解vsftpd常用的配置参数和相关配置文件
与vsftpd服务相关的配置文件包括以下几个。
•/etc/vsftpd/vsftpd.conf: vsftpd服务器的主配置文件。
•/etc/vsftpd.ftpusers: 在该文件中列出的用户清单将不能访问FTP服务器。
•/etc/vstpd.user_list: 当/etc/vsftpd/vsftpd.conf文件中的 “userlist_enable” 和 “userlist_deny” 的值都为yes时, 在该文件中列出的用户不能访问FTP服务器。 当/etc/vsftpd/vsft⁃pd.conf文件中的 “userlist_enable” 的取值为yes而 “userlist_deny” 的取值为no时, 只有/etc/vstpd.user_list文件中列出的用户才能访问FTP服务器。
(1) 登录及对匿名用户的设置。
anonymous_enable=yes:设置是否允许匿名用户登录FTP服务器。
local_enable=yes:设置是否允许本地用户登录FTP服务器。
write_enable=yes:全局性设置,设置是否对登录用户开启写权限。
local_umask=022:设置本地用户的文件生成掩码为022。则对应权限为755 (777-022=755)。
anon_umask=022:设置匿名用户新增文件的umask掩码。
anon_upload_enable=yes:设置是否允许匿名用户上传文件, 只有在write_enable的值为yes时, 该配置项才有效。
anon_mkdir_write_enable=yes:设置是否允许匿名用户创建目录, 只有在write_enable的值为yes时, 该配置项才有效。
anon_other_write_enable=no: 若设置为yes, 则匿名用户会被允许拥有多于上传和建立目录的权限, 还有删除和更名的权限。 默认值为no。
ftp_username=ftp:设置匿名用户的账户名称,默认值为ftp。
no_anon_password=yes:设置匿名用户登录时是否询问口令。设置为yes,则不询问。
用户登录FTP服务器成功后, 服务器可以向登录用户输出预设置的欢迎信息。
ftpd_banner=Welcometoblah FTPservice:设置登录FTP服务器时显示的信息。
banner_file=/etc/vsftpd/banner:设置用户登录时, 将会显示banner文件中的内容, 该设置将覆盖ftpd_banner的设置。
dirmessage_enable=yes:设置进入目录时是否显示目录消息。若设置为yes,则用户进入目录时, 将显示该目录中由message_file配置项指定文件 (.message) 中的内容。
message_file=.message:设置目录消息文件的文件名。 如果dirmessage_enable的取值为yes, 则用户在进入目录时会显示该文件的内容。
(2) 设置用户在FTP客户端登录后所在的目录。
local_root=/var/ftp:设置本地用户登录后所在的目录,默认情况下,没有此项配置。 在vsftpd.conf文件的默认配置中, 本地用户登录FTP服务器后, 所在的目录为用户的家目录。
anon_root=/var/ftp:设置匿名用户登录FTP服务器时所在的目录。 若未指定, 则默认为/var/ftp目录。
(3) 设置是否将用户锁定在指定的FTP目录。
默认情况下, 匿名用户会被锁定在默认的FTP目录中, 而本地用户可以访问到自己FTP目录以外的内容。 出于安全性的考虑, 建议将本地用户也锁定在指定的FTP目录中。 可以使用以下几个参数进行设置:
chroot_list_enable=yes:设置是否启用chroot_list_file配置项指定的用户列表文件。
chroot_local_user=yes:用于指定用户列表文件中的用户, 是否允许切换到指定FTP目录以外的其他目录。
chroot_list_file=/etc/vsftpd.chroot_ list: 用于指定用户列表文件, 该文件用于控制哪些用户可以切换到指定FTP目录以外的其他目录。
(4) 设置用户访问控制。
对用户的访问控制由/etc/vsftpd.user_list和/etc/vsftpd.ftpusers文件控制。 /etc/vsft⁃pd.ftpusers文件专门用于设置不能访问FTP服务器的用户列表。 而/etc/vsftpd.user_list由下面的参数决定。
userlist_enable=yes:取值为yes时/etc/vsftpd.user_list文件生效, 取值为no时/etc/vsft⁃pd.user_list文件不生效。
userlist_deny=yes:设置/etc/vsftpd.user_list文件中的用户是否允许访问FTP服务器。若设置为yes时, 则/etc/vsftpd.user_list文件中的用户不能访问FTP服务器; 若设置为no时,则只有/etc/vsftpd.user_list文件中的用户才能访问FTP服务器。
(5) 设置主机访问控制。
tcp_wrappers=yes:设置是否支持tcp_wrappers。 若取值为yes, 则由/etc/hosts.allow和/etc/hosts.deny文件中的内容控制主机或用户的访问。 若取值为no, 则不支持。
(6) 设置FTP服务的启动方式及监听IP。
vsftpd服务既可以以独立方式启动, 也可以由xinetd进程监听以被动方式启动。
listen=yes:若取值为yes则vsftpd服务以独立方式启动。 如果想以被动方式启动, 将本行注释掉即可。
listen_address=IP:设置监听FTP服务的IP地址, 适合于FTP服务器有多个IP地址的情况。 如果不设置, 则在所有的IP地址监听FTP请求。 只有vsftpd服务在独立启动方式下才有效。
(7) 与客户连接相关的设置。
anon_max_rate=0:设置匿名用户的最大传输速度,若取值为0,则不受限制。
local_max_rate=0:设置本地用户的最大传输速度,若取值为0,则不受限制。
max_clients=0:设置vsftpd在独立启动方式下允许的最大连接数, 若取值为0, 则不受限制。
max_per_ip=0: 设置vsftpd在独立启动方式下允许每个IP地址同时建立的连接数目。若取值为0, 则不受限制。
accept_timeout=60:设置建立FTP连接的超时时间间隔,以秒为单位。
connect_timeout=120:设置FTP服务器在主动传输模式下建立数据连接的超时时间, 单位为秒。
data_connect_timeout=120:设置建立FTP数据连接的超时时间,单位为秒。
idle_session_timeout=600:设置断开FTP连接的空闲时间间隔,单位为秒。
pam_service_name=vsftpd:设置PAM所使用的名称。
(8) 设置上传文档的所属关系和权限。
chown_uploads=yes: 设置是否改变匿名用户上传文档的属主。 默认为no。 若设置为yes, 则匿名用户上传的文档属主将由chown_username参数指定。
chown_username=whoever:设置匿名用户上传文档的属主。建议不要使用root。
file_open_mode=755:设置上传文档的权限。
(9) 设置数据传输模式。
FTP客户端和服务器端在传输数据时, 既可以采用二进制方式, 也可以采用ASCII码方式。
ascii_download_enable=yes:设置是否启用ASCII码模式下载数据。默认为no。
ascii_upload_enable=yes:设置是否启用ASCII码模式上传数据。默认为no。
2. 建立维护网站内容的本地用户user1和user2并禁止本地登录, 然后设置其密码
输入命令如下:
[root@RHEL6~]#useradd -s /sbin/nologin user1
[root@RHEL6~]#useradd -s /sbin/nologin user2
[root@RHEL6~]#passwd user1
[root@RHEL6~]#passwd user2
3. 创建上传根目录并修改其权限
输入命令如下:
[root@RHEL6~]##mkdir -p /var/www/html //创建目录
[root@RHEL6~]#ll -d /var/www/html //显示目录属性
drwxr-xr-x2rootroot409611-1418:46/var/www/html
[root@RHEL6~]#chmod -R o+w /var/www/html //修改目录权限
[root@RHEL6~]#ll -d /var/www/html //显示目录属性
drwxr-xrwx2rootroot409611-1418:46/var/www/html
[root@ftp_server~]#echo "thisiswww.RHEL6.edu′sweb">
4. 修改安全上下文使上传根目录具有写入 (上传) 的功能
[root@ftp_server~]#chcon -t public_content_rw_t /var/www/html
5. 配置vsftpd.conf主配置文件并作相应修改
[root@ftp_server~]#vim /etc/vsftpd/vsftpd.conf
//查找或添加以下行并修改之, 其他配置行保持默认
anonymous_enable=no //禁止匿名用户登录
local_enable=yes //允许本地用户登录
write_enable=yes
local_umask=022
local_root=/var/www/html //设置本地用户的根目录为/var/www/html
chroot_local_user=yes
chroot_list_enable=yes //开启能锁定用户的chroot功能
chroot_list_file=/etc/vsftpd/chroot_list //设置锁定用户在根目录中的列表文件
userlist_enable=yes
//保存退出
6. 建立/etc/vsftpd/chroot_list文件并添加user1和user2账号
[root@RHEL6~]#vim /etc/vsftpd/chroot_list
User1
user2
7. 修改SELinux允许本地用户登录
[root@ftp_server~]#getsebool -a|grepftp
//查看与ftp有关的所有SELinux的布尔值
[root@ftp_server~]#setsebool -P ftp_home_dir on
8. 重启vsftpd服务使配置生效并开启21号端口
[root@ftp_server~]#service vsftpd restart
[root@ftp_server~]#iptables -I INPUT -p tcp --dport21 -j ACCEPT
9. 登录
在客户端IE浏览器的地址栏中输入 “ftp: //172.16.102.61” 后按Enter键, 在打开的FTP登录窗口中输入用户名和密码,单击“登录” 按钮,如图5-2所示。
图5-2 IE浏览器登录FTP
10. 上传和下载
从FTP登录窗口内拖拽文件 (夹) 到本地硬盘 (E:) 的窗口完成下载, 从本地硬盘(E:) 的窗口内将文件(夹) 拖拽到FTP登录窗口完成上传,如图5-3所示。
图5-3 FTP和本地硬盘间的文件传递
11. 测试在物理机的字符
其界面如图5-4所示。
图5-4 测试字符界面结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。