Chinaunix首页 | 论坛 | 博客
  • 博客访问: 623127
  • 博文数量: 142
  • 博客积分: 116
  • 博客等级: 入伍新兵
  • 技术积分: 1445
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-28 08:37
文章分类

全部博文(142)

文章存档

2017年(7)

2016年(57)

2015年(48)

2014年(30)

我的朋友

分类: 系统运维

2015-02-11 11:28:52

安装:

yum install vsftpd

启动停止:

/etc/init.d/vsftpd {start|stop|restart|try-restart|force-reload|status}

配置:

/etc/vsftp/vsftpd.conf
(详细配置参见 man vsftpd.conf)

默认配置下建议修改的一些配置:
anonymous_enable=NO           # 禁止匿名访问
reverse_lookup_enable=NO      # 禁止根据客户端IP反查DNS名。可以加快登录速度。
pasv_min_port=1025              # 设置被动模式的随机端口范围,便于防火墙配置。
pasv_max_port=1035


启用/var/log/vsftpd.log:
默认配置下,vsftpd.log未启用。
把下面任意一个改为NO即可。
xferlog_enable
xferlog_std_format


限制用户只能访问指定部分的文件系统:
以下两个配置一起使用,可以使用户登录后以/var/ftp/pub为/,而无法访问之外的文件系统。
chroot_local_user=YES            # 启用chroot,使用户的home目录成为/。手册上为何说开启会存在安全隐患?
local_root=/var/ftp/pub           # ftp登录后默认目录。

关于ftpusers,user_list:
这两个文件中列出的,是启用的还是禁用的?
可以这样理解,列出的是特殊的,也就是说,对于全部用户,
配置为启用时,这里列出的就是禁用,
配置为禁用时,这里列出的就是启用。

虚拟用户:
vsftp支持虚拟用户登录。虚拟用户不是OS的用户,而是vsftp自己管理的用户。
虚拟用户的配置比较麻烦,大致如下:
     需要一个操作系统用户来代理所有的虚拟用户。
     配置vsftpd.conf
          anonymous_enable=NO                   # 这个保持禁止匿名登录
          anon_world_readable_only=NO        # 虚拟用户的上传下载等权限都跟anon_xxx有关,要设置。
          anon_upload_enable=YES
          guest_enable=YES
          guest_username=xxx
          virtual_use_local_privs=YES             # 没有这个,能上传不能删除
     创建虚拟用户账号文件。此文件是一个db4的数据库文件。
          先创建一个文本文件,一行用户名,一行密码,然后用db_load转换成db文件。
          cat > vusers.lst
          vuser1
          password1
          vuser2
          password2
          ctrl-D
          db_load -T -t hash -f vusers.lst vusers.db

     配置pam(/etc/pam.d/vsftpd)
          注释掉其他行。下面'db='的地方不要写扩展名,否则会找不到文件。
          auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
          account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
          另外,如此改后,原本能够登录的本地OS用户却登录不了了。
          尝试保留其他行不注释,把上面两行的required改为sufficient,
          OS用户也可以登录了,但对PAM不太了解,不知是否有安全问题。

防火墙相关

ftp协议规定控制命令和数据是分开不同端口传输的,
默认情况下,控制命令端口为21。
数据传输又分主动模式(PORT)和被动模式(PASV)。
主动模
    服务器使用固定端口20与客户端传输数据,
    建立连接的方向是服务器->客户端。
    由于服务器这方是出站,所以服务器防火墙不必开放端口20。
    但要求客户端防火墙开放入站才行。(客户端是随机端口,如何指定?)
被动模式
    服务器开启随机端口,并通知客户端以此端口传输数据,
    建立连接的方向是客户端->服务器。
    所以服务器防火墙需要开放端口。虽然端口是随机的,
    但配置vsftp可以限定端口范围,例如1025-1029,防火墙开放此范围端口即可。

iptables -L -n --line-number
iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 1025:1035 -j ACCEPT

SELinux相关:

如果为了省事,可以设置如下设置,但也会是服务器失去保护。
setsebool -P allow_ftpd_full_access on

参考
SELinux 环境下网络服务设置: 第 2 部分
http://www.ibm.com/developerworks/cn/linux/1303_caojh_selinux2/index.html?ca=drs-

# ps -eZ |grep vsftpd
unconfined_u:system_r:ftpd_t:s0-s0:c0.c1023 3334 ? 00:00:00 vsftpd

public_content_t vsftpd:可以读取的文件和目录类型是 public_content_t。
public_content_rw_t:可以读取和写入的文件和目录类型是 public_content_rw_t。

vsftp 的布尔变量
  • allow_ftpd_anon_write :关闭这个布尔变量会阻止 vsftpd 读取 public_content_rw_t 类型的文件和目录。如果允许用户通过 FTP 上传文件。必须开放这个布尔变量。
  • allow_ftpd_full_access:当开放这个布尔变量时只有 Linux(DAC)的权限来控制访问,通过验证的用户可以读取和写入标记为 public_content_t 或 public_content_rw_t 类型的文件。
  • allow_ftpd_use_cif:当开放这个布尔变量时 vsftpd 允许 cifs_t 类型的文件和目录,因此这个布尔变量启用,可以让你的 FTP 服务器可以使用 Samba 文件系统。
  • allow_ftpd_use_nfs vsftpd:的当开放这个布尔变量时 vsftpd 允许 nfs_t 类型的文件和目录,因此这个布尔变量启用,可以让你的 FTP 服务器可以使用 NFS 文件系统。
  • ftp_home_dir:当开放这个布尔变量时认证用户可以读写自己的主目录中的文件。
  • ftpd_connect_db:当开放这个布尔变量时允许 vsftpd 连接数据库。
  • httpd_enable_ftp_server:当开放这个布尔变量时容许的 httpd 作为 FTP 服务器,并且监听 FTP 端口。
  • tftp_anon_write:当开放这个布尔变量时允许 TFTP 访问一个公共的目录。


阅读(1092) | 评论(0) | 转发(0) |
0

上一篇:linux安装php

下一篇:openssh学习笔记

给主人留下些什么吧!~~