设为首页 收藏本站
查看: 3115|回复: 6

[经验分享] CentOS 6.4下架设 FTP服务器

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-10-10 09:09:29 | 显示全部楼层 |阅读模式
FTP原理:
FTP是相当古老的传输协议之一,最主要的功能是在服务器与客户端之间进行文件的传输。使用的是明文传输方式,为了更安全的使用FTP协议,这里使用较为安全但功能较少的vsftpd。

FTP功能介绍:
1 不同等级的用户身份:user guest anonymous
不同的身份,权限也不同

2 命令记录与登录文件记录
FTP可以利用系统的rsyslogd来进行数据的记录

3 限制用户活动的目录:(change root)
FTP可以限制用户仅能在自己的家目录中活动

FTP的工作流程:
FTP传输使用的是TCP协议
134758297.jpg
简单的联机流程如下:
1 建立命令通道的联机
客户端随机取一个大于1024以上的端口(port AA)来与FTP服务器端的port 21联机。这个过程需要三次握手。

2 通知FTP服务器端使用active且告知连接的端口
FTP服务器的21端口主要用在命令的下达,但在数据传输时,就不是使用这个联机了。客户端在需要数据的情况下,会告知服务器端要用什么方式来联机,如果是主动式(active)联机时,客户端会先随机启用一个端口(图中的portBB),且通过命令通道告知FTP服务器这两个消息

3 FTP服务器主动向客户端联机
FTP服务器由命令通道了解客户端的需求后,会主动的由20端口向客户端的port BB联机,这个联机也要三次握手。此时FTP的客户端与服务器端会建立两条联机,分别是命令的下达与数据的传递。而预设FTP服务器端使用的主动联机端口就是20.

注:数据传输通道是在有数据传输的时候才会建立的,并不是一开始连接到FTP服务器就立刻建立的通道。

客户端选择被动式联机模式:
141241272.jpg
1 用户与服务器建立命令通道
同样需要建立命令通道,通过三次握手就可以建立。

2 客户端发出PASV的联机要求
当有使用数据通道的指令时,客户端可通过命令通道发出PASV的被动式联机要求,并等待服务器的回应。


3 FTP服务器启动数据端口,并通知客户端联机
如果你的FTP服务器是能够处理被动式联机的,此时FTP服务器会先启动一个端口在监听。这个端口是随机的,也可以自定义某一范围的端口。然后你的FTP服务器会通过命令通道告知客户端已经启动的端口(图中的port PASV),并等待客户端的联机。

4 客户端随机取用大于1024的端口进行连接
你的客户端会随机取用一个大于1024的端口来对主机的port PASV联机。如果顺利的话,你的FTP数据就可以通过 port BB及port PASV来传送了。

被动式FTP数据通道的联机方向是由客户端向服务器端联机。这样在NAT内部的客户端主机就可以顺利地连接上FTP Server。

vsftpd服务器基础设定
vsftpd全称是very secure FTP daemon的意思。

所需软件:yum install vsftpd

主要配置文件:
/etc/vsftpd/vsftpd.conf
整个vsftpd的配置文件就只有这个文件,这个文件的设定是以bash的变量设定相同的方式来处理的,也就是参数=设定值,等号两边不能为有空格。

/etc/pam.d/vsftpd
这个是vsftpd使用PAM模块时的配置文件。主要用来身份认证之用,还有一些用户身份抵挡的功能。


[iyunv@centos ~]# cat /etc/pam.d/vsftpd
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required pam_shells.so
auth       include  password-auth
account    include  password-auth
session    required     pam_loginuid.so
session    include  password-auth
上面file后面接的文件是就是限制使用者无法使用vsftpd。你的限制文件不一定要使用默认值,也可以在这个文件里进行修改。

看看这个默认限制文件
/etc/vsftpd/ftpusers


[iyunv@centos ~]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
一行一个帐号,如果你还想要让某些使用者无法登录,写在这个文件是最快的。

/etc/vsftpd/user_list
这个文件是否能够生效vsftpd.conf内的两个参数有关,分别是userlist_enable userlist_deny
/etc/vsftpd/user_list与/etc/vsftpd/ftpusers几乎一模一样,在预设情况下,你可以将不希望登录vsftpd的帐号写在这里。不过这个文件的功能会依据vsftpd.conf配置文件内的userlist_deny={YES/NO}而不同。

/etc/vsftpd/chroot_list
这个文件预设不存在,必须手动自行建立。这个文件的主要功能是可以将某些帐号的使用者chroot在它们的家目录下,但这个文件生效与vsftpd.conf内的chroot_list_enable chroot_list_file两个参数有关。

/usr/sbin/vsftpd
这是vsftpd的主要执行文件

/var/ftp/
这个是vsftpd的预设匿名者登录的根目录,其实与ftp这个帐号的家目录有关。


vsftpd.conf详细设定值见 <<鸟哥私房菜服务器篇第三版>>

vsftpd启动
利用stand alone方式启动vsftpd


[iyunv@centos ~]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[iyunv@centos ~]# netstat -plunt | grep 21
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      4955/vsftpd

如果你的FTP很少被使用,利用super daemon来管理也是个好主意。


vim /etc/vsftpd/vsftpd.conf
# 找到 listen=YES 这一行:大约在 109 行左右啦,并将它改成:
listen=NO

