实验拓扑:
Linux Client -----RHEL5.9(vmnet1)----------(vmnet1) Win7 Client 实验环境: Red Hat Enterprise Linux Server5.4 vsftpd文件共享服务器IP 192.168.10.253 客户端IP 192.168.10.20 实验一:测试默认安装vsftpd的结果 匿名用户与本地用户都可以登录 匿名用户登录到/var/ftp,只能下载不能上传 本地用户登录到本地用户的家目录,可以上传和下载 服务器端设置 [iyunv@dhcpser ~]# cd /misc/cd/Server //进入RHEL5.9光盘 [iyunv@dhcpser Server]# ls *vsftpd* //查看有vsftp安装包 vsftpd-2.0.5-28.el5.x86_64.rpm [iyunv@dhcpser Server]# rpm -ivh vsftpd-2.0.5-28.el5.x86_64.rpm //安装vsftpd [iyunv@dhcpser Server]# service vsftpd restart //启动vsftpd服务 [iyunv@dhcpser Server]# chkconfig vsftpd on //设置vsftpd开机自启动 [iyunv@dhcpser Server]# touch /var/ftp/pub/test1.txt //创建测试文件 [iyunv@dhcpser ~]# useradd kaka [iyunv@dhcpser ~]# echo "redhat" | passwd --stdin kaka //为用户kaka设置密码 Changing password for user kaka. passwd: all authentication tokens updated successfully.
验证:(客户端测试) [iyunv@localhost ~]# ftp 192.168.10.253 //连接ftp服务器 Connected to 192.168.10.253. 220 (vsFTPd 2.0.5) 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type Name (192.168.10.253:root): ftp // 匿名用户登录 331 Please specify the password. Password: 230 Login successful. //登陆成功 Remote system type is UNIX. Using binary mode to transfer files. ftp> cd pub //进入pub目录 250 Directory successfully changed. ftp> ls 227 Entering Passive Mode (192,168,1,253,75,98) 150 Here comes the directory listing. -rw-r--r-- 1 0 0 11627 Jun 13 02:04 etc.txt 226 Directory send OK. ftp> get test1.txt //下载测试文件 local: etc.txt remote: etc.txt 227 Entering Passive Mode (192,168,1,253,136,141) 150 Opening BINARY mode data connection for etc.txt (11627 bytes). 226 File send OK. 11627 bytes received in 0.00082 seconds (1.4e+04 Kbytes/s) ftp> !ls //!在外部执行命令,查看
下载结果 anaconda-ks.cfg test1.txt install.log.syslog //下载test.txt成功 Desktop install.log ftp> put install.log //上传文件 local: install.log remote: install.log 227 Entering Passive Mode (192,168,1,253,46,17) 550 Permission denied. //无权限拒绝 ftp> quit //退出
... 实验二: 禁止匿名用户登录 修改FTP默认端口为2121 禁锢本地用户在自己家目录
实验步骤: [iyunv@ser01 ~]# cd /etc/vsftpd/ [iyunv@ser01 vsftpd]# cp vsftpd.conf vsftpd.conf.bak //备份vsftpd主配
置文件 [iyunv@ser01 vsftpd]# vim vsftpd.conf //编辑vsftpd主配
置文件 ... 12 anonymous_enable=NO //不允许匿名用户
访问 ... 119 listen_port=2121 //监听端口2121 120 chroot_local_user=YES [iyunv@ser01 vsftpd]# service vsftpd restart //重启服务 [iyunv@ser01 vsftpd]# netstat -tulnp | grep vsftpd //查看监听端口 tcp 0 0 0.0.0.0:2121 0.0.0.0:* LISTEN
4705/vsftpd 测试: ftp 192.168.1.253 2121 //登录ftp Name (192.168.1.253:root): kaka //用户kaka登录 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd //查看当前目录,为伪根目录(即用户家目录) 257 "/"
实验三:验证黑/白名单 /etc/vsftpd/ftpusers//黑名单 /etc/vsftpd/user_list //黑/白名单 [ root@ser01 ~]# useradd jerry //添加用户jerry [iyunv@ser01 ~]# useradd mike [iyunv@ser01 ~]# echo "123456" | passwd --stdin jerry //为用户jerry设置密码 Changing password for user jerry. passwd: all authentication tokens updated successfully. [iyunv@ser01 ~]# echo "123456" | passwd --stdin mike Changing password for user mike. passwd: all authentication tokens updated successfully. [iyunv@ser01 ~]# grep kaka /etc/vsftpd/ftpusers //查看用户kaka是否在黑名单 kaka //用户kaka在黑名单中 //请问kaka能否登录FTP?? [iyunv@ser01 ~]# grep jerry /etc/vsftpd/user_list //查看用户jerry是否在黑白名单 jerry //请问jerry能否登录FTP??? [iyunv@ser01 ~]# vim /etc/vsftpd/vsftpd.conf //编辑vsftpd主配置文件 ... 121 userlist_deny=NO //拒绝用户列表选择NO [iyunv@ser01 ~]# service vsftpd restart //请问kaka、jerry、mike谁可以登录??? 只有jerry可以登录 实验完毕,请将主配置文件121 userlist_deny=NO注释,将user_list和 ftpusers里面添加
的账户去掉
实验四: 本地用户登录到/data/ftproot目录 up上传/下载,down仅下载。拒绝所有用户登录包括匿名用户 最多20个并发,每IP地址最多2个并发 限制下载速度限制为100KB/s [iyunv@ser01 ~]# mkdir -p /data/ftproot //新建文件夹ftproot [iyunv@ser01 ~]# useradd up [iyunv@ser01 ~]# useradd down [iyunv@ser01 ~]# echo "redhat" | passwd --stdin up [iyunv@ser01 ~]# echo "redhat" | passwd --stdin down [iyunv@ser01 ~]# vim /etc/vsftpd/vsftpd.conf ... 12 anonymous_enable=NO //关闭匿名用户访问 ... 18 write_enable=YES //允许可写入 ... 117 userlist_enable=YES //启用黑白名单 ... 121 userlist_deny=NO //是否启用黑白名单拒绝,不启用 122 local_root=/data/ftproot //指定vsftp目录 123 max_clients=20 //最大连接数 124 max_per_ip=2 //最大并发数 125 local_max_rate=100000 //最高下载速度 [iyunv@ser01 ~]# service vsftpd restart [iyunv@ser01 ~]# setfacl -m u:up:rwx /data/ftproot/ [iyunv@ser01 ~]# tail -n 2 /etc/vsftpd/user_list up down [iyunv@ser01 ~]# dd if=/dev/zero of=/data/ftproot/local.tgz bs=1M count=1000//创建测试文件
测试: [iyunv@localhost~]# wget ftp://up:redhat@192.168.1.253:2121/local.tgz//下载文件测试下载速度
实验总结: vsftpd.conf 常见配置及含义说明 作用范围 | 配置项及示例 | 说明 |
匿名 | anonymous_enable=YES | 启用匿名访问 | anon_umask=022 | 匿名用户所上传文件的权限掩码 | anon_root=/var/ftp | 匿名用户的FTP根目录 | anon_upload_enable=YES | 允许上传文件 | anon_mkdir_write_enable=YES | 允许创建目录 | anon_other_write_enable=YES | 开放其他写入权 | anon_max_rate=0 | 限制最大传输速率,单位为字节 |
本地用户 | local_enable=YES | 是否启用本地系统用户 | local_umask=022 | 本地用户所上传文件的权限掩码 | local_root=/var/ftp | 设置本地用户的FTP根目录 | chroot_local_user=YES | 是否将用户禁锢在主目录 | local_max_rate=0 | 限制最大传输速率(字节/秒) |
全局配置 | listen=YES | 是否以独立运行的方式监听服务 | listen_address=192.168.4.1 | 设置监听的IP地址 | listen_port=21 | 设置监听FTP服务的端口号 | write_enable=YES | 是否启用写入权限 | download_enable=YES | 是否允许下载文件 | dirmessage_enable=YES | 用户切换进入目录时示.message文件(如果存在)的内容 | xferlog_enable=YES | 启用xferlog日志,默认记录到/var/log/xferlog文件 | xferlog_std_format=YES | 启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式 | connect_from_port_20=YES | 允许服务器主动模式(从20端口建立数据连接) | pasv_enable=YES | 允许被动模式连接 | pasv_max_port=24600 | 设置用于被动模式的服务器最大端口号 | pasv_min_port=24500 | 设置用于被动模式的服务器最小端口号 | pam_service_name=vsftpd | 设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名) |
| userlist_enable=YES | 是否启用user_list用户列表文件 | userlist_deny=YES | 是否禁止user_list列表文件中的用户帐号 | max_clients=0 | 最多允许多少个客户端同时连接(0为无限制) | max_per_ip=0 | 对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制)。 | tcp_wrappers=YES | 是否启用TCP_Wrappers主机访问控制(TCP Wrappers的应用将在后续课程中讲解) |
|