CentOS7安装配置vsftpd服务器

2018年7月28日14:42:38 发表评论

1.vsftpd简介

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等

2.vsftpd安装

  1. yum  install vsftpd -y  #使用yum源安装方式,也可以使用vsftpd源码包编译安装。
  2. rpm -ql vsftpd|more  #查询vsftpd安装路径
  3. ps -ef | grep vsftpd #查看vsftpd进程

3.修改vsftpd配置

  1. sed -i 's@listen=NO@listen=YES@' /etc/vsftpd/vsftpd.conf  #使用ipv4连接vsftpd
  2. sed -i 's@listen_ipv6=YES@listen_ipv6=NO@' /etc/vsftpd/vsftpd.conf  #禁止ipv6连接
  3. 注意#ipv4和ipv6配置不能共存哦!

4.启动vsftpd

  1. systemctl restart vsftpd

5.添加vsftpd启动项

  1. systemctl enable vsftpd

6.关闭selinux

  1. sed -i 's@SELINUX=enforcing@SELINUX=disabled@' /etc/selinux/config  #注意替换完成后需要重启服务器
  2. setenforce 0 #临时关闭selinux
  3. getenforce #查看selinux状态

7.关闭firewalld

  1. systemctl stop firewalld  #停止firewalld服务
  2. systemctl mask firewalld  #注销firewalld服务
  3. systemctl disable firewalld  #关闭firewalld启动项

8.启动iptables服务

  1. iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
  2. iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCPET
  3. iptables -save >> /etc/iptables.up.rules

9.匿名访问vsftpd

  1. yum install ftp -y #安装ftp客户端
  2. ftp localhost #连接vsftpd服务端
  3. 输入用户名anonymous和用户ftp 密码为空

10.ftp操作参数选项

