FTP:
文件传输协议
登录方式:
匿名
anonymous
真实账号
real
虚拟账号
guest
监听端口:主动模式
21(udp) 20(tcp)
模式:
主动模式
服务器端连接客户端
打开
20
端口提供
client
数据下载
被动模式
客户端来连接服务端
打开大于
1023
的随机端口等待
client
数据下载
服务端发送
(112,3)[
端口号为:
112*256+3]
给客户端
被动主动模式的选择:
服务端允许被动连接,将取决于客户端,
主动模式服务端发送:
port
命令实现主动
被动模式服务端发送:
pasv
命令实现被动
服务器组件:
windows
:
Serv-U IIS Filexilla
linux
:
vsftpd(very secure ftp)
轻量级的
proftpd
功能强大
磁碟配额
web
界面
在线注册
pureftp
wu-ftpd
出现的很早
vsftpd
配置文件:
/etc/vsftpd/vsftpd.conf
权限:
600
/etc/vsftpd/ftpusers
不允许本机登陆的用户
权限
600
/etc/pam.d/vstpd
认证文件
端口:
21/tcp(ftp) 20/tcp (ftp-data)<---
主动模式
服务脚本:
/etc/init.d/vsftpd
守护进程:
/usr/sbin/vsftpd
vfstpd
接受
tcpwrapper
的控制
和
iptables
的控制(加载
ip_namt_ftp ip_conntrack_ftp
)
vsftpd
的根目录:
/var/ftp/
ftp
配置:
关闭
selinux
yum install vsftpd
service vsftpd restart
chkconfig vsftpd on
vim /etc/vsftpd/vsftpd.conf
格式很严格
anonymous_enable=YES
允许匿名登陆
NO
不允许
匿名登录时是以安装自动生成的
ftp
用户登陆的
匿名登陆被映射成
ftp
用户
local_enable=YES
允许本地系统用户登录
lftp -u terra 192.168.0.124
登录的为自己的家目录
write_enable=YES
允许本地用户有上传文件
匿名用户不能上传文件
local_umask=022
本地用户上传文件掩码为
022
默认
077
anon_upload_enable=YES
允许匿名用户上传文件
不能创建目录
允许匿名上传还要设置:
chown ftp:ftp /var/ftp/incoming(
创建
)
或者做
acl
:
setfacl -m u:ftp:rwx /var/ftp/incoming
在
incoming
中上传
anon_mkdir_write_enable=YES
允许匿名用户创建目录
不能删除
anon_other_write_enable=YES
设置后就可以删除了
dirmessage_enable=YES
打开欢迎信息目录
设定打开具体目录显示信息
message_file=.message
该文件可以在设定目录下创建
xferlog_enable=YES
打开传输文件
与下面连用
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
使用标准的日志类型
log_ftp_protocol=YES
登录进
ftp
会记录用户的执行的命令
但是
xferlog_std_format=NO
chroot_local_user=YES
禁锢所有用户在自己家目录下
禁锢具体用户:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
在
chroot_list
中添加用户名即可
匿名用户上传文件的属主属组改为
root
不是
ftp
:
chown_uploads=YES
chown_username=root
ftpd_banner=
定义登录
ftp
欢迎信息
max_clients=
定义连接
ftp
的做大用户数
max_per_ip=2
每个用户同时打开的并发下载数
anon_max_rate=10240
匿名用户最大传输速率
10kbps
单位字节
local_max_rate=
本地用户最大传输速率
在打开
selinux
时允许上传文件:
设定
bool
值:
getsebool -a | grep ftp
setsebool -P allow_ftp_anon_write 1
打开匿名上传权限
setsebool -P ftp_home_dir 1
打开家目录
vsftpd
的虚拟用户:
基于文件的
基于
mysql
的
vsftp
的
user_list
文件:文件中定义的用户允许登陆
userlist_enable=YES
userlist_deny=NO
允许
userlist
中列表的用户登陆
YES
不在列表的用户可以在的拒绝
ftp
的
ssl
数据加密认证:
ftps
tcpdump -i eth0 -A
抓包查看
坐自签的证书
mkdir /etc/vsftpd/ssl
cd /etc/vftpd/ssl
openssl genrsa 1024 > ftp_key.pem
openssl req -new -key ftp_key.pem -x509 -out ftp_cert.pem -days 3600
chmod 600 ./*
vim /etc/vsftpd/vsftpd.conf
添加
ssl_enable=YES
ssl_tlsvl=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/ftp_cert.pem
rsa_private_key_file=/etc/vsftpd/ssl/ftp_key.pem
service vsftpd restart
测试:物理机安装
filezilla
或者
flashfxp
测试