实战vsftp-2.04配置
xiutuo
|
1#
xiutuo 发表于 2006-07-06 13:32
实战vsftp-2.04配置
Vsftp(Very Secure FTP)以它优越的安全,稳定,快速的性能在ftp软件中占了一席之地。
很多大站已经采用它如如ftp.redhat.com,ftp.kde.org,ftp.gnome.org.等。 Vsftp官方最新版本下载:ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.4.tar.gz 本文所有配置文件和相关文件的下载:http://xiutuo.vxv.cn/blog/file/vsftp_conf.rar 本文采用vsftp2.0.4,它有三种实现形式: 1、匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问 2、本地用户形式:以/etc/passwd中的用户名为认证方式 3、虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器的专有用户, 虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中 的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不让所有人匿名下载;既需要对下载用户进行管理,又考虑到主机安全和 管理方便的FTP站点来说, 虚拟用户是一种极好的解决方案。 一:下载安装 下载到/home/xiutuo/software/目录下,由于默认编译是支持pam认证,不支持tcpwrappers和ssl。 我们采用默认,即:本地用户不允许登入vsftp,不能使用hosts.allow和hosts.deny # rpm -e vsftpd-** //卸载原来低版本的vsftp # cd /home/xiutuo/software/ # tar -zvxf vsftpd-2.0.4.tar.gz # cd vsftpd-2.0.4 # make 把编译好的文件安装到相应目录下即可,没有相关目录请先创建。 # cp vsftpd /usr/local/sbin/vsftpd # cp vsftpd.conf.5 /usr/local/man/man5 # cp vsftpd.8 /usr/local/man/man8 # cp vsftpd.conf /etc/ 二:vsftp的启动和关闭--独立模式下 启动: # /usr/local/sbin/vsftpd & 关闭: # killall vsftpd 以下的配置均采用vsftp推荐的独立方式启动,即standalone方式启动vsftp 三:匿名用户vsftp配置 创建必要的帐号,目录: # useradd nobody //可能你的系统已经存在此帐号,那就不用建立 # mkdir /usr/share/empty //可能你的系统已经存在此目录,那就不用建立 # mkdir /var/ftp //可能你的系统已经存在此目录,那就不用建立 # useradd -d /var/ftp ftp //可能你的系统已经存在此帐号,那就不用建立 # chown root:root /var/ftp //改变属主 # chmod og-w /var/ftp //赋予相关目录权限 a.配置匿名用户只能下载,不能上传的vsftp,vsftpd.conf内容如下: # Standalone mode listen=YES listen_address=192.168.1.100 //可以通过域名来访问vsftp #tcp_wrappers=YES # Access rights anonymous_enable=YES anon_root=/var/ftp local_enable=NO write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO # Security anon_world_readable_only=NO //可以浏览和下载有相关权限的文件(其他用户有可读和可执行权限) connect_from_port_20=YES hide_ids=YES pasv_min_port=50000 pasv_max_port=60000 # Features dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES xferlog_enable=YES ls_recurse_enable=NO ascii_download_enable=NO async_abor_enable=YES ftpd_banner=Welcome to xiutuo.com FTP service. # Performance one_process_model=YES idle_session_timeout=120 data_connection_timeout=300 accept_timeout=60 connect_timeout=60 anon_max_rate=50000 max_clients=200 max_per_ip=4 #check_shell=NO b.配置匿名用户可下载,可上传。 先创建一个可写目录/var/ftp/pub # mkdir /var/ftp/pub # chmod -R 777 /var/ftp/pub 配置文件vsftp.conf的内容如下: # Standalone mode listen=YES listen_address=192.168.1.100 #tcp_wrappers=YES # Access rights anonymous_enable=YES anon_root=/var/ftp local_enable=NO write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES # Security anon_world_readable_only=NO connect_from_port_20=YES hide_ids=YES pasv_min_port=50000 pasv_max_port=60000 # Features dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES xferlog_enable=YES ls_recurse_enable=NO ascii_download_enable=NO async_abor_enable=YES ftpd_banner=Welcome to xiutuo.com FTP service. # Performance one_process_model=YES idle_session_timeout=120 data_connection_timeout=300 accept_timeout=60 connect_timeout=60 anon_max_rate=50000 max_clients=200 max_per_ip=4 #check_shell=NO 四:虚拟用户配置。 a.基于db的虚拟用户配置。 请查看linux中是否存在db4。 # rpm –qa | grep db4 db4-devel-4.2.52-7.1 db4-4.2.52-7.1 db4-utils-4.2.52-7.1 …… 如果有的话,那就不必安装db,没有的话,请安装db4的db4-devel-4.2.52-7.1,db4-4.2.52-7.1,db4-utils-4.2.52-7.1相关软件包。 1.建立虚拟用户数据库文件 在/etc/下建立login.txt,添加vsftp虚拟用户和密码。 # cd /etc # touch login.txt # vi login.txt #login.txt内容如下,其中虚拟用户是test,test1,test2;他们的密码分别是password0,password1,password2。用户和密码分别各占一行。 test password0 test1 password1 test2 password2 #生成虚拟用户数据库文件vsftpd_login.db,并赋予root可以读写,其他用户没有任何权限 # db_load -T -t hash -f /etc/login.txt /etc/vsftpd_login.db # chmod 600 /etc/vsftpd_login.db 2.建立认证文件 # vi /etc/pam.d/ftp 插入如下两行 auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd_login 3.创建真实用户与虚拟用户的映射。 # useradd -d /home/ftpsite -s /sbin/nologin virtual # cd /home/ftpsite # touch test.txt # chown virtual.virtual test.txt 4.配置文件vsftpd.conf内容如下: # Standalone mode listen=YES listen_address=192.168.1.100 //可以通过域名来访问vsftp #tcp_wrappers=YES # Access rights anonymous_enable=NO #anon_root=/var/ftp local_enable=YES //一定要yes,否则ftp登入会提示,本地用户和匿名用户都没有访问权限的提示 write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO guest_enable=YES // 启用虚拟用户 guest_username=virtual //指定虚拟用户, virtual_use_local_privs=YES //虚拟用户和本地用户权限相同 # Security anon_world_readable_only=NO //可以浏览和下载有相关权限的文件(其他用户有可读和可执行权限) connect_from_port_20=YES hide_ids=YES pasv_min_port=50000 pasv_max_port=60000 # Features dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES xferlog_enable=YES ls_recurse_enable=NO ascii_download_enable=NO async_abor_enable=YES ftpd_banner=Welcome to xiutuo.com FTP service. # Performance one_process_model=YES idle_session_timeout=120 data_connection_timeout=300 accept_timeout=60 connect_timeout=60 anon_max_rate=50000 max_clients=200 max_per_ip=4 check_shell=NO 5.高级配置vsftpd.conf,增加对每个虚拟用户的配置,并对每个虚拟用户详细权限进行配置。 创建/etc/vsftpd_user_conf目录,并在其下分别为虚拟用户test,test1,test2增加test,test1,test2三个配置文件。 # mkdir /etc/vsftpd_user_conf # cd /etc/vsftpd_user_conf # touch test test1 test2 #test,test1,test2配置文件根据需要设置相关vsftp的权限,比如test用户可以下载上传,修改,test文件内容如下: write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_world_readable_only=NO //可以浏览和下载有相关权限的文件(其他用户有可读和可执行权限) #主配置文件vsftpd.conf内容如下: # Standalone mode listen=YES listen_address=192.168.1.100 //可以通过域名来访问vsftp #tcp_wrappers=YES # Access rights anonymous_enable=NO #anon_root=/var/ftp local_enable=YES //一定要yes,否则ftp登入会提示,本地用户和匿名用户都没有访问权限的提示 write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO guest_enable=YES guest_username=virtual //这两行的意思是采用虚拟用户形式 virtual_use_local_privs=YES //虚拟用户和本地用户权限相同 # #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ user_config_dir=/etc/vsftpd_user_conf //增加对每个虚拟用户的配置 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # # Security anon_world_readable_only=YES //不可以浏览和下载有相关权限的文件(其他用户有可读和可执行权限) connect_from_port_20=YES hide_ids=YES pasv_min_port=50000 pasv_max_port=60000 # Features dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES xferlog_enable=YES ls_recurse_enable=NO ascii_download_enable=NO async_abor_enable=YES ftpd_banner=Welcome to xiutuo.com FTP service. # Performance one_process_model=YES idle_session_timeout=120 data_connection_timeout=300 accept_timeout=60 connect_timeout=60 anon_max_rate=50000 max_clients=200 max_per_ip=4 check_shell=NO b.基于mysql的pam认证的虚拟用户配置 1.下载pam-mysql到/home/xiutuo/software, 下载地址:http://nchc.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz 2.安装 # cd /home/xiutuo/software # tar -zvxf pam_mysql-0.5.tar.gz # cd pam_mysql-0.5 # make # cp pam_mysql.so /lib/security 3.创建真实用户与虚拟用户的映射 # useradd virtual # passwd virtual #必要时使用 : useradd -d /home/ftpsite -s /sbin/nologin virtual 4.创建数据库 # cd /usr/local/mysql/bin/ # ./mysql –u root -h localhost -p mysql>create database ftpd; mysql>use ftpd; mysql>create table user(name char(20) binary,passwd char(20) binary); mysql>insert into user (name,passwd) values ('test','password'); mysql>insert into user (name,passwd) values ('test1','password1'); mysql>insert into user (name,passwd) values ('test2','password2'); mysql>grant select on ftpd.user to virtual@localhost identified by '123456'; 5.建立认证文件 # cd /etc/pam.d/ # touch ftp //如果有就不用生成了。 # vi ftp //内容如下: auth required /lib/security/pam_mysql.so user=virtual passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0 account required /lib/security/pam_mysql.so user=virtual passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0 #注意: #crypt= n #crypt=0: 明文密码 #crypt=1: 使用crpyt()函数(对应SQL数据里的encrypt(),encrypt()随机产生salt) #crypt=2: 使用MYSQL中的password()函数加密 #crypt=3:表示使用md5的散列方式 6.详细的vsftpd.conf与具体的虚拟用户的配置跟基于db的虚拟用户配置步骤4和步骤5一样。 c.对用户做磁盘限额,限额功能是系统自带,不是vsftp功能! 对virtual用户主目录:/home/ftpsite/限制,修改/etc/fstab文件,重新挂载/home所在分区,或者重新启动计算机 1.编辑/etc/fstab文件,重新挂载/home所在分区,或者重新启动计算机,使限额功能生效 # vi /etc/fstab 把 LABEL=/home /home ext3 defaults 1 2 修改为: LABEL=/home /home ext3 defaults,usrquota 1 2 或者: LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 # reboot 或者 # mount -o remount /dev/sda2 // 其中/dev/sda2的挂接点就是/home,这样可以不用启动系统。 # quotacheck -avu //说明:a-自动开启挂载文件系统的配额,v-显示信息,u-启用用户配额or g-启用组配额 2.限额配置文件的修改 # edquota virtual //为用户virtual设置磁盘配额 或者: # edquota -g grp //为组grp设置磁盘配额 系统会自动打开配额文件,如下: Disk quotas for user virtual (uid 502): Filesystem blocks soft hard inodes soft hard /dev/sda2 424 0 0 13 0 0 #第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数,单位为KB。随后的两列用来设置用户在该文件系统上的软硬块限度。 inodes 列显示了用户当前使用的i节点数量。最后两列用来设置用户在该文件系统上的软硬i节点限度.硬限是用户或组群可以使用的磁盘空间的 绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段 时期内被超过。这段时期被称为过渡期(grace period),默认七天的超越。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果 以上值中的任何一个被设置为 0,那个限度就不会被设置。我设置了硬块限度为1KB,是为了测试方便。 # quotaon -avu //打开磁盘配额监控进程,u是用户g是组,这里我没设置g参数 要校验用户的配额是否被设置,我们可以使用以下命令: # quota virtual Disk quotas for user virtual (uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/sda2 424* 0 1 13 0 0 # edquota –t(-g)来设置过渡期(grace period) //当然只针对软限制而言和另一个 edquota 命令相似,这个命令也会在文本编辑器中 打开当前的文件系统配额: Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/sda2 7days 7days 按你的需要修改后存盘退出 用以下命令显示磁盘配额使用状态 # repquota -a 或 repquota /dev/sda2(用户配额) # repquota -g -a 或 repquota -a /dev/sda2 (组的配额) |