Centos 7.1 1503部署FTP
一、简述
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP(File Transfer Protocol: 文件传输协议)就是在 Internet 上专门用来传送文件的协议,用来实现文件的上传(upload)和下载(download),ftp工作时涉及2个最常用端口:
21 : 控制端口,用于在客户机和服务器之间建立连接
20 : 数据端口,用于服务器给客户机主动进行数据连接
而vsftpd是非常安全文件传输协议守护进程(very secure ftp daemon);ftp的工作模式分为:主动port、被动passive模式;客户端与服务端传输数据时,服务端传输端口为20时为主动模式,传输端口为>1024的随机端口时为被动模式;
1、ftp主动(port)模式工作过程:
1.客户机和服务器建立连接关系(登录): 客户机(>1024的随机端口号) <----> 服务器 21号port
2.双方建立数据连接关系,传输数据:客户机(>1024的随机port) <----> 服务器 20号port
2、ftp被动(pasv)模式工作过程:
1.客户机和服务器建立连接关系(登录): 客户机(>1024的随机端口号) <----> 服务器 21号port
2.双方建立数据连接关系,传输数据:客户机(>1024的随机port) <----> 服务器(>1024的随机port)
说明:当ftp服务器上有防火墙时,通常客户机是以被动模式去访问ftp服务器的。在ftp服务器的vsftpd.conf和防火墙上要指定放行的被动模式端口范围的最小值和最大值。
二、部署过程
1、安装
yum install vsftpd ftp lftp db-util db5.3-util -y //其中,db-util 提供 db_load 工具,会安装以下包
ftp.x86_64 0:0.17-67.el7
vsftpd.x86_64 0:3.0.2-22.el7
lftp.x86_64 0:4.4.8-8.el7_3.2
……
2、相关配置文件:
/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
/etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器。 黑名单
/etc/vsftpd/user_list:指定允许使用vsftpd 的用户列表文件。 白名单
3、备份配置文件后修改:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
grep -v "^#" ./vsftpd.conf.bak>./vsftpd.conf
vim vsftpd.conf
#允许匿名用户访问:
listen_port=6069 #修改ftp服务侧端口
pasv_enable=YES
pasv_min_port=10221 #被动连接端口
pasv_max_port=10231
pasv_promiscuous=YES
ftpd_banner=Welcome to XXX.com FTP service
anonymous_enable=YES #是否允许匿名用户访问;(默认YES),NO 禁止匿名登录
#允许匿名用户上传文件并可以创建目录:
anon_upload_enable=YES #允许匿名用户上传文件;
anon_mkdir_write_enable=YES #允许匿名用户创建目录;
#允许匿名用户删除文件和文件命名:
anon_other_write_enable=YES #允许匿名用户命名文件删除文件;
#设置匿名用户所上传的文件的默认掩码值:
anon_umask=022 #......
#设置匿名用户的FTP根目录(默认为/var/ftp/)
anon_root=/var/ftp #给匿名用户权限最好不要太大,建议755 ;实际生活中,匿名用户只是只读访问,写的权限也没有。
====================本地用户:================
#允许本地用户登录:
local_enable=YES # 允许本地用户登录
write_enable=YES #启动本地用户上传写入支持
Local_umask=022 #本地用户上传的默认权限掩码值:
#设置本地用户的FTP根目录(默认为用户的宿主目录)
Local_root=/var/ftp
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
#虚拟用户不对应系统真实账号,安全性更高,便于集中管理,适合多用户的生产环境,为不同的虚拟用户建立独立的配置文件:
user_config_dir=/etc/vsftp/vusers_dir #设置从/etc/vsftp/vusers_dir目录中查找每个用户的独立配置文件;
======================安全配置==================
chroot_local_user=YES # 将用户限制在自己的家目录
allow_writeable_chroot=YES # 允许chroot目录可写
userlist_enable=Yes # 启动黑名单
==========================虚拟用户==========
guest_enable=YES # 启用虚拟用户
guest_username=ftpuser # 虚拟用户映射的系统用户
virtual_use_local_privs=YES # 虚拟用户拥有本地用户权限
pam_service_name=vsftpd.vu # 配置 PAM 认证,在/etc/pam.d/创建vsftpd.vu
# 用户目录配置
user_sub_token=$USER
local_root=/home/ftp/$USER # 为每个虚拟用户创建独立子目录
添加虚拟用户:vi /etc/vsftp/vusers_dir/vuser.config,奇数行用户名,偶数行密码(不要写冒号),完成后chmod 600 /etc/vsftpd//vusers_dir/vuser.config
user1
password123
user2
mypassword456
完成后,生成数据库文件,创建pam认证:
db_load -T -t hash -f /etc/vsftpd//vusers_dir/vuser.config /etc/vsftpd/virtual_users.db
chmod 600 /etc/vsftpd/virtual_users.db
#创建pam认证
vi /etc/pam.d/vsftpd.vu #添加
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
#创建映射的系统用户
useradd -d /home/ftp -s /sbin/nologin ftpuser
mkdir -p /home/ftp
chown ftpuser:ftpuser /home/ftp
# 如果启用了 local_root,为每个用户创建独立用户目录
mkdir -p /home/ftp/user1 /home/ftp/user2
chown ftpuser:ftpuser /home/ftp/user1 /home/ftp/user2
另,完成ftp修改端口还需要修改/etc/services
ftp 6069/tcp
ftp 6069/udp
注意:/etc/services文件是记录网络服务名和它们对应使用的端口号及协议。
文件中的每一行对应一种服务,它由4个字段组成,中间用TAB或空格分隔,分别表示“服务名称”、“使用端口”、“协议名称”以及“别名”。
端口说明:
1–1023 系统保留,只能由root用户使用
1024—4999 由客户端程序自由分配
5000—65535 由服务器端程序自由分配
4、验证:
lftp 用户名:密码@ftp地址:传送端口(默认21)

5、如果开启防火墙,需加入21端口例外:
编辑/etc/sysconfig/iptables添加以下内容
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
对于centos7之后的firewalld 防火墙:
firewall-cmd --zone=public --add-port=21/tcp --permanent (--permanent永久生效,无参数重启后失效)
#开启被动模式30000端口(vsftpd.conf中相应配置)
firewall-cmd --zone=public --add-port=30000/tcp --permanent
firewall-cmd --reload
验证:firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --query-port=21/tcp
firewall-cmd --state
firewall-cmd --version
解决vsftpd在iptables开启后,无法使用被动模式的问题(网络参考,请自行验证):编辑/etc/sysconfig/iptables-config添加以下内容,注意顺序不能调换
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"
配置端口转发与端口映射:
iptables -t nat -A PREROUTING -d 外网IP -p tcp --dport 端口 -j DNAT --to 内网IP:端口
iptables -t nat -A POSTROUTING -d 内网IP -p tcp --dport 端口 -j SNAT --to 外网IP:端口
iptables save

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐





所有评论(0)