linux下FTP服务器的搭建
安装所需的软件包vsftpd-2.0.5-16.el5.i386.rpm
用yum来安装yum install vsftpd -y
FTP模式
1.主动模式
在FTP的主动模式下FTP客户端开启一个随机选择的TCP端口连接FTP服务器的21端口讲求建立连接。当完成Three-Way Handshake 后,连接就成功建立,但这仅是控制连接的建立。当两端传送数据的时候,客户端通过控制连接用一个PORT COMMAND 告诉服务器,客户端可以用另一个TCP端口做数据通道,然后服务器用20端口和刚才客户端所通知的TCP端口建立数据连接,这时连接方向是从服务器到客户端的,TCP分组中会有一个SYN flag,然后客户端会返回一个带ACK flag 的确认分组,并完成另一次的Three-Way Handshake 过程。这时候数据连接才能成功建立,开始数据传送。
2被动模式
在FTP的被动模式下,FTP客户端开启一个随机选择的TCP端口连接FTP服务器的21端口请求建立连接,完成控制连接的建立。当两端需要传送数据的时候,客户端通过命令通道发送一个PASV command给服务器要求进入被动传输模式,然后服务器随机选择一处TCP端口,并用控制连接告诉客户端,客户端用另一个TCP 端口连接刚才服务器指定的TCP端口来建立数据通道,此时分组中带有SYN flag.服务器确认后回送一个ACK分组,并完成所有握手、成功建立数据通道,开始数据传送。
服务器的启动
service vsftpd start
service vsftpd stop
service vsftpd status
service vsftpd restart
service vsftpd reload
service vsftpd start
2.VSFTPD服务自动加载
chkconfig vsftpd on
chkconfig vsftpd off
chkconfig vsftpd --level 35 on
chkcinfig vsftpd --level 35 off
3.SELinux配置
在vsftpd服务器中并不是所有的操作都会受到SELinux 的影响,下面列出的是所有与vsftpd服务器有关的SELinux配置:
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_anon_write on
chcon -R -t /var/ftp/ #允许匿名用户上传文件
4.行为控制
anonymous_enable=YES|NO:是否允许使用匿名账户登录
allow_anon_ssl=YES|NO:是否允许匿名账户通过SSL连接
local_enable=YES|NO:是否允许本地用户登录
write_enable=YES|NO:是否允许用户上传文件到FTP服务器,该参数只对非匿名用户有效
anon_upload_enable=YES|NO:是否允许匿名用户上传文件到FTP服务器
anon_mkdir_write_enable=YES|NO:是否允许匿名用户执行创建目录这外的写作(如删除、重命名)
download_enable=YES|NO:是否允许用户下载文件
local_umask:授权用户上传文件的umask,比如local_umask=022
anon_umask:匿名用户上传文件的umask,比如anon_uamsk=073
chown_uploads=YES、chown_username=whoever:修改匿名用户上传文件的所有者,当chown_uploads=YES时,可通过chown_username指定一个系统用户,这样用户
上传的所有文件所有者都被自动改为该系统用户了。当然前提是anonymous_enable=YES、anon_upload_enable=YES
ls_recure_enable=YES|NO:是否允许用户在登录到FTP服务器后使用ls -R 等比较占用系统资源的命令
dirlist_enable=YES|NO:是否允许使用dir这类的列目录命令
userlist_file:指定被允许或禁止登录的用户
userlist_deny=YES|NO:该参数决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器
chroot_local_user=YES|NO:不否允许所有用户登录到FTP服务器离开自己的家目录
chroot_list_file:指定不能离开家目录的用户,如chroot_list_file=/etc/vsftpd/chroot_list,可将用户名一个一行写在该文件里,只有当
chroot_list_enable=YES时,该参数才有效
anon_max_rate:匿名用户的最大传输速度(单位:Byte/s)
local_max_rate:授权用户的最大传输速度(单位:Byte/s)
async_abor_enable=YES|NO:是否允许客户端使用sync等命令
pam_service_name=vsftp:指定vsftp使用PAM模块的配置文件,默认的vsftpd文件在/etc/pam.d目录下,该文件的默认内容主要指定使用系统用户认证来源
5.杂项配置
listen_address:指定vsftpd侦听的IP场地,当vsftpd有多个ip地址时,可通过该参数让vsftpd只接受某个IP地址侦听到的FTP请求
max_clients:vsftpd允许的最大连接数,比如max_clients=3000
max_per_ip:vsftpd允许相同IP的最大连接数,比如max_per_ip=10
use_localtime=YES|NO:是否在目录列表时使用本地时间
ftp_banner:指定登录到FTP服务器时显示的欢迎信息
dirmessage_enable=YES|NO:用户在FTP服务器切换目录时是否显示欢迎信息,当dirmessage_enable=YES时,可以在每个目录建立一个名为.message的文件,在里
面保存欢迎信息
banner_fail:指定当连接失败时显示的信息,比如banner_fail=/etc/vsftpd/errifo,当有用户连接失败后,会显示errifo文件中的内容
xferlog_enable=YES|NO:不否在用户上传/下载文件时记录日志
nopriv_user:指定vsftpd服务器的运行账户,默认为ftp
connect_from_port_20=YES|NO:是否使用20端口传输数据
pasv_min_port、pasv_max_port:指定被动模式时,客户端的数据连接端口范围,如pasv_min_port=50000,pasv_max_port=70000
xferlog_file:指定使用的日志文件
xferlog_std_format=YES|NO:是否使用标准日志文件来记录日志
lister_ipv6=YES|NO:开启IPV6支持
tcp_wrappers=YES|NO:是否允许tcp_wrappers管理
6.VSFTPD实现身份认证(ssl)
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_enable=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
rsa_cert_file=/etc/vsftpd/certs/ftp.crt
rsa_private_key_file=/etc/vsftpd/certs/ftp.key