配置vsftp

一、安装、测试

二、用户类型

三、相关文件及配置

四、添加SSL安全验证

五、ftp的端口号20、21有何区别


一、安装、测试

1、安装vsftp

[root@test3 ~]# yum install -y vsftpd

 

2、vsftp,安装后,会自动创建一个名为ftp的用户,家目录为/var/ftp,这个家目录就是ftp服务器端的文件路径

[root@test3 pub]# finger ftp
Login: ftp            			Name: FTP User
Directory: /var/ftp                 	Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

 

3、启动ftp服务

[root@test3 ~]# service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]

 

4、另一台主机上安装客户端ftp或lftp

[root@HTTP conf]# yum install -y ftp

 

5、连接测试,iptable没有配置前,先关掉服务

[root@HTTP conf]# ftp 10.1.1.112    #ftp IP为登录命令
Connected to 10.1.1.112 (10.1.1.112).
220 (vsFTPd 2.2.2)    #协议响应码220,说明服务器存在
Name (10.1.1.112:root): ftp    #root在此为降权用户,使用匿名用户ftp即可
331 Please specify the password.    #协议响应码331,输入用户名后,响应还未结束,需要输入密码
Password:    #匿名登录时,密码为空或者ftp
230 Login successful.    #协议响应码230,连接成功
Remote system type is UNIX.    
Using binary mode to transfer files.
ftp>

    安装lftp,连接测试

[root@HTTP conf]# yum install -y lftp
[root@HTTP conf]# lftp ftp:@10.1.1.112    #使用这个格式,指定用户名、密码登陆指定的ftp服务器
lftp [email protected]:~>

 

6、连接ftp服务器时,可以看到有协议响应码,意义如下

1xx:服务器信息

2xx:正确响应信息

3xx:正常响应,某操作过程尚未完成,需进一步补充完成

4xx:客户端错误

5xx:服务器端错误

 

二、用户类型

 

1、匿名用户和本地用户

登录ftp服务器的用户,都是ftp服务端linux系统的用户,在vsftp中默认禁止root和uid小于500的用户登录,本地用户登陆ftp服务器,处于自己的家目录下,除了匿名用户ftp登录后,锁定在/var/ftp,其他本地用户可以随意查看系统结构,而且ftp登录信息是明文的,不安全,完全可以拿着本地用户登录linux

[root@test3 pub]# useradd jerry;echo jerry | passwd --stdin jerry
Changing password for user jerry.
passwd: all authentication tokens updated successfully.
[root@HTTP conf]# ftp 10.1.1.112    #使用jerry登录
Connected to 10.1.1.112 (10.1.1.112).
220 (vsFTPd 2.2.2)
Name (10.1.1.112:root): jerry
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/jerry    #出现提示,这时因为SELinux未配置,暂时关闭后重新尝试连接
Login failed.
ftp> bye    #退出
[root@HTTP conf]# lftp jerry:[email protected]    #重新登录
lftp [email protected]:~> pwd     
ftp://jerry:[email protected]/%2Fhome/jerry    #可以看出,用户登录后处于自己的家目录下
lftp [email protected]:~>

本地用户随意浏览系统目录

lftp [email protected]:~> cd /    #匿名用户锁死在自己家目录下,但是本地用户可以随意切换所在目录并浏览目录结构、内容
cd ok, cwd=/
lftp [email protected]:/> ls
dr-xr-xr-x    2 0        0            4096 May 15 08:27 bin
dr-xr-xr-x    5 0        0            1024 May 15 08:28 boot
drwxr-xr-x   19 0        0            3740 May 15 08:31 dev
drwxr-xr-x   62 0        0            4096 May 15 09:30 etc
drwxr-xr-x    3 0        0            4096 May 15 09:30 home
dr-xr-xr-x    8 0        0            4096 May 15 08:27 lib
dr-xr-xr-x    9 0        0           12288 May 15 08:28 lib64
drwx------    2 0        0           16384 May 15 08:26 lost+found
drwxr-xr-x    2 0        0            4096 Sep 23  2011 media
drwxr-xr-x    2 0        0            4096 Sep 23  2011 mnt
drwxr-xr-x    2 0        0            4096 Sep 23  2011 opt
dr-xr-xr-x  104 0        0               0 May 15  2015 proc
dr-xr-x---    2 0        0            4096 May 15 09:18 root
dr-xr-xr-x    2 0        0           12288 May 15 08:28 sbin
drwxr-xr-x    7 0        0               0 May 15  2015 selinux
drwxr-xr-x    2 0        0            4096 Sep 23  2011 srv
drwxr-xr-x   13 0        0               0 May 15  2015 sys
drwxrwxrwt    3 0        0            4096 May 15 09:28 tmp
drwxr-xr-x   13 0        0            4096 May 15 08:26 usr
drwxr-xr-x   18 0        0            4096 May 15 08:48 var
lftp [email protected]:/>


2、虚拟用户

