FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。
第一部分 安装环境, 介绍配置
1.1 安装vsftpd
vsftpd(very secure FTP daemon) 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。
非常高的安全性需求
带宽限制
良好的可伸缩性
创建虚拟用户的可能性
IPv6支持
中等偏上的性能
分配虚拟 IP 的可能性
高速
1.1.1 查看是否安装vsftp
rpm -qa | grep vsftpd
1.1.2 如果没有安装:
yum -y install vsftpd
1.2 安装位置与基本配置
安装完成之后,前往'/ect/vsftpd'目录下,
[root@localhost ~]# cd /etc/vsftpd
[root@localhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
1.2.1 ftpusers
黑名单, ftpusers不受任何配制项的影响.
通常为了安全考虑,管理员不希望一些拥有过大权限的帐号(比如root)登入FTP,以免通过该帐号从FTP上传或下载一些危险位置上的文件从而对系统造成损坏。
1.2.2 user_list
白名单
与 vsftpd.conf 中的userlist_enable和userlist_deny两个配置项紧密相关的. 可以有效,也可以无效.
1. 当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
2. 当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);
3. 另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous
4.
1.2.3 vsftpd.conf 配置文件
匿名权限控制
anonymous_enable=YES #是否启用匿名用户
no_anon_password=YES #匿名用户login时不询问口令
################服务器功能选项###############
xferlog_enable=YES #开启日记功能
xferlog_std_format=YES #使用标准格式
log_ftp_protocol=NO #当xferlog_std_format关闭且本选项开启时,记录所有ftp请求和回复,当调试比较有用.
pasv_enable=YES #允许使用pasv模式
pasv_promiscuous+NO #关闭安全检查,小心呀.
port_enable=YES #允许使用port模式
prot_promiscuous #关闭安全检查
tcp_wrappers=YES #开启tcp_wrappers支持
pam_service_name=vsftpd #定义PAM 所使用的名称,预设为vsftpd。
nopriv_user=nobody #当服务器运行于最底层时使用的用户名
pasv_address=(none) #使vsftpd在pasv命令回复时跳转到指定的IP地址.(服务器联接跳转?)
#############用户连接选项#################
max_clients=100 #可接受的最大client数目
max_per_ip=5 #每个ip的最大client数目
connect_from_port_20=YES #使用标准的20端口来连接ftp
listen_address=192.168.0.2 #绑定到某个IP,其它IP不能访问
listen_port=2121 #绑定到某个端口
ftp_data_port=2020 #数据传输端口
pasv_max_port=0 #pasv连接模式时可以使用port 范围的上界,0 表示任意。默认值为0。
pasv_min_port=0 #pasv连接模式时可以使用port 范围的下界,0 表示任意。默认值为0。
##############数据传输选项#################
anon_max_rate=51200 #匿名用户的传输比率(b/s)
local_max_rate=5120000 #本地用户的传输比率(b/s)
##############安全选项#################
Idle_session_timeout=600 #(用户会话空闲后10分钟)
Data_connection_timeout=120 #(将数据连接空闲2分钟断)
Accept_timeout=60 #(将客户端空闲1分钟后断)
Connect_timeout=60 #(中断1分钟后又重新连接)
Local_max_rate=50000 #(本地用户传输率50K)
Anon_max_rate=30000 # (匿名用户传输率30K)
Pasv_min_port=50000 # (将客户端的数据连接端口改在
Pasv_max_port=60000 #50000—60000之间)
Max_clients=200 #(FTP的最大连接数)
Max_per_ip=4 #(每IP的最大连接数)
Listen_port=5555 #(从5555端口进行数据连接)
1.2.3
1.2.3
1.2.3
1.2.3
1.2.4 vsftpd_conf_migrate.sh
第二部分 FTP基本使用
2.1 查看配置项
cat /etc/vsftpd/vsftpd.conf |grep -v '^#';
更多详细配置选项前往--VSFTPD全攻略
2.1常用命令
安装
yum -y install vsftpd
vsftpd服务
启动服务
systemctl start vsftpd.service
重启服务
systemctl restart vsftpd.service
重启服务
systemctl stop vsftpd.service
查看状态
service vsftpd status
验证vsftpd状态
systemctl list-dependencies vsftpd
第三部分 实例
3.1 需求
建立基于虚拟用户的FTP服务器,并根据以下要求配置FTP服务器
- 创建用户123, 密码456;
- 默认目录: /var/789, 有读写权限;
- 只能ftp不能telnet;
- 限制用户只能访问/var/789,不能访问其他路径
创建目录
# mkdir /var/789
chmod -R 777 /var/ftp/789
# useradd 123
# passwd 123
在此提示密码过短,修改/etc/pam.d/system-auth文件,输入abc后在此输入,方法成功
//更改用户123的主目录为/var/789
usermod -d /var/789 123
//限定用户123不能telnet,只能ftp
usermod -s /sbin/nologin 123
启动服务
systemctl start vsftpd.service
3.2 需求
[案例] 建立基于虚拟用户的FTP服务器,并根据以下要求配置FTP服务器。
(1)配置FTP匿名用户的主目录为/var/ftp/anon。下载带宽限制为100kB/s
(2)建立一个名为abc
,口令为xyz
的FTP账户。下载带宽限制为500kB/s。
(3)设置FTP服务器同时登录到FTP服务器的最大链接数为100
;每个IP最大链接数为3;用户空闲时间超过限值为5分钟。
创建目录
# mkdir /var/ftp/anon
# useradd abc
# passwd abc
在此提示密码过短,修改/etc/pam.d/system-auth文件,输入abc后在此输入,方法成功
编辑配置文件
vim /etc/vsftpd/vsftpd.conf
#LOCAL用户
anonymous_enable=YES
anon_root=/var/ftp/anon
anon_max_rate=100
local_enable=YES
local_max_rate=500
max_clients=100
max_per_ip=3
connect_timeout=300
下面是用虚拟用户来实现
vim /etc/vsftpd/vuser
内容如下
tom
123
生成数据库文件
db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db
vim /etc/pam.d/vsftpd
注释掉原来的内容
然后加入
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
最后编辑VSFTPD.CONF加入下面两句
guest_enable=YES
guest_username=abc
x.0 错误
之前出现的问题, 客户端可以 ping 通服务器地址, FTP 服务为开启状体, 但是就是连接不上, 原因是因为 防火墙开启
- centos7的防火墙是firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
附录
x.1 添加用户命令---useradd
*useradd 选项 用户名
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
x.2 删除用户命令---userdel
userdel 选项 用户名*
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
参考
vsftpd中关于ftpusers和user_list两个文件的说明以及vsftpd.conf中的userlist_enable和userlist_deny两个配置项的解释
VSFTPD全攻略
Linux怎样创建FTP服务器--修改用户默认目录
linux如何设置一般用户密码必须达到一定强度?还有3月强制更改一次密码?
CentOS修改用户密码,过短解决方法
更多精彩内容请关注“IT实战联盟”哦~~~