VSFTP服务器学习笔记-阿里云开发者社区

开发者社区> 安全> 正文

VSFTP服务器学习笔记

简介:
FTP服务器传输模式:
主动模式:由服务器主动链接客户机建立数据链路
被动模式:FTP服务器等待客户机建立数据链路

FTP使用的21端口用于与客户机建立命令链路,在主动模式下服务器使用20端口向客户机建立数据链路

21命令端口,20数据端口
说一下主动模式:
FTP客户机由大于1024的N端口(比如1026)向FTP服务器的21端口发送请求建立命令链路,服务器21端口响应,然后服务器的20端口主动向服务器的N+1端口(比如1027)发送数据,然后客户端相应。

被动模式的链接:
FTP服务器会通过已经建立的数据链路通知客户机自己已经打开了大于1024的端口M,用于建立数据链路,当需要传输数据时,FTP客户机会通过N+1端口向FTP服务器的M端口请求建立数据链路,这样20端口就用不上了。

所以我们对安全而言,要采用主动模式。

ftp命令:

get命令用来下载文件,put用来上传文件
mget和mput用于一次下载或上传多个文件,支持同配符
bye命令退出ftp命令

pwd是服务器的当前目录
lcd是显示客户机的当前目录

lcd
lcd c:\转到c:



vsftpd.conf配置文件:/etc/vsftpd/vsftpd.conf

vsftpd.conf缺省配置:
anonymous_enable=YES :允许匿名用户登录
local_enable=YES :允许本地用户登录
write_enable=YES :可以上传,就一定能上传嘛,不能,得看目录的权限
local_umask=022 :上传文件的默认mask
dirmessage_enable=YES :进入目录会有一段提示
xferlog_enable=YES :服务器启用上传和下载日志功能
connect_from_port_20=YES :20端口打开,就意味着启用主动模式
xferlog_std_format=YES :用标准的格式写日志
pam_service_name=vsftpd :认证配置文件是vsftpd
userlist_enable=YES :userlist_enable设置为yes时ftp服务器将检查userlist_file设置文件中指定的用户是否可以访问vsftpd服务器
listen=YES :监控,工作在独立模式下
tcp_wrappers=YES :支持tcpwrappers

/etc/vsftpd.ftpusers用于保存不允许登录FTP的本地帐号

/etc/vsftpd.user_list
    设置禁止vsftpd.user_list文件中的用户登录
    userlist_enable=YES
    userlist_deny=YES
    设置只允许vsftpd.user_list文件中的用户登录
    userlist_enable=YES
    userlist_deny=NO
黑名单优先级高于白名单

anonymous和ftp用户都是登录到服务器上的/var/ftp目录中

在vsftpd.conf文件中添加设置项:chroot_local_user=YES
重启vsftpd服务 service vsftpd restart
这样就使得本地用户登录FTP服务器后,宿主目录将座位根目录

假如你要匿名用户上传和建目录开启这两项:
anon_upload_enable=YES
anon_mkdir_enable=YES

虚拟用户
使用独立的文件保存用户帐号

步骤:
1.建立虚拟用户口令库文件
2.生成vsftpd的认证文件  (/etc/pam.d/vsftpd/)
3.建立虚拟用户所需的PAM配置文件
4.建立虚拟用户所需访问的目录并设置相应权限
5.设置vsftpd.conf配置文件

建立虚拟用户口令库文件
口令库文件奇数行为用户名,偶数行为口令

#cat logins.txt
staid
guoli0813
shasha
guoli0813

生成vsftpd的认证文件
使用db_load命令生成认证文件
db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
设置认证文件只对用户可读可写
chmod 600 /etc/vsftpd/vsftpd_login.db
建立虚拟用户所需的PAM配置文件
手工建立vsftpd.vu文件
# cat /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so
db=/etc/vsftpd/vsftpd_login

建立虚拟用户及要访问的目录并设置相应的权限
建立所有FTP虚拟用户账户使用的系统用户帐号,并设置该帐号宿主目录的权限
useradd -d /home/ftpsite virtual
chmod 700 /home/ftpsite/

设置vsftpd.conf配置文件
在配置文件中添加虚拟用户的配置内容
guest_enable=YES  #支持虚拟用户
guest_username=virtual  #映射为virtual
pam_service_name=vsftpd.vu #修改为vsftpd.vu为验证文件
重启vsftpd服务 service vsftpd restart

虚拟用户建立完毕,原来的真实用户就不能登录了

对虚拟用户设置不同的权限

设置主配置文件
在vsftpd.conf文件中添加用户配置文件目录设置
user_config_dir=/etc/vsftpd_user_conf
建立用户配置文件目录
使用mkdir命令建立用户配置文件目录
mkdir /etc/vsftpd_user_conf

为虚拟用户创建单独的配置文件
用户配置文件名称和用户名相同
/etc/vsftpd_user_conf/staid
/etc/vsftpd_user_conf/shasha

每个FTP虚拟用户都可一独立设置其权限
anon_world_readable_only=NO  #只能读而不能干别的
anon_upload_enable=YES
anon_mkdir_write_enable=YES #可以上传文件
anon_other_write_enable=YES #可以删除和修改文件

配置vsftpd服务器中的资源限制
vsftpd服务器中的资源使用可以进行限制
max_clients=100 #允许最多100个客户端
max_per_ip=5 #每个用户只能开启5个线程下载
local_max_rate=500000 #本地用户下载速度500k
anon_max_rate=200000 #匿名用户下载速度200k

配置基于IP的虚拟ftp服务器(这个不写了)



本文转自guoli0813 51CTO博客,原文链接:http://blog.51cto.com/guoli0813/361181,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

云安全开发者的大本营

其他文章