FTP服务器的建立

Packagesvsftpd.i386

Daemon:vsftp(/usr/sbin/vsftpd)

Script:/etc/init.d/vsftpd

ports:21/tcp(ftp),20/tcp(ftp-data)

Configuration:

/etc/vsftpd/vsftpd.conf

/etc/vsftpd/ftpusers

/etc/pam.d/vsftpd


在Linux中,有好几种实现ftp服务器的软件,我们这里使用redhat自带的vsftp,它具有安全,轻量级的特性。

我们安装vsftpd包后开启服务,ftp即可访问:

yum –y install vsftpd.i386

service vsftpd start

启动服务我们就可以直接访问ftp服务器了

ftp的根目录位于/var/ftp/我们可以在这里建立目录

使用本地用户登录时,登录到得目录是用户的家目录

比如lftp –u zoe 192.168.0.3

登录后显示的就是/home/zoe目录中的内容

 

在这里我们主要介绍三方面内容:

1     ftp的各种配置(通过配置文件)

2     基于ssl的安全ftp

3     关于ftp虚拟用户的建立

 

我们先认识一下vsftp的主配置文件/etc/vsftpd/vsftpd.conf

anonymous_enable=YES 是否允许用户匿名登录

local_enable=YES        是否允许本地用户登录

anon_upload_enable=YES允许用户上传文件

anon_mkdir_write_enable=YES允许上传目录

anon_other_write_enable=YES匿名用户删除文件的权限

dirmessage_enable=YES用户访问某个目录是是否显示欢迎信息

message_file=.message在用户家目录下建立一个.message文件,里面写上欢迎信息

xferlog_enable=YES 打开传输日志

xferlog_file=/var/log/vsftpd 开启传输日志,定义位置

chown_loads=YES文件上传后是否把属主改成别的用户

chown_username=whoever 把属主改成谁的

idle_session_timeout=600空闲会话超时时间

data_connection_timeout=120下载超时时间

ascii_upload_enable=YES是否打开基于ascii的传输,一般不建议打开

ftpd_banner=Welcome to blah FTP service 欢迎信息

chroot_local_user=YES将用户锁定到家目录下

如果不使用此项,用户登录后可以cdftp服务器所在主机的任一目录进行查看

chroot_list_enable=YES 将下行定义的列表中的用户锁定只能访问其家目录

chroot_list_file=/etc/vsftpd/chroot_list 定义列表文件位置

chroot_local_user=YES锁定所有

ls_recurse_enable=YES使用ls命令时是否使用递归显示

listen=YES     listen是否是独立守护

pam_service_name=vsftpd用户登录模式的验证方法定义文件

userlist_enable=YES 使用 user_list定义次文件中的用户可以登录

userlist_deny=N0 表示仅允许user_list文件中的用户登录

或者是 userlist_deny=YES 表示仅拒绝user_list文件中的用户登录

默认为拒绝

tcp_wrappers=YESftp是否接受tcp_wrapper的控制

 

定义在/etc/vsftpd/ftpusers中的用户都似乎不允许登录ftp

 

参照上列信息,我们可以更改配置文件以使ftp服务器达到我们的要求,这里就不再举例,就说一下几个ftp命令:

Lftp –u fedora 192.168.0.3  使用哪个用户身份登录

ftp>put issue                 上传issue文件

 

我们要匿名用户上传文件,则需要目录为ftp:ftp属主属组

为了安全,我们这样做

mkdir /var/ftp/upload

chown ftp:ftp /var/ftp/upload

上传文件时cd到该目录即可

lftp 192.168.48.3

>cd /upload

>lcd /etc

>put issue

>bye

 

我们需要关闭selinux,才能使用户上传文件等,那么,我们可以可以不关闭selinux实现用户上传等功能呢?当然是可以的,我们主需要更改selinux策略中的选项以支持用户上传。

getsebool -a 显示当前主机上所有策略支持的布尔类型的值

进行一些修改:

setsebool allow_ftpd_anon_write=1      仅对当前系统生效

或者是 setsebool -P allow_ftpd_anon_write=1    直接修改了策略库中的值,永久生效

cd /var/ftp/

ll -Z

chcon -t public_content_rw_t upload/   为该目录添加读写权限

这样selinux就支持了ftp的此项功能

 

-------------------------------------------SSL

 

我们登录ftp时的密码都是明文登录的,这样极不安全,所以我们可以使用基于sslftp登录传输方式。

首先我们要为ftp签署证书;再在配置文件中添加下列内容

# SSL

ssl_enable=YES     启用ssl

ssl_tlsv1=YES       启用tls v1版本

ssl_sslv2=YES       启用ssl v2版本

ssl_sslv3=YES

allow_anon_data_ssl=NO 匿名用户一般不需要

force_local_data_ssl=YES本地用户传输时是否使用ssl

force_local_logins_ssl=YES本地用户登录时是否使用ssl

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt   证书路径

rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key私钥路径

 

然后使用window端的ftp软件进行测试,例如Flashfxp

在登录过程中,我们可以捕获数据包进行分析,看使用ssl前后的登录过程中,密码有否被加密。

捕获数据的简单方法:tcpdump -i eth0 A dst host 192.168.0.3

在哪个主机上执行此命令都可以,要注意网卡是否选对。

tcpdump -D    显示网卡列表

tcpdump -i eth0      指定监听的网卡

A            以纯文本显示首部信息

dst host IP      目标地址IP

src host IP      源地址IP

 

-------------------------------------------------虚拟用户的建立实例:

1 建立虚拟FTP用户的账号数据库文件

2 创建FTP根目录及虚拟用户映射的系统用户

3 建立支持虚拟用户的PAM认证文件

4 vsftpd.cong文件中添加支持配置

5 在个别虚拟用户建立独立的配置文件以实现权限访问

6 重启vsftpd服务

1

vim /etc/vsftpd/vusers.list

+>gentoo

+>123

+>fedora

+>456

yum -y install  db4-utils 安装db工具软件包

db_load -T -t hash -f vusers.txt vuser.db 将此文件转换成二进制

chown 600 vusers.list

2

mkdir /var/ftproot

useradd -d /var/ftproot -s /sbin/nologin vuser不允许登录系统为了安全

chmod 755 /var/ftproot/

chown vuser:vuser /vat/ftproot

3

vim /etc/pam.d/vsftpd.vuser

+>auth required pam_userdb.so db=/etc/vsftpd/vusers

+>account required pam_userdb.so db=/etc/vsftpd/vumsers

定义认证时使用哪一个模块到×××用户的账号

4

vim /etc/vsftpd/vsftpd.conf

+>guest_enable=YES    是否启用是否启用来宾账号和虚拟用户

+>guest_username=vuser      虚拟用户的用户名是什么

+>pam_service_name=vsftpd.vuser 定义我们刚才建立的vsftpd.vuser文件

5

vim /etc/vsftpd/vsftpd.conf

+>user_config_dir=/etc/vsftpd/userconfig

mkdir /etc/vsftpd/userconfig

cd /etc/vsftpd/userconfig

vim fedora

+>anon_upload_enable=NO

+>anon_mkdir_write_enable=YES

禁止fedora用户传文件,允许建立目录

6

service vsftpd restart 重启完成

启用虚拟用户后本地用户将无法实现

以后我们会将两者兼用的方法