Centos7 配置vsftpd

xiaoxiao2021-02-28  33

转载来自公司爱心人士王纯的有道云笔记,感谢 https://blog.csdn.net/the_victory/article/details/52192085 注:Centos7 不需要mysql  一、配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。 1、关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 2、安装iptables防火墙 yum install iptables-services #安装 vi /etc/sysconfig/iptables #编辑防火墙配置文件 # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT :wq! #保存退出 systemctl restart iptables.service #最后重启防火墙使配置生效 systemctl enable iptables.service #设置防火墙开机启动 说明:21端口是ftp服务端口;10060到10090是Vsftpd被动模式需要的端口,可自定义一段大于1024的tcp端口。 系统运维  www.osyunwei.com  温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接 二、关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq! #保存退出 setenforce 0 #使配置立即生效 三、安装vsftpd yum install -y vsftpd #安装vsftpd yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI  #安装vsftpd虚拟用户配置依赖包 systemctl start vsftpd.service #启动 systemctl enable vsftpd.service #设置vsftpd开机启动 四、配置vsftp服务器 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak #备份默认配置文件 执行以下命令进行设置 sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf' echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300 \ndata_connection_timeout=1\nguest_enable=YES\nguest_username=www \nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES \naccept_timeout=5\nconnect_timeout=1\nallow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf 五、建立虚拟用户名单文件 touch /etc/vsftpd/virtusers 编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留) vi /etc/vsftpd/virtusers web1 123456 web2 123456 web3 123456 :wq! #保存退出 六、生成虚拟用户数据文件 db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db chmod 600 /etc/vsftpd/virtusers.db #设定PAM验证文件,并指定对虚拟用户数据库文件进行读取 七、在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效) 修改前先备份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak vi /etc/pam.d/vsftpd auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 注意:如果系统为32位,上面改为lib,否则配置失败 八、新建系统用户www,用户目录为/home/wwwroot, 用户登录终端设为/bin/false(即使之不能登录系统) useradd www -d /home/wwwroot -s /bin/false chown www.www /home/wwwroot -R #虚拟用户的宿主用户为www 九、建立虚拟用户个人Vsftp的配置文件 mkdir /etc/vsftpd/vconf cd /etc/vsftpd/vconf touch web1 web2 web3 #这里创建三个虚拟用户配置文件 mkdir -p /home/wwwroot/web1/http/ vi web1 #编辑用户web1配置文件,其他的跟这个配置文件类似 local_root=/home/wwwroot/web1/http/ write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES 十、最后重启vsftpd服务器 systemctl restart vsftpd.service 备注: guest_username=vsftpd #指定虚拟用户的宿主用户(就是我们前面新建的用户) guest_username=www #如果ftp目录是指向网站根目录,用来上传网站程序,可以指定虚拟用户的宿主用户为nginx运行账户www,可以避免很多权限设置问题 至此,CentOS 7.0安装配置Vsftp服务器配置完成 转载来自:https://blog.csdn.net/zhangpfly/article/details/73160346

1.安装vsftpd

安装依赖包: yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl 新建vsftpd系统用户: #建立Vsftpd服务的宿主用户useradd vsftpd -M -/sbin/nologin#建立Vsftpd虚拟宿主用户useradd ftpvload -M -s /sbin/nologin 安装vsftpd yum -y install vsftpd

2.配置vsftpd

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back

2.1 修改vsftpd.conf配置文件

