一、ftp端口:21控制端口,20数据端口
二、两种工作模式:
1.主动模式:客户端向服务器端的21端口发送请求,服务器接受请求,建立控制通道需要数据传输的时候,客户端在控制通道上告诉服务器:“我打开了XXXX端口,你过来连接我吧”,服务器就从本地的20端口向客户端的XXXX端口发送数据
2.被动模式:客户端像服务器的21端口发送请求,服务器接受连接建立通道。需要传输数据的时候,服务器在控制通道上告诉客户端:“我打开了XXXX端口,你过来连吧”,客户端像服务器的XX端口发送请求,建立连接(此处XXXX端口大于1024)
三、安装
1.vsftpd服务器的安装:
1)非源码安装:yum install vsftpd -y
2)修改配置文件(/etc/vsftpd/vsftp.conf):
anonymous_enable=NO # 允许匿名登录
local_enable=YES # 允许本地用户登录
write_enable=YES # 本地用户的写权限
local_umask=022 # 使用FTP的本地文件权限,默认为077, # 一般设置为022 anon_mkdir_write_enable=YES # 如果允许匿名登录,是否允许匿名建立文件夹并在文件夹内上传文件
anon_other_write_enable=YES # 如果允许匿名登录,匿名帐号可以有删除的权限
dirmessage_enable=YES # 切换目录时,是否显示目录下.message的内容
xferlog_enable=YES # 激活上传/下载的日志
connect_from_port_20=YES #启用FTP数据端口的数据连接
xferlog_file=/var/log/vsftp/vsftpd.log #日志文件路径设置
xferlog_std_format=YES # 使用标准的日志格式
data_connection_timeout=600 # 数据连接空闲超时,单位秒
ascii_upload_enable=YES #启用上传的ASCII传输方式
ascii_download_enable=YES #启用下载的ASCII传输方式
chroot_list_enable=YES #调用限制在家目录的用户名单
chroot_list_file=/etc/vsftpd/chroot_list #限制在家目录的用户名单所在路径
listen=YES #以独立的FTP服务运行
pam_service_name=vsftpd #验证方式
userlist_enable=YES # 用userlist来限制用户访问
tcp_wrappers=YES #实现主机访问控制,顺序/etc/hosts.allow----->/etc/hosts.deny
guest_enable=YES #这个是开启虚拟用户
guest_username=ftp #虚拟用户所映射的本地用户
user_config_dir=/etc/vsftpd/vuser_conf #虚拟用户的配置文件
pasv_enable=yes #是否开户被动模式
pasv_min_port=6000 #被动模式最小端口
pasv_max_port=7000 #被动模式最大端口
pasv_promiscuous=YES #此选项激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO
3)设置相关虚拟用户的配置:
a.先建立虚拟用户名单文件
touch /etc/vsftpd/vuser_passwd.txt
vuser_passwd.txt内容要求:
web1
123456 -->(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留,没必要是/etc/passwd 中的用户)
b.生成虚拟用户数据文件:
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
##设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
c.在/etc/pam.d/vsftpd的文件头部加入以下信息:
修改前先备份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak
vi /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
d.关于虚拟用户映射用户的建立
guest_username=ftp
#虚拟用户所映射的本地用户,此处就不用自行设置用户了,
#如果给为其他的用户名,需要建立用户(/etc/passwd------>useradd)
e. 建立虚拟用户个人vsftpd的配置文件:
mkdir /etc/vsftpd/vuser_conf
cd /etc/vsftpd/vuser_conf
vim web1 (此处文件名必须和vuser_passwd.txt的用户名相同)
内容如下:
local_root=上传文件的目录
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
4.修改防火墙配置,开启端口20和21端口:
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
5.重新启动vsftpd服务:
service vsftpd start