FTP服务器搭建(Centos7)

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服务器

  1. 创建用户123, 密码456;
  2. 默认目录: /var/789, 有读写权限;
  3. 只能ftp不能telnet;
  4. 限制用户只能访问/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 服务为开启状体, 但是就是连接不上, 原因是因为 防火墙开启

  1. 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实战联盟”哦~~~


IT实战联盟.jpg

你可能感兴趣的:(FTP服务器搭建(Centos7))