FTP工作的时候有两种模式:
主动模式:PORT ;被动模式:PASV
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
主动模式下:
服务控制端口21
数据传输端口20
需要安装的包为vsftpd
服务名为:vsftpd (/usr/sbin/vsftpd)
脚本在:/etc/rc.d/init.d/vsftpd
配置文件有:
/etc/vsftpd/vsftpd.conf (600,root:root)
/etc/vsftpd/ftpusers (600,root:root)
/etc/pam.d/vsftpd (644,root;root)
相关联的服务有;tcp_wrappers,ip_conntrack_ftp,ip_nat_ftp
#netstat -tnlp | grep 21 查看端口
banner_file=filename (指定文件名,文件中的内容将会被作为欢迎信息显示出来,它会覆盖ftpd_banner中的欢迎信息)
ftpd_banner=FTP server ready (定义欢迎信息)
每个目录也可以有欢迎信息
dirmessage_enable=YES
message_file=.message (显示.message文件中的欢迎信息)
vsftpd的日志功能:
xferlog_enable=YES (激活上传和下传的日志功能,如果启用,将会维护一个日志文件,用户详细记录上载和下载,默认情况下,这个文件是/var/log/vsftpd.log,但也可以通过配置文件中的vsftpd_log_file选项来指定)
xferlog_std_format=YES (定义记录日志的格式为标准格式)
xferlog_file=/var/log/xferlog (将默认记录日志的位置)
log_ftp_protocol=YES (所有的FTP请求和应带都会被记录,此选项对调试很有用默认为YES,使用它的时候要关闭xferlog_std_format的标准日志格式)
xferlog_std_format=NO
dual_log_enable(如果启用,将生成两个相似的日志文件,默认在/var/log/xferlog和/var/log/vsftpd.log目录下,前者是wu-ftpd类型的传输日志,可以用于标准工具分析,后者是vsftpd自己类型的日志)
chroot_local_user=YES,锁定所有用户在自己的家目录。
(默认是不允许用户切换家目录的)
本地用户默认是有读写权限的
write_enable=NO
local_enable=NO (这样修改后,本地用户就没有读写权限了)
chroot_list_enable=YES (表示启动:锁定某些用户在自己家目录下)
chroot_list_file=/etc/vsftpd/chroot_list
(定义文件中用户列表,谁在就锁住谁,注意:一行只能写一个用户名)
创建一个目录incoming,让用户可以上传文件的过程:
让用户允许在ftp目录下上传文件,需要修改本地目录的属组,修改为ftp组,因为Ftp目录是属于root用户root组的。
匿名用户上传的文件属主属组属于默认属于ftp.,如果想改变,可以使用
chown_username=root(这样匿名用户上传到文件的属主属组都为root了)
/var/ftp/incoming (这个上传目录的权限为730,属主为root,属组为ftp)
修改配置文件:vsftpd.conf
anon_upload_enable=YES
anon_umask=077
chown_uploads=YES
chown_username=root
max_clients 设置服务器最大接受的并发连接用户数
max_per_ip 每个ip最多连接的进程数
常用的匿名用户FTP配置项
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 限制最大传输速率,单位为字节
常用的本地用户FTP配置项
local_enable=YES 是否启用本地系统用户
local_umask=022 本地用户所上传文件的权限掩码
local_root=/var/ftp 设置本地用户的FTP根目录
chroot_local_user=YES 是否将用户禁锢在主目录上
local_max_rate=0 限制最大传输速率(字节/秒)
vsftpd 的日志记录 vsftpd.log 里显示的文件修改时间与实际的系统时间不一致,一般都差了几个小时。这是因为默认情况下, vsftpd 使用的是 GMT 标准时间,而不是 Local Time 。
修改vsftpd 的配置文件 vsftpd.conf(让vsftpd使用localtime即可)
#vim /etc/vsftpd/vsftpd.conf
在配置文件里加入一行:
use_localtime=YES
保存之后重启 vsftpd 即可。
(注意:如果是用 xinetd 的方式来启动,要注意把配置文件中的listen参数值改为NO,否则 vsftpd 重启之后问题依旧。)
阅读(1312) | 评论(0) | 转发(0) |