码迷,mamicode.com
首页 > 其他好文 > 详细

FTP服务

时间:2016-08-22 16:26:14      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:服务

ftp服务器工作原理
主动模式:
    客户端通过自己的一个随机端口和服务器的21号端口建立连接-->服务器通过21号端口确认和客户端建立命令连接-->服务器通过20号端口主动和客户机建立数据连接-->客户端通过被动打开的数据端口进行确认连接
被动模式:
    客户端通过自己的一个随机端口和服务器的21号端口建立连接-->服务器通过21号端口确认和客户端建立命令连接-->客户端要求服务器打开一个数据端口,服务器打开一个随机的数据端口后,会告诉客户端-->客户端通过自己打开的数据端口和服务器的数据端口建立数据连接

在有防火墙的模式下,对被动模式(端口不固定)有点影响

ftp的匿名用户默认登录到服务器的/var/ftp目录下
匿名用户登录的目录权限不能设置为777
linux客户端工具默认使用被动模工作

yum install vsftpd
vim /etc/vsftpd
vsftpd服务的配置( sed "/^$/d;/^#/d" vsftpd.conf 查看配置)
/etc/vsftpd/ftpusers --- 明确拒绝登录用户,不管user_list文件对用户允许
/etc/vsftpd/user_list --- 看vsftpd.conf对该文件里面的用户NO或YES
/etc/vsftpd/vsftpd.conf --- 主配置文件
anonymous_enable=YES --- 允许匿名用户登录
local_enable=YES --- 允许本地用户登录
write_enable=YES --- 针对本地用户可写
local_umask=022 --- 针对本地用户的umask
anon_upload_enable=YES --- 允许匿名用户上传
anon_umask=0022 --- 针对匿名用户的umask
anon_mkdir_write_enable=YES --- 允许匿名用户新建文件
anon_other_write_enable=YES --- 允许匿名用户删除文件
dirmessage_enable=YES --- 显示切换目录后的信息
xferlog_enable=YES --- 启用上传、下载日志
connect_from_port_20=YES --- 允许主动模式下20端口开放
chown_uploads=YES --- 改变上传文件的所有者
chown_username=whoever --- 上传文件所有者的名称

xferlog_file=/var/log/xferlog --- 日志文件的路径
xferlog_std_format=YES --- 以标准的方式记录日志
idle_session_timeout=600 --- 会话保持的超时时间
data_connection_timeout=120 --- 数据连接的超时时间
ascii_upload_enable=YES --- 允许ascii码上传
ftp_banner=Welcome  ---  显示登录欢迎信息
deny_email_enable=YES --- 拒绝邮件登录
banned_email_file=/etc/vsftpd/banned_emails --- 收录拒绝的文件
local_root=/var/ftp --- 限制本地用户的登录目录
chroot_local_user=YES --- 不允许本地用户登录之后,切换出家目录
chroot_list_enable=YES --- 指定那些用户不可以切换出家目录的文件
chroot_list_file=/etc/vsftpd/chroot_list --- 指定那些用户不可以切换出家目录
listen=YES --- 允许独立监听

anon_max_rate=10240 --- 设置匿名用户的最大传输速率,单位为字节
local_max_rate=10240 --- 指定本地用户的上传下载速率

userlist_enable=YES --- 启用user_list文件
userlist_deny=YES --- 决绝user_list文件里面的用户登录

max_clients=10 --- 最大同时能登录的客户端数量
max_login_fails=3 --- 最大登录失败次数
max_per_ip=5 --- 每个ip最大的连接数
pasv_max_port=20000 --- 被动模式最大数据端口
pasv_min_port=5000 --- 被动模式最小数据端口

练习:
   1、在系统中添加user01-user05五个用户
   2、在/var/ftp/data目录中允许匿名用户进行上传下载操作,但不能删除文件,匿名用户上传或创建的文件归root用户所有,
      匿名用户的下载速率设置为最大1MB
   3、禁止user01和user05登录ftp服务器,禁止user_list文件中的所有用户登录
   4、将本地用户的登录目录设置在/var/ftp/local目录中且不能上传文件
   5、设置本地用户的传输速率为最大5MB
   6、启用日志并使用标准格式记录日志


错误集:
421 Service not available
内网ftp此server则没有问题
后检查发现,原来是
/etc/hosts.allow中只允许内网IP进来,外部则NO
后改更改为
vsftpd: All:allow
再FTP,一切正常