虚拟用户事实上也是服务器端自动映射的一个系统用户,可以多个虚拟用户同时被映射为同一个系统用户,不同的虚拟用户可以具有不同的访问权限,启用虚拟用户,需配置/etc/pam.d/vsftpd


三、相关文件及配置

服务脚本:/etc/rc.d/init.d/vsftpd

执行程序:/usr/sbin/vsftpd


------------------------------------------


主配置文件:/etc/vsftpd/vsftpd.conf

anonymous_enable=YES    是否支持匿名用户登陆

local_enable=YES    是否支持本地用户登陆

write_enable=YES    是否支持本地用户上传,上传用客户端用put命令

local_umask=022    遮罩码,本地用户上传文件后,文件的权限

anon_upload_enable=YES    是否允许匿名用户上传文件,这项开启后,匿名用户可以上传文件,但是系统目录是没有ftp用户写权限的,此时可以新建目录,让ftp用户有权限写,setfacl –m u:ftp:rwx upload/

anon_mkdir_write_enable=YES    匿名用户是否可以创建目录

anon_other_write_enable=YES    匿名用户可以删除文件,改文件的属主、属组

dirmessage_enable=YES    切换目录有提示信息,当切换到的目录中有.message文件的目录时,会显示.message文件中的文本信息

xferlog_enable=YES    启用日志功能,需要开启指定日志文件

xferlog_file=/var/log/xferlog    指定日志文件  
--------------

是否启用上传文件后,更改文件属主功能

chown_uploads=YES  
chown_username=whoever    #将whoever改为用户名

---------------

connect_from_port_20=YES    #服务器是否工作在主动模式下

xferlog_std_format=YES    日志使用标准格式

idle_session_timeout=600    命令连接超时时间

data_connection_timeout=120    数据连接的超时时间  
-------------

是否使用ascii码格式上传下载

ascii_upload_enable=YES

ascii_download_enable=YES  
--------------  
ftpd_banner=Welcome to blah FTP service.    欢迎信息

--------------

1、chroot_local_user=YES    所有本地用户登录ftp后都禁锢在家目录下

2、chroot_list_enable=YES    列表文件中的用户登录ftp后都禁锢在家目录下

        (default follows)

     chroot_list_file=/etc/vsftpd/chroot_list

3、3项全启用时,则禁锢不在列表中的用户

---------------

ls_recurse_enable=YES    使用ls查看文件时,递归显示所有文件

---------------

pam_service_name=vsftpd    pam服务的文件名为vsftpd,/etc/pam.d/vsftpd

userlist_enable=YES    启用用户列表,/etc/vsftpd/ftpusers文件中的用户都不允许登录

tcp_wrappers=YES  
---------------

user_list文件中的用户默认不能登录ftp,但如果在主配置文件中加入配置选项userlist_deny=NO,则由黑名单变成白名单,文件中用户可以登录ftp

p_w_picpath

---------------

anon_max_rate=    匿名用户的最大传输速率,单位为字节

local_max_rate=    本地用户的最大传输速率

---------------

不同用户设置不同下载速率

user_config_dir=/etc/vsftpd/userconfs/    指定目录,然后在目录下创建和用户同名的文件,在文件中设定local_max_rate=,即可

----------------

连接数限定

max_clients=    最多允许多少个连接请求

max_per_ip=    一个ip最多发起多少个连接请求

 

四、添加SSL安全验证


1、生成私钥并制作一个证书申请文件

[root@test3 CA]# openssl genrsa -des3 -out /root/testkey.pri 512    #生成私钥
[root@test3 CA]# openssl req -new -key /root/testkey.pri -out /root/test.csr    #证书申请文件
Enter pass phrase for /root/testkey.pri:
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) []:GuangDong      
Locality Name (eg, city) [Default City]:ShenZhen
Organization Name (eg, company) [Default Company Ltd]:www.test.com
Organizational Unit Name (eg, section) []:tech
Common Name (eg, your name or your server's hostname) []:www.test.com
Email Address []:[email protected]
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:                  
An optional company name []:


2、由CA负责签署申请的证书

[root@test3 CA]# openssl ca -in /root/test.csr -out /root/test.crt -days 365


3、将下列配置信息添加有vsftpd的主配置文件/etc/vsftpd/vsftpd.conf中,将私钥文件和证书文件保存到指定指定目录

#SSL
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt    #指定证书存放位置
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key    #指定私钥存放位置

 重新载入配置

[root@test3 vsftpd]# service vsftpd reload
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd: Enter PEM pass phrase:
                                                           [  OK  ]


这里我们用windows中的FlashFXP软件测试SSL连接FTP服务器,并抓包

tcpdump -i eth0 -XX port 21    #抓包命令,使用命令后监听21号端口,再用软件连接FTP服务器


下图的抓包信息,看出登录使用了SSL加密认证,且包中信息都不是明文

wKiom1VW8TLw_q1cAAXPhBDonDs736.jpg


五、ftp的端口号20、21有何区别

http://blog.sina.com.cn/s/blog_4fc68b7f0100g5r0.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章