主要是下面的一些配置: anonymous_enable=NO#设定不允许匿名访问local_enable=YES#设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。write_enable=YES#设定可以进行写操作。local_umask=022#设定上传后文件的权限掩码。anon_upload_enable=NO#禁止匿名用户上传。anon_mkdir_write_enable=NO#禁止匿名用户建立目录。dirmessage_enable=YES#设定开启目录标语功能。xferlog_enable=YES#设定开启日志记录功能。connect_from_port_20=YES#设定端口20进行数据连接。chown_uploads=NO#设定禁止上传文件更改宿主。xferlog_file=/var/log/vsftpd.log#设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。xferlog_std_format=YES#设定日志使用标准的记录格式。async_abor_enable=YES#设定支持异步传输功能。ascii_upload_enable=YESascii_download_enable=YES#设定支持ASCII模式的上传和下载功能。ftpd_banner=This Vsftp server supports virtual users ^_^#设定Vsftpd的登陆标语。chroot_list_enable=NO#禁止用户登出自己的FTP主目录。ls_recurse_enable=NO#禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么当多用户同时使用该命令时将会对该服务器造成威胁。listen=YES#设定该Vsftpd服务工作在StandAlone模式下。pam_service_name=vsftpd #设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。userlist_enable=YES#设定userlist_file中的用户将不得使用FTP。tcp_wrappers=YES#设定支持TCP Wrappers#以下这些是关于Vsftpd虚拟用户支持的重要配置项目。默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置guest_enable=YES#设定启用虚拟用户功能。guest_username=ftpvload#指定虚拟用户的宿主用户。virtual_use_local_privs=YES#设定虚拟用户的权限符合他们的宿主用户。user_config_dir=/etc/vsftpd/vconf#设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。 建立Vsftpd的日志文件,并更该属主为Vsftpd的服务宿主用户: touch /var/log/vsftpd.logchown vsftpd.vsftpd /var/log/vsftpd.log

2.2 虚拟用户配置

创建虚拟用户配置文件存放路径 mkdir /etc/vsftpd/vconf/ -pv 制作虚拟用户数据库文件 touch /etc/vsftpd/virtusers 新建一个测试用虚拟用户 vim /etc/vsftpd/virtusers 编辑这个虚拟用户名单文件,在其中加入用户的用户名和口令信息。格式很简单:“奇数行用户名,偶数行口令”。 virtusers文件格式如下: test #用户名test1234 #用户密码 生成虚拟用户数据文件: db_load --t hash -/etc/vsftpd/virtusers /etc/vsftpd/virtusers.db 需要特别注意的是,以后再要添加虚拟用户的时候,只需要按照“一行用户名,一行口令”的格式将新用户名和口令添加进虚拟用户名单文件。但是光这样做还不够,这样是不会生效的!还要再执行一遍“ db_load -T -t hash -f 虚拟用户名单文件 虚拟用户数据库文件.db ”的命令使其生效才可以!

2.3 设置认证文件PAM

在编辑前做好备份: cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup 编辑Vsftpd的PAM验证配置文件,把原来的配置文件全部注释掉(不注释掉虚拟用户会登录不上),添加如下行 #vim /etc/pam.d/vsftpdauth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusersaccount sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers #以上两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。 这里的auth是指对用户的用户名口令进行验证。 这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。 其后的sufficient表示充分条件,也就是说,一旦在这里通过了验证,那么也就不用经过下面剩下的验证步骤了。相反,如果没有通过的话,也不会被系统立即挡之门外,因为sufficient的失败不决定整个验证的失败,意味着用户还必须将经历剩下来的验证审核。 再后面的/lib/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。 最后的db=/etc/vsftpd/virtusers则指定了验证库函数将到这个指定的数据库中调用数据进行验证。

2.4 虚拟用户配置

规划好虚拟用户的主路径: mkdir /var/ftp/virtual 建立测试用户的FTP用户目录: mkdir /var/ftp/virtual/test1 更改虚拟用户的主目录的属主为虚拟宿主用户: chown -R ftpvload.ftpvload /var/ftp/virtual/ 建立虚拟用户配置文件模版: vi /etc/vsftpd/vconf/vconf.tmp vconf.tmp内容如下: local_root=/var/ftp/virtual/test1#指定虚拟用户的具体主路径anonymous_enable=NO#设定不允许匿名用户访问write_enable=YES#设定允许写操作local_umask=022#设定上传文件权限掩码anon_upload_enable=NO#设定不允许匿名用户上传anon_mkdir_write_enable=NO#设定不允许匿名用户建立目录idle_session_timeout=600#设定空闲连接超时时间data_connection_timeout=120#设定单次连续传输最大时间max_clients=10#设定并发客户端访问个数max_per_ip=5#设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件local_max_rate=50000#设定该用户的最大传输速率,单位b/s 测试用户复制配置模板 cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/test vim /etc/vsftpd/vconf/test