-d:详细显示指令执行过程,便于排错或分析程序执行的情况;
-i:关闭互动模式,不询问任何问题;
-g:关闭本地主机文件名称支持特殊字符的扩充特性;
-n:不使用自动登录;
-v:显示指令执行过程。
TP>ascii: 设定以ASCII方式传送文件(缺省值)
FTP>bell: 每完成一次文件传送,报警提示.
FTP>binary: 设定以二进制方式传送文件.
FTP>bye: 终止主机FTP进程,并退出FTP管理方式.
FTP>case: 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母.
FTP>cd: 同UNIX的CD命令.
FTP>cdup: 返回上一级目录.
FTP>chmod: 改变远端主机的文件权限.
FTP>close: 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除.
FTP>delete: 删除远端主机中的文件.
FTP>dir [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件.
FTP>get [remote-file] [local-file] 从远端主机中传送至本地主机中.
FTP>help [command] 输出命令的解释.
FTP>lcd: 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录.
FTP>ls [remote-directory] [local-file] 同DIR.
FTP>macdef: 定义宏命令.
FTP>mdelete [remote-files] 删除一批文件.
FTP>mget [remote-files] 从远端主机接收一批文件至本地主机.
FTP>mkdir directory-name 在远端主机中建立目录.
FTP>mput local-files 将本地主机中一批文件传送至远端主机.
FTP>open host [port] 重新建立一个新的连接.
FTP>prompt: 交互提示模式.
FTP>put local-file [remote-file] 将本地一个文件传送至远端主机中.
FTP>pwd: 列出当前远端主机目录.
FTP>quit: 同BYE.
FTP>recv remote-file [local-file] 同GET.
FTP>rename [from] [to] 改变远端主机中的文件名.
FTP>rmdir directory-name 删除远端主机中的目录.
FTP>send local-file [remote-file] 同PUT.
FTP>status: 显示当前FTP的状态.
FTP>system: 显示远端主机系统类型.
FTP>user user-name password [account] 重新以别的用户名登录远端主机.
FTP>? [command]: 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。
FTP>! 从 ftp 子系统退出到外壳。

11.修改vsftpd配置

默认情况使用windows客户端访问vsftpd服务器。只能查看不能新建和修改文件。所以,配置以下参数

  1. anon_upload_enable=YES   #允许匿名用户上传
  2. anon_mkdir_write_enable=YES  #允许匿名用户写入
  3. anon_other_write_enable=YES  #允许匿名其他用户写入
  4. -------------------------------------------分割线-----------------------------------------
  5. echo -e "anon_upload_enable=YES\nanon_mkdir_write_enable=YES\nanon_other_write_enable=YES\n" >> /etc/vsftpd/vsftpd.conf #使用正则表达式追加文件
  6. systemctl restart vsftpd #重启vsftpd服务
  7. -------------------------------------------分割线--------------------------------------
  8. cat /etc/vsftpd/vsftpd.conf | grep -v '#' 查看vsftpd.conf配置
  9. ------------------------------------------vsftpd.conf配置参数详解-------------------------
  10. anonymous_enable=YES  #开启匿名用户访问
  11. local_enable=YES             #本地系统用户访问
  12. write_enable=YES             #本地系统用户写入
  13. local_umask=022              #本地用户创建目录及文件默认权限掩码
  14. dirmessage_enable=YES   #打印目录显示信息
  15. xferlog_enable=YES          #启用上传/下载日志记录
  16. connect_from_port_20=YES #ftp使用20端口进行数据传输
  17. xferlog_std_format=YES#日志文件将根据xferlog的标准格式写入
  18. listen=YES #启用IPV4监听
  19. listem_ipv6=NO  #启用IPV6监听
  20. pam_service_name=vsftpd #登陆ftp服务器,使用pam进行认证(/etc/pam.d/vsftpd)
  21. userlist_enable=YES #vsftpd.user_list和ftpusers配置文件用户禁止访问
  22. tcp_wrappers=YES #检查/etc/hosts.allow和/etc/hosts.deny控制访问

12.配置vsftpd匿名用户权限

  1. chown -R ftp /var/ftp/pub/  #更改文件夹宿主为ftp
  2. chmod o+w /var/ftp/pub/  #修改其他用户有写入权限
  3. ----------------------------------分割线-------------------------------------------------------
  4. ----------------------------上述配置匿名用户可以实现上传新建权限--------------------------

13.vsftpd系统用户配置

  1. useradd tom1  #添加系统账号为tom1
  2. echo 123456 | passwd --stdin tom1  #配置tom1用户密码为123456

14 修改vsftpd配置

现在我们需要把vsftpd配置选项anonymous_enable=YES改成NO才可以使用系统账号tom1登陆ftp

  1. sed -i 's@anonymous=YES@anonymous=NO@' /etc/vsftpd/vsftpd.conf
  2. systemctl restart vsftpd  #重启vsftpd服务

15 系统用户访问vsftpd服务

  1. ftp localhost
  2. 输入用户tom1
  3. 输入密码 123456
  4. ------------------------------------------分割线-----------------------------------------------
  5. 系统用户访问vsftpd配置完成了哦!

16.vsftpd虚拟用户配置

  1. yum install pam* libdb-utils libdb* --skip-broken -y  #安装pam认证模块
  2. echo -e "tom2\n123456\n" >> /etc/vsftpd/ftpusers.txt  #创建ftpusers.txt并写入用户密码
  3. db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db  #生成虚拟用户数据库
  4. chmod 700 /etc/vsftpd/vsftpd_login.db #修改权限为700
  5. echo -e " auth       required         pam_userdb.so   db=/etc/vsftpd/vsftpd_login\naccount required pam_userdb.so db=/etc/vsftpd/vsftpd_login\n" > /etc/pam.d/vsftpd
  6. useradd -s /sbin/nologin tom3  #创建系统用户tom3
  7. echo -e "guest_enable=YES\nguest_username=tom3\nuser_config_dir=/etc/vsftpd/vsftpd_user_conf\nvirtual_use_local_privs=YES\n" >> /etc/vsftpd/vsftpd.conf  #将参数写入vsftpd.conf配置
  8. mkdir -p /etc/vsftpd/vsftpd_user_conf/  #创建vsftpd_user_conf文件夹
  9. echo -e "local_root=/home/tom3/tom2\nwrite_enable=YES\nanon_world_readable_only=YES\nanon_upload_enable=YES\nanon_mkdir_write_enable=YES\nanon_other_write_enable=YES\n" >> /etc/vsftpd/vsftpd_user_conf/tom2  #将参数人写入tom2文件
  10. mkdir -p /home/tom3/tom2 ; chown -R tom3:tom3 /home/tom3  #创建tom3虚拟目录
  11. systemctl restart vsftpd #重启vsftpd服务
  12. -------------------------上述操作完后可以使用虚拟用户登陆vsftpd--------------

17 vsftpd安全

禁止root账号外还需要将下面的配置参数写入vsftpd主配置文件

  1. allow_writeable_chroot=YES
  2. echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf

18.结束语

这篇文章主要记录学习Linux的笔记,也是为了日后方便查询。有一起学习Linux同学共同进步,文章难免有不足之处,还请在文章留言。非常感谢!

  • 我的QQ
  • 我的QQ扫一扫
  • weinxin
  • 我的微信
  • 我的微信扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: