一、FTP
1、FTP(File Transfer Protocol)文件传输协议
主动模式:服务器端发起连接
20
port控制命令
被动模式:服务器端等待,客户端发起请求(>1023) 21、20
pasv控制命令
2、软件
Windows:serv-U、IIS、Filezilla、Flashfxp
Linux:Filezilla、Vsftpd(very secure)、wu-ftpd(古老,安全性不高,功能强)、proftpd(功能强大)
pureftp
3、vsftpd
进程vsftpd(/usr/sbin/vsftpd)
脚本/etc/init.d/vsftpd
配置/etc/vsftpd/vsftpd.conf
端口21/tcp(ftp),20/tcp(ftp-data)
/etc/vsftpd/vsftpd.conf
600,root,root
/etc/vsftpd/ftpusers 此些用户都不能登陆ftp
600,root,root
/etc/pam.d/vsftpd
600,root,root
注:
接受tcp_wrappers,ip_conntrack_ftp,ip_nat_ftp控制,默认允许匿名登录,
登录后即为ftp家目录/var/ftp(使用finger ftp查看),
任何本地用户登录也即访问自己的家目录.(如lftp -u student 192.168.0.45)
4、/etc/vsftpd/vsftpd.conf
1)write_enable
是否允许本地用户上传文件
local_umask
本地用户上传文件时权限掩码 如:-022
2)允许匿名用户上传
anon_upload_enable=YES
打开匿名上传文件
anon_mkdir_write_enable=YES
打开创建目录权限
anon_other_write_enable=YES
打开其他权限
chown -R ftp:ftp /var/ftp/pub 或 setfacl -m u:ftp:rwx /var/ftp/pub
selinux开启后:
getsebool -a | grep ftp
setsebool -P allow_ftpd_anon_write 1
setsebool -P ftp_home_dir 1
注:
注意根目录/var/ftp的权限,不能将其改为777,否则vsftpd不允许启动
3)dirmessage_enable=YES
显示登录提示信息
message_file=.message
xferlog_enable=YES
打开文件传输日志
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=
传输日志是否使用标准日志 YES时,为wu-ftpd格式。
log_ftp_protocol=YES
还能记录用户使用哪些命令。启用此项时,必须xferlog_std_format=NO
4)
chroot_local_user=YES
把所有用户都锁在其家目录中。
-----
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
禁锢的用户列表
5)匿名上传之后把文件属主属组改为另外的
chown_upload=YES
chown_username=root
6)
max_clients
max_per_ip
anon_max_rate
local_max_rate
7)是否启用/etc/user_list
userlist_enable=YES启用/etc/user_list
userlist_deny=YES 禁止user_list中用户登录
userlist_deny=NO 仅允许user_list中用户登录
5、虚拟用户
file
mysql
user_config_dir=/etc/vsftpd/users
二、FTP+SSL
1、签发证书
2、添加
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd/ssl/vsftpd_cert.pem
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd_key.pem
注:可使用tcpdump -i eth0 -A 抓包命令,也可使用抓包工具,如wireshark