3.测试配置

使用ftp连接之后,测试情况如下

4.自动脚本

4.1 自动安装配置

#!/bin/bash#date:2017-05-25#version:0.0.1#开始安装vsftpdecho ">>> 1. Start install Vsftpd ......"yum -y install pam pam-devel db4 de4-devel db4-tcl vsftpdmkdir /var/ftp/virtualuseradd vsftpd --/sbin/nologinuseradd ftpvload -/var/ftp/virtual/ -/sbin/nologinsleep 3#开始配置vsftpdecho ">>> 2. Start config Vsftpd ......"cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backsed -'/^[^#]/s/^/#/g' vsftpd.confecho "anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=NOanon_mkdir_write_enable=NOdirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESchown_uploads=NOxferlog_file=/var/log/vsftpd.logxferlog_std_format=YESasync_abor_enable=YESascii_upload_enable=YESascii_download_enable=YESftpd_banner=Welcome to FTP Serverchroot_local_user=YESls_recurse_enable=NOlisten=YEShide_ids=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESguest_enable=YESguest_username=ftpvloadvirtual_use_local_privs=YESuser_config_dir=/etc/vsftpd/vconf" >> /etc/vsftpd/vsftpd.confcp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backupsed -i s/^/#//etc/pam.d/vsftpdecho "auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusersaccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers" >> /etc/pam.d/vsftpdsleep 3#开始配置其它echo ">>> 3. Start config other ......"touch /var/log/vsftpd.logchown vsftpd.vsftpd /var/log/vsftpd.logmkdir /etc/vsftpd/vconf/ -pvsleep 3#配置虚拟用户echo ">>> 4. Start config vitual user"echo -"test\ntest1234" >> /etc/vsftpd/virtusersdb_load --t hash -/etc/vsftpd/virtusers /etc/vsftpd/virtusers.dbmkdir /var/ftp/virtual/testecho "local_root=/var/ftp/virtual/username#指定虚拟用户的具体主路径anonymous_enable=NO#设定不允许匿名用户访问write_enable=YES#设定允许写操作local_umask=022#设定上传文件权限掩码anon_upload_enable=NO#设定不允许匿名用户上传anon_mkdir_write_enable=NO#设定不允许匿名用户建立目录idle_session_timeout=600#设定空闲连接超时时间data_connection_timeout=120#设定单次连续传输最大时间max_clients=10#设定并发客户端访问个数max_per_ip=5#设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件local_max_rate=50000#设定该用户的最大传输速率,单位b/s" >> /etc/vsftpd/vconf/vconf.tmpcp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/testsed -i s/username/test//etc/vsftpd/vconf/testecho "Alll OVER! "

4.2 新增用户

#!/bin/bash#date:2017-05-25if read -5 -"Please enter you name: " usernamethenif [ -/etc/vsftpd/vconf/$username ] #判断用户是否存在thenecho "The $username is exists, please input another name."elseread --"Please enter your password: " passwdecho -"$username\n$passwd" >> /etc/vsftpd/virtusersdb_load --t hash -/etc/vsftpd/virtusers /etc/vsftpd/virtusers.dbmkdir -pv /var/ftp/virtual/$usernamecp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/$usernamesed -i s/username/$username//etc/vsftpd/vconf/$usernameecho "The config is over."fielseecho -"\nThe 5s has passed, you are to slow! "fi 4.3 删除用户

转载请注明原文地址: https://www.6miu.com/read-2628261.html

最新回复(0)