修改下super daemon的配置文件,自行建立/etc/xinetd.d/vsftpd文件


yum install xinetd<==假设 xinetd 没有安装时
[iyunv@centos ~]# vim /etc/xinetd.d/vsftpd
service ftp
{
     socket_type       = stream
     wait              = no
     user              = root
     server            = /usr/sbin/vsftpd
     log_on_success    += DURATION USERID
     log_on_failure    += USERID
     nice               = 10
     disable            = no
}



[iyunv@centos ~]# /etc/init.d/vsftpd stop
Shutting down vsftpd:                                      [  OK  ]
[iyunv@centos ~]# /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]
[iyunv@centos ~]# netstat -plunt | grep 21
tcp        0      0 :::21                       :::*                        LISTEN      5101/xinetd

vsftpd.conf配置如下:这里介绍匿名帐号登录而已


# anon configuration
anonymous_enable=YES
write_enable=YES
anon_world_readable_only=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
no_anon_password=YES
anon_max_rate=0
anon_umask=022
# server configuration
dirmessage_enable=YES
connect_from_port_20=YES
listen=YES
listen_port=21
connect_timeout=600
#accept_timeout=600
data_connection_timeout=600
idle_session_timeout=600
max_clients=10
max_per_ip=1
#pasv_min_port=65510
#pasv_max_port=65520
banner_file=/etc/vsftpd/welcome.txt
use_localtime=YES
local_enable=NO
# system configuration
xferlog_enable=YES
xferlog_file=/var/log/xferlog
pam_service_name=vsftpd
tcp_wrappers=YES

匿名用户取得的身份是ftp
chown ftp /var/ftp/pub
允许匿名者建立 删除 修改文件与目录的权限

这样最简单的FTP服务器就搭建好了!


让vsftpd增加SSL的加密功能
检查vsftpd是否支持ssl模块


[iyunv@centos vsftpd]# ldd $(which vsftpd) | grep ssl
    libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f35f03d5000)
出现如上字样表示支持

建立给vsftpd使用的凭证数据


[iyunv@centos certs]# cd /etc/pki/tls/certs/
[iyunv@centos certs]# make vsftpd.pem
umask 77 ;
    PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ;
    PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ;
    /usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ;
    cat $PEM1 >  vsftpd.pem ;
    echo ""    >> vsftpd.pem ;
    cat $PEM2 >> vsftpd.pem ;
    rm -f $PEM1 $PEM2
Generating a 2048 bit RSA private key
...........................................+++
.................................................................................+++
writing new private key to '/tmp/openssl.3ftr2M'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:FuJian
Locality Name (eg, city) [Default City]:FuQing
Organization Name (eg, company) [Default Company Ltd]:FJSF
Organizational Unit Name (eg, section) []:DIC
Common Name (eg, your name or your server's hostname) []:yao
Email Address []:yao3690093@163.com      
[iyunv@centos certs]# cp -a vsftpd.pem  /etc/vsftpd/
[iyunv@centos certs]# ll /etc/vsftpd/vsftpd.pem
-rw-------. 1 root root 3072 Oct  9 20:40 /etc/vsftpd/vsftpd.pem

修改vsftpd.conf的配置文件 假设有实体、匿名帐号


[iyunv@www ~]# vim /etc/vsftpd/vsftpd.conf
# 实体账号的一般设定项目:
local_enable=YES
write_enable=YES
local_umask=002
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
local_max_rate=10000000
# 匿名者的一般设定:
anonymous_enable=YES
no_anon_password=YES
anon_max_rate=1000000
data_connection_timeout=60
idle_session_timeout=600
# 针对 SSL 所加入的特别参数!每个项目都很重要!
ssl_enable=YES
<==启动 SSL 的支持
allow_anon_ssl=NO
<==但是不允许匿名者使用 SSL 喔!
net.qiang@hotmail.com
force_local_data_ssl=YES
<==强制实体用户数据传输加密
force_local_logins_ssl=YES <==同上,但连登入时的帐密也加密
ssl_tlsv1=YES
<==支持 TLS 方式即可,底下不用启动
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem <==预设 RSA 加密的凭证档案所在
# 一般服务器系统设定的项目:
max_clients=50
max_per_ip=5
use_localtime=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
banner_file=/etc/vsftpd/welcome.txt
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
pasv_min_port=65400
pasv_max_port=65410

服务重启


[iyunv@centos vsftpd]# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]

实体、匿名帐号一起的时候,实体帐号就是登录不上,不知道是不是我哪里错误,还是。。。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-9696-1-1.html 上篇帖子: Linux下安装配置vsftpd(虚拟用户PAM验证) 下篇帖子: rhel6下搭建FTP文件传输服务 服务器

尚未签到

发表于 2013-10-10 09:54:20 | 显示全部楼层
要是我灌水,就骂我“三个代表”没学好吧。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-10-10 14:21:01 | 显示全部楼层
走过了年少,脚起了水泡

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-10-11 02:29:30 | 显示全部楼层
路过,支持一下啦

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-10-11 04:51:38 | 显示全部楼层
生我之前谁是我,生我之后我是谁?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-10-11 14:08:30 | 显示全部楼层
支持一下:lol

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-10-11 21:59:27 | 显示全部楼层
我喜欢孩子,更喜欢造孩子的过程!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表