解决vsftp错误500 OOPS: cannot change directory:/home/****
打开/etc/selinux/config
将selinux=enforcing或permissive改成disabled。
记得要重新启动服务器!
当然还要确定以下问题:
1, 用户是否被 vsftpd 限制登录, 比如用户名在 /etc/ftpusers 中,并被阻止登录了
2.相关文件夹的权限是否正确.
    由于/home分区的原因,而造成“主目录在/home分区的帐号”都不能登录。

ls: 登录失败: 500 OOPS: vsftpd: refusing to run with writable anonymous root
修改登录用户根目录的权限

put: Access failed: 553 Could not create file.

vsftpd的虚拟用户创建和使用(虚拟用户的权限是映射的本地用户的权限)
    1.编辑虚拟用户名和密码的文本文件
    vim /etc/vsftpd/virt_user.txt
    user01 --- 用户名
    123123 --- 密码
    2.将文本文件生成数据库文件
    yum install db4-utils
    db_load -T -t hash -f /etc/vsftpd/virt_user.txt
virt_user.db
    3.创建虚拟用户映射的本地用户名
    useradd -s /sbin/nologin virtftp
    chmod 755 /home/virtftp
    4.创建PAM认证(PAM文件从上到下读,只针对本地用户和虚拟用户,不针对匿名用户)
        auth(认证)  sufficient(充分需求)
        auth(认证)  required(需求)
    vim /etc/pam.d/vsftpd(如果只支持虚拟用户认证的话,则options可以写为required,如果还需要支持本地用户,则options需要写为sufficient)
    auth    required    /lib64/security/pam_userdb.so db=/etc/vsftpd/virt_user(不要扩展名)
    account    required    /lib64/security/pam_userdb.so db=/etc/vsftpd/virt_user(不要扩展名)
    5.在主配置文件添加对虚拟用户的支持
    guest_enable=YES
    guest_username=virtftp
    pam_service_name=vsftpd
    6.设置虚拟用户的单独配置信息
    vim /etc/vsftpd/vsftpd.conf
    user_config_dir=/etc/vsftpd/virt_dir

    vim /etc/vsftpd/virt_dir/vuser01(文件名和用户名一致)
    anon_max_rate=1000000
    anon_mkdir_write_enable=YES
    anon_other_enable=YES
    anon_upload_enable=YES

实验:按如下要求搭建公司ftp服务器
    1、允许匿名用户登录服务器并下载文件,下载速度设置为最高2MB/s
    2、除了虚拟用户映射的本地用户外不允许其它本地用户登录ftp服务器
    3、在服务器添加虚拟用户vuser01、vuser02、vuser03,密码自己设置:
      其中vuser01用户的下载速度最高为3MB/s,vuser02为4MB/s,vuser03为5MB/s;
      vuser01可以进行文件上传,但不能进行其它操作,vuser02可以上传和创建目录,vuser03可以进行上传、创建文件和删除文件;
      所有虚拟用户只能在/myserver/ftproot目录下活动;
    4、设置服务器的最大并发客户数为10,最大登录错误次数为3,每个ip地址最多只能建立2个连接
    5、设置防火墙只允许进行ftp访问和ping测试,不能访问其它任何服务
      # iptables -F
      # iptables -X
      # iptables -Z
      # iptables -P FORWARD DROP
      # iptables -A FORWARD -p icmp -j ACCEPT
      # iptables -A FORWARD -d 10.0.0.254 -p tcp --dport 21 -j ACCEPT
      # iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
      # modprobe nf_conntrack_ftp
    
51cto论坛运维试题贴:http://bbs.51cto.com/thread-1030445-1.html

ftp常见错误总结
1.SELinux 和 iptables 防火墙没有关闭
2.虚拟用户对应的本地用户不能出错(用户名不能写错,虚拟用户名和密码文件)
3.32位和64位系统的区别(主要是PAM文件的lib验证)
4.虚拟用户不能登录的问题(注意required(全部都要匹配)和sufficient(当前匹配)的问题)

本文出自 “天晴了要下雨” 博客,请务必保留此出处http://8776055.blog.51cto.com/8766055/1841035

FTP服务

标签:服务

原文地址:http://8776055.blog.51cto.com/8766055/1841